feat(aurora): expose quality report API and proxy via sofiia console
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user