"""Report polling endpoint.""" from __future__ import annotations from uuid import UUID from fastapi import APIRouter, HTTPException from ..deps import AsyncSessionDep, CurrentUserDep, fetch_document_status_for_user router = APIRouter(tags=["reports"]) @router.get("/api/v1/reports/{document_id}") async def get_report( session: AsyncSessionDep, document_id: UUID, user: CurrentUserDep, ) -> dict[str, object]: row = await fetch_document_status_for_user(session, document_id, user.user_id) if row is None: raise HTTPException(status_code=404, detail="report not found") status = row["status"] if status != "done": return { "document_id": str(document_id), "status": status, "stage": row["stage"], } return { "document_id": str(document_id), "status": status, "filename": row["filename"], "markdown": row["markdown"], "findings": row["content_json"], "model_used": row["model_used"], "prompt_tokens": row["prompt_tokens"], "eval_tokens": row["eval_tokens"], "latency_ms": row["latency_ms"], }