feat(aurora): expose quality report API and proxy via sofiia console

This commit is contained in:
Apple
2026-03-01 03:59:54 -08:00
parent c230abe9cf
commit fe0f2e23c2
3 changed files with 312 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ from .analysis import (
from .job_store import JobStore
from .langchain_scaffold import build_subagent_registry
from .orchestrator import AuroraOrchestrator, JobCancelledError
from .quality_report import build_quality_report
from .reporting import generate_forensic_report_pdf
from .schemas import AuroraMode, MediaType
from .subagents import runtime_diagnostics
@@ -978,11 +979,37 @@ async def job_result(job_id: str) -> Dict[str, Any]:
)
payload = model_dump(job.result)
payload["storage"] = _job_storage_info(job)
try:
payload["quality_report"] = build_quality_report(job, store.outputs_dir)
except Exception as exc:
logger.warning("Quality report build failed for job %s: %s", job_id, exc)
payload["quality_report"] = None
if job.mode == "forensic":
payload["forensic_report_url"] = f"/api/aurora/report/{job_id}.pdf"
return payload
@app.get("/api/aurora/quality/{job_id}")
async def job_quality_report(
job_id: str,
refresh: bool = Query(default=False),
) -> Dict[str, Any]:
job = store.get_job(job_id)
if not job:
raise HTTPException(status_code=404, detail="job not found")
if job.status != "completed" or not job.result:
raise HTTPException(
status_code=409,
detail=f"job not completed (status={job.status})",
)
try:
return build_quality_report(job, store.outputs_dir, refresh=refresh)
except RuntimeError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
except Exception as exc:
raise HTTPException(status_code=500, detail=f"Cannot build quality report: {exc}") from exc
@app.get("/api/aurora/report/{job_id}.pdf")
async def job_forensic_pdf(job_id: str) -> FileResponse:
job = store.get_job(job_id)