// 监控指标目录 & 统一告警 API // Logan.Li import { http } from '@/utils/request'; export interface MetricCatalogItem { key: string; label: string; unit: string; type: string; default_op: string; default_warn: number; default_crit: number; min: number; max: number; collect_source: string; description: string; operators: string[]; } export interface MetricCatalogCategory { id: 'host' | 'middleware' | 'snmp' | 'site'; label: string; description: string; metrics: MetricCatalogItem[]; } export interface UnifiedAlertRule { id: number; category: 'host' | 'middleware' | 'snmp' | 'site'; name: string; target?: string; target_id?: number; metric: string; operator: string; threshold: number; enabled: boolean; severity: string; description?: string; rule_type: 'agent' | 'monitor'; port?: number; } export const alertMetricsApi = { getCatalog: () => http.get<{ categories: MetricCatalogCategory[] }>('/alerts/metric-catalog'), getUnifiedAlerts: (params?: { page?: number; page_size?: number; status?: string; severity?: string; source_type?: string; }) => http.get<{ list: unknown[]; total: number; stats: Record }>('/alerts/unified', params), getUnifiedRules: (category?: string) => http.get<{ list: UnifiedAlertRule[]; total: number }>('/alerts/unified-rules', { category: category || 'all' }), createMonitorRule: (data: Record) => http.post('/alerts/monitor-rules', data), updateMonitorRule: (id: number, data: Record) => http.put(`/alerts/monitor-rules/${id}`, data), deleteMonitorRule: (id: number) => http.delete(`/alerts/monitor-rules/${id}`), monitorQuickSetup: (category?: string) => http.post('/alerts/monitor-quick-setup', { category: category || 'all' }), resolveUnified: (source: string, id: number) => http.post(`/alerts/unified/${source}/${id}/resolve`), };