import uuid from fastapi import APIRouter, HTTPException from app.db import SessionDep from app.models import Job, JobStatus from app.schemas import ScoreOut from app.services.scoring import score_job router = APIRouter() @router.post("/score/{job_id}", response_model=ScoreOut) async def score(job_id: uuid.UUID, session: SessionDep) -> ScoreOut: """Score every variant of a finished job with the model behind the registry alias.""" job = await session.get(Job, job_id) if job is None: raise HTTPException(404, "job not found") if job.status != JobStatus.succeeded: raise HTTPException(409, f"job is {job.status.value}; only succeeded jobs can be scored") n, version = await score_job(job_id, session) return ScoreOut(job_id=job_id, scored=n, model_version=version)