import { parseAdminAuth } from "@/lib/api/admin-auth-context"; import { prisma } from "@/lib/prisma"; import { fail, ok } from "@/lib/response"; import { AuthError } from "@/modules/auth/errors"; import { getMetricsSnapshot } from "@/modules/metrics/collector"; import { getQueueDepth } from "@/workers/rpa/queue"; /** GET /api/metrics/dashboard — GD-4 汇总指标(task-102) */ export async function GET(request: Request) { try { parseAdminAuth(request); } catch (error) { if (error instanceof AuthError) { return fail(error.code, error.message, error.httpStatus); } throw error; } const [metrics, queueDepth, openAlertsCount] = await Promise.all([ getMetricsSnapshot(), getQueueDepth(), prisma.alertLog.count({ where: { status: "open" } }), ]); return ok({ api_success_rate: metrics.api_success_rate, rpa_success_rate: metrics.rpa_success_rate, realtime_rate: metrics.realtime_rate, cache_hit_rate: metrics.cache_hit_rate, p95_latency_ms: metrics.p95_latency_ms, queue_depth: queueDepth, open_alerts_count: openAlertsCount, counters: metrics.counters, latency_sample_count: metrics.latency_sample_count, }); }