import { apiGet, apiPut, apiPost, apiDelete, type ApiRequestConfig } from "./axios"; import type { ApiEndpointPermissionsResponse, ApiEndpointPermissionsUpdate, ApiOperation, PermissionMetricsResponse, CacheStatsResponse, AlertsResponse, HealthResponse, AccessLogsResponse, SecurityAccessLogsResponse, TrendsResponse, TopDeniedResponse, StatsSummaryResponse, IpLocationsResponse, } from "../types/api"; // 接口级权限 export const fetchApiEndpointPermissions = (studyId: string, config?: ApiRequestConfig) => apiGet(`/api/v1/studies/${studyId}/api-permissions`, config); export const fetchMyApiEndpointPermissions = (studyId: string, config?: ApiRequestConfig) => apiGet(`/api/v1/studies/${studyId}/api-permissions/me`, config); export const updateApiEndpointPermissions = ( studyId: string, payload: ApiEndpointPermissionsUpdate, options?: { confirm_prerequisite_adjustments?: boolean }, ) => apiPut(`/api/v1/studies/${studyId}/api-permissions`, payload, { params: options?.confirm_prerequisite_adjustments ? { confirm_prerequisite_adjustments: true } : undefined, }); export const fetchApiOperations = () => apiGet<{ operations: ApiOperation[] }>(`/api/v1/api-permissions/operations`); // 系统监测API export const fetchPermissionMetrics = () => apiGet(`/api/v1/permission-monitoring/metrics`); export const fetchCacheStats = () => apiGet(`/api/v1/permission-monitoring/cache-stats`); export const fetchPermissionAlerts = (level?: string, limit?: number) => apiGet(`/api/v1/permission-monitoring/alerts`, { params: { level, limit }, }); export const fetchPermissionHealth = () => apiGet(`/api/v1/permission-monitoring/health`); export const resetPermissionMetrics = () => apiPost(`/api/v1/permission-monitoring/reset-metrics`); export const clearPermissionAlerts = () => apiPost(`/api/v1/permission-monitoring/clear-alerts`); // 系统监测 - 新增API export const fetchAccessLogs = (params: { study_id?: string; user_id?: string; endpoint_key?: string; role?: string; allowed?: boolean; start_time?: string; end_time?: string; page?: number; page_size?: number; }) => apiGet(`/api/v1/permission-monitoring/access-logs`, { params }); export const fetchSecurityAccessLogs = (params?: { status_min?: number; auth_status?: string; client_type?: string; client_version?: string; page?: number; page_size?: number; }) => apiGet(`/api/v1/permission-monitoring/security-logs`, { params }); export const fetchPermissionTrends = (period: "24h" | "7d" | "30d" = "24h") => apiGet(`/api/v1/permission-monitoring/trends`, { params: { period } }); export const fetchTopDenied = (params?: { days?: number; limit?: number }) => apiGet(`/api/v1/permission-monitoring/top-denied`, { params }); export const fetchIpLocations = (params?: { days?: number; limit?: number }) => apiGet(`/api/v1/permission-monitoring/ip-locations`, { params }); export const fetchStatsSummary = () => apiGet(`/api/v1/permission-monitoring/stats-summary`); // 权限模板API export interface PermissionTemplate { id: string; name: string; description: string | null; template_type: "ROLE" | "SCENARIO" | "CUSTOM"; is_system: boolean; created_by: string | null; created_at: string; updated_at: string; permissions: Record>; tags: string | null; category: string | null; recommended_roles: string | null; versions: Array<{ id: string; version: number; change_log: string | null; created_at: string }>; } export interface PermissionTemplateCreate { name: string; description?: string; template_type: "ROLE" | "SCENARIO" | "CUSTOM"; permissions: Record>; tags?: string; category?: string; recommended_roles?: string; } export interface ApplyTemplateRequest { template_id: string; roles?: string[]; override?: boolean; } export interface ApplyTemplateResponse { study_id: string; applied_roles: string[]; permissions: Record>; } export const fetchPermissionTemplates = (params?: { template_type?: string; category?: string }) => apiGet(`/api/v1/permission-templates`, { params }); export const fetchPermissionTemplate = (templateId: string) => apiGet(`/api/v1/permission-templates/${templateId}`); export const createPermissionTemplate = (payload: PermissionTemplateCreate) => apiPost(`/api/v1/permission-templates`, payload); export const updatePermissionTemplate = (templateId: string, payload: Partial) => apiPut(`/api/v1/permission-templates/${templateId}`, payload); export const deletePermissionTemplate = (templateId: string) => apiDelete(`/api/v1/permission-templates/${templateId}`); export const applyPermissionTemplate = (studyId: string, payload: ApplyTemplateRequest) => apiPost( `/api/v1/studies/${studyId}/permission-templates/${payload.template_id}/apply`, payload, ); // 系统级权限 export interface SystemPermissionItem { permission_key: string; module: string; module_label: string; action: string; description: string; roles: string[]; } export interface SystemPermissionsResponse { permissions: SystemPermissionItem[]; module_labels: Record; } export const fetchSystemPermissions = () => apiGet(`/api/v1/system-permissions`); // 项目角色生效管理 export const fetchActiveRoles = (studyId: string) => apiGet<{ active_roles: string[] }>(`/api/v1/studies/${studyId}/active-roles`); export const updateActiveRoles = (studyId: string, activeRoles: string[]) => apiPut<{ active_roles: string[] }>(`/api/v1/studies/${studyId}/active-roles`, { active_roles: activeRoles });