// 审计日志 & 审批流程 // 从 services/api.ts 拆分 — Q3 api.ts 模块化 import { http, type ListResponse } from '../http'; export const auditApi = { getLogs: async (params?: { page?: number; page_size?: number; module?: string; action?: string; username?: string; start_time?: string; end_time?: string }) => { return http.get('/audit/logs', params as Record); }, getLogDetail: async (id: number | string) => { return http.get(`/audit/logs/${id}`); }, getModules: async () => { return http.get('/audit/modules'); }, getActions: async () => { return http.get('/audit/actions'); }, getStatistics: async () => { return http.get('/audit/statistics'); }, exportLogs: async (params?: Record) => { // Build URL with query params for server-side CSV export const qs = new URLSearchParams(); qs.set('format', 'csv'); if (params) { Object.entries(params).forEach(([k, v]) => { if (v !== undefined && v !== null && v !== '') qs.set(k, String(v)); }); } return http.download(`/audit/logs/export?${qs.toString()}`); }, clearLogs: async () => { return http.post('/audit/logs/clear'); }, }; // ==================== 终端会话审计 API(WebSSH 录制) ==================== // Logan.Li export const terminalSessionApi = { list: async (params?: { page?: number; page_size?: number; server_id?: number; username?: string; status?: string }) => { return http.get('/terminal-sessions', params as Record); }, get: async (id: number) => { return http.get(`/terminal-sessions/${id}`); }, getRecord: async (id: number) => { return http.get(`/terminal-sessions/${id}/record`); }, kill: async (id: number) => { return http.post(`/terminal-sessions/${id}/kill`); }, download: async (id: number) => { return http.download(`/terminal-sessions/${id}/download`, `session-${id}.cast`); }, delete: async (id: number) => { return http.delete(`/terminal-sessions/${id}`); }, batchDelete: async (ids: number[]) => { return http.post('/terminal-sessions/batch-delete', { ids }); }, }; // ==================== 会话命令审计 API ==================== export const sessionCommandApi = { list: async (params?: { page?: number; page_size?: number; session_id?: number; username?: string }) => { return http.get('/session-commands', params as Record); }, }; // ==================== 登录日志 API ==================== export const loginLogApi = { list: async (params?: { page?: number; page_size?: number; username?: string; status?: string }) => { return http.get('/login-logs', params as Record); }, }; // ==================== 审批流程 API ==================== export const approvalApi = { getTemplates: async (params?: { type?: string; category?: string }) => { return http.get('/approvals/templates', params); }, getTemplate: async (id: number | string) => { return http.get(`/approvals/templates/${id}`); }, createTemplate: async ( data: any) => { return http.post('/approvals/templates', data); }, updateTemplate: async (id: number | string, data: any) => { return http.put(`/approvals/templates/${id}`, data); }, deleteTemplate: async (id: number | string) => { return http.delete(`/approvals/templates/${id}`); }, getProcesses: async (params?: { page?: number; page_size?: number; status?: string; category?: string }) => { return http.get('/approvals/processes', params); }, createProcess: async ( data: any) => { return http.post('/approvals/processes', data); }, approveProcess: async (id: number | string, comment?: string) => { return http.post(`/approvals/processes/${id}/approve`, { comment }); }, rejectProcess: async (id: number | string, comment?: string) => { return http.post(`/approvals/processes/${id}/reject`, { comment }); }, }; // ==================== 云管理 API ====================