ee0f65ed39
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
"""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
|