import json import logging from fastapi import APIRouter, Depends, HTTPException, Response from common.db import fetchone from common.deps import verify_api_key from integrations.llm.schemas.report import ReportOutput router = APIRouter(prefix="/api/reports", tags=["reports"], dependencies=[Depends(verify_api_key)]) logger = logging.getLogger(__name__) @router.get("/{run_id}", response_model=ReportOutput | None) async def get_report(run_id: str): logger.info("GET /api/reports/%s", run_id) row = await fetchone( "SELECT report_data FROM analysis_runs WHERE analysis_run_id = %s", (run_id,), ) if row is None: raise HTTPException(status_code=404, detail="Run not found") if row["report_data"] is None: return Response(status_code=204) data = json.loads(row["report_data"]) if isinstance(row["report_data"], str) else row["report_data"] return ReportOutput(**data)