import { fetchJson } from './httpClient.ts' import type { CacheDetails, CacheStats, DataQuality, HaeguStat, MetricsSummary, ProcessingDelay, QueryMetricsPage, QueryMetricsParams, QueryMetricsSummary, QueryMetricsTimeSeries, ThroughputMetrics, } from './types.ts' export const monitorApi = { getDelay(): Promise { return fetchJson('/monitor/delay') }, getMetricsSummary(): Promise { return fetchJson('/admin/metrics/summary') }, getCacheStats(): Promise { return fetchJson('/api/monitoring/cache/stats') }, getCacheDetails(): Promise { return fetchJson('/api/monitoring/cache/details') }, getDailyCacheStatus(): Promise> { return fetchJson('/api/websocket/daily-cache') }, getThroughput(): Promise { return fetchJson('/monitor/throughput') }, getQuality(): Promise { return fetchJson('/monitor/quality') }, getHaeguRealtimeStats(): Promise { return fetchJson('/monitor/haegu/realtime') }, getHaeguStats(): Promise[]> { return fetchJson('/admin/haegu/stats') }, getQueryMetricsHistory(params: QueryMetricsParams): Promise { const qs = new URLSearchParams() if (params.queryType) qs.set('queryType', params.queryType) if (params.dataPath) qs.set('dataPath', params.dataPath) if (params.status) qs.set('status', params.status) if (params.elapsedMsMin != null) qs.set('elapsedMsMin', String(params.elapsedMsMin)) if (params.elapsedMsMax != null) qs.set('elapsedMsMax', String(params.elapsedMsMax)) qs.set('page', String(params.page ?? 0)) qs.set('size', String(params.size ?? 20)) qs.set('sortBy', params.sortBy ?? 'created_at') qs.set('sortDir', params.sortDir ?? 'desc') return fetchJson(`/api/monitoring/query-metrics/history?${qs}`) }, getQueryMetricsSummary(hours = 24): Promise { return fetchJson(`/api/monitoring/query-metrics/summary?hours=${hours}`) }, getQueryMetricsTimeSeries(days = 7): Promise { return fetchJson(`/api/monitoring/query-metrics/timeseries?days=${days}`) }, }