/**
 * Admin system overview — incident/backlog KPIs composed from existing query helpers.
 */

import type { DrizzleClient } from '@/server/db/client.js';
import { countFiringMonitorChecks } from '@/server/db/queries/monitor-checks.js';
import { countUnresolvedFindings } from '@/server/db/queries/system-health.js';
import { listOutboxEvents } from '@/server/admin/resources/outbox/queries.js';
import { listLlmJobs } from '@/server/admin/resources/llm-jobs/queries.js';

export interface SystemOverviewStats {
  pendingOutboxEvents: number;
  unresolvedHealthFindings: number;
  failedLlmJobs: number;
  firingMonitorChecks: number;
}

export async function getSystemOverviewStats(db: DrizzleClient): Promise<SystemOverviewStats> {
  const [outboxPending, unresolvedHealthFindings, llmFailed, firingMonitorChecks] =
    await Promise.all([
      listOutboxEvents(db, { limit: 1, offset: 0, status: 'pending' }),
      countUnresolvedFindings(db),
      listLlmJobs(db, { limit: 1, offset: 0, status: 'FAILED' }),
      countFiringMonitorChecks(db),
    ]);

  return {
    pendingOutboxEvents: outboxPending.total,
    unresolvedHealthFindings,
    failedLlmJobs: llmFailed.total,
    firingMonitorChecks,
  };
}
