"""Pydantic schemas for the vision execution response.""" from src.backend.models.api.tipi import UtcDateTime from pydantic import BaseModel, ConfigDict class VisionMeasurementResult(BaseModel): """One quote's outcome, as much of it as the client needs to show.""" subtask_id: int value: float pass_fail: str class VisionExecuteResponse(BaseModel): """What `POST /api/vision/execute` returns: the run, and every quote it filled.""" vision_result_id: int engine_version: str measurements: list[VisionMeasurementResult] # Esito VisionSuite (informativo: il verdetto lo danno utl/ltl), overlay # in px immagine, URL dell'immagine salvata e strumenti falliti (#46). outcome: str | None = None overlay: list[dict] = [] image_url: str | None = None failures: list[dict] = [] class VisionRecipeOutput(BaseModel): """One numeric output a recipe offers to the quotes.""" key: str quantity: str | None = None unit: str | None = None class VisionRecipeUploadResponse(BaseModel): task_id: int recipe_dir: str files: list[str] outputs: list[VisionRecipeOutput] class VisionRecipeResponse(BaseModel): task_id: int recipe_dir: str | None = None recipe: dict | None = None files: list[str] outputs: list[VisionRecipeOutput] class VisionReferenceImageResponse(BaseModel): """One saved reference image, as `GET /api/vision/reference-images` lists it.""" model_config = ConfigDict(from_attributes=True) id: int task_id: int path: str note: str | None = None station_id: int | None = None device_code: str | None = None acquired_at: UtcDateTime