haiku.rag/haiku_rag_slim/haiku/rag/ingester/api/routes/dashboard.py
2026-05-26 16:31:41 +03:00

17 lines
689 B
Python

from pathlib import Path
from fastapi import APIRouter
from fastapi.responses import FileResponse
router = APIRouter(tags=["dashboard"])
_INDEX_HTML_PATH = Path(__file__).resolve().parent.parent / "static" / "index.html"
@router.get("/", include_in_schema=False)
async def dashboard() -> FileResponse:
"""Serve the operator dashboard. Static page that polls /health, /sources,
/stats and /jobs from the browser. Auth happens via the bearer header the
JS attaches to its fetches — the dashboard route itself is unauthenticated
so an operator can open it in a browser and paste the token on demand."""
return FileResponse(_INDEX_HTML_PATH, media_type="text/html")