Files
TieMeasureFlow/src/backend/models/api/vision.py
T

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