fix(vision): execute controlla task_type, versione, ricetta attiva, produzione (#38.7)

execute_task rifiuta 422 se il task non è camera_measure, 409 se la
versione non è corrente o la ricetta non è attiva; production_run_id,
quando presente, è validato con measurement_service.validate_run_for_version
(stessa regola di una lettura manuale). Router: lot_number/serial_number
max_length=100, production_run_id gt=0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 22:41:22 +02:00
parent c8caf40af9
commit 1c5292d1e0
3 changed files with 257 additions and 3 deletions
+3 -3
View File
@@ -95,9 +95,9 @@ async def _read_image(image: UploadFile) -> bytes:
async def execute(
task_id: int = Form(...),
image: UploadFile = File(...),
lot_number: str | None = Form(None),
serial_number: str | None = Form(None),
production_run_id: int | None = Form(None),
lot_number: str | None = Form(None, max_length=100),
serial_number: str | None = Form(None, max_length=100),
production_run_id: int | None = Form(None, gt=0),
db: AsyncSession = Depends(get_db),
current_user: User = Depends(require_measurement_tec),
) -> VisionExecuteResponse: