fix(vision): il grafo di visione sopravvive a copy-on-write e creazione

_copy_tasks_to_version copiava una lista esplicita di campi che ometteva
vision_json e vision_output: la prima modifica a una ricetta con misure
produceva una versione nuova con i task camera senza grafo. Stessa
famiglia di bug nei percorsi di creazione (POST /api/recipes/{id}/tasks,
POST /api/tasks/{id}/subtasks): i campi erano dichiarati negli schemi ma
mai passati ai costruttori ORM, quindi l'API rispondeva 200 senza
salvare nulla. TDD: test_vision_copy_on_write.py fallisce prima del fix,
passa dopo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014BBnuACZSCJqXrMYC3LUMU
This commit is contained in:
2026-08-16 19:36:18 +02:00
parent 3870cc3b0f
commit 533edc5be8
3 changed files with 176 additions and 0 deletions
+3
View File
@@ -179,6 +179,7 @@ async def create_task(
file_path=data.file_path,
file_type=data.file_type,
annotations_json=data.annotations_json,
vision_json=data.vision_json,
)
db.add(new_task)
await db.flush()
@@ -197,6 +198,7 @@ async def create_task(
ltl=sub_data.ltl,
unit=sub_data.unit,
image_path=sub_data.image_path,
vision_output=sub_data.vision_output,
)
db.add(sub)
@@ -340,6 +342,7 @@ async def create_subtask(
ltl=data.ltl,
unit=data.unit,
image_path=data.image_path,
vision_output=data.vision_output,
)
db.add(subtask)
await db.flush()