1from __future__ import annotations23from fastapi import APIRouter, Depends4from findata_core.db import connection56from findata_api import auth as A7from findata_api.health import cached_evaluate as evaluate89router = APIRouter(tags=["health"])101112@router.get("/health")13def health(p: A.Principal = Depends(A.get_principal)):14 """Public liveness (no details) — authenticated callers get the full report."""15 h = evaluate()16 if p.kind == "anonymous":17 return {"status": h["status"], "service": "findata-os"}18 return h192021@router.get("/health/summary")22def summary(p: A.Principal = Depends(A.require("read:market"))):23 with connection() as conn:24 ds = conn.execute("SELECT count(*) FILTER (WHERE status='active') active, count(*) FILTER (WHERE status='planned') planned, "25 "count(*) FILTER (WHERE status='unsupported') unsupported, count(*) FILTER (WHERE status='pending_configuration') pending FROM datasets").fetchone()26 inst = conn.execute("SELECT count(*) n, count(*) FILTER (WHERE status='active') active FROM instruments").fetchone()27 cov = conn.execute("SELECT count(DISTINCT symbol) symbols, count(DISTINCT session_date) sessions, sum(bar_count) bars, max(session_date) last FROM coverage WHERE dataset_id='market_bars.stock.1m.raw'").fetchone()28 jobs = conn.execute("SELECT status, count(*) n FROM ingest_jobs GROUP BY status").fetchall()29 recent = conn.execute("SELECT id, kind, dataset_id, status, started_at, finished_at, left(last_error,120) last_error, result FROM ingest_jobs ORDER BY created_at DESC LIMIT 8").fetchall()30 fund = conn.execute("SELECT count(DISTINCT entity_id) entities, count(*) facts FROM fundamentals_facts WHERE superseded_at IS NULL").fetchone()31 an = conn.execute("SELECT severity, count(*) n FROM quality_anomalies WHERE created_at > now() - interval '7 days' GROUP BY 1").fetchall()32 return {"datasets": ds, "instruments": inst, "bars_1m": cov, "jobs": {r["status"]: r["n"] for r in jobs}, "recent_jobs": recent,33 "fundamentals": fund, "anomalies_7d": {r["severity"]: r["n"] for r in an}, "health": evaluate()}34