Visione: output NaN/None di uno strumento → TypeError non gestita (500) #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GRAVITÀ: alta
FILE: src/backend/services/vision_service.py:149,177 ; src/vision/runner.py:121-122
COSA: il runner accetta NaN, inf, bool. Il worker serializza NaN come null. Il controllo «every quote or none» guarda solo la presenza della chiave, poi
float(None)→ TypeError.INPUT: strumento che restituisce NaN per una quota mappata (il vendor emette già «Mean of empty slice» in caliper.py:112).
VERIFICATO: probe pytest con worker finto
{"t1.diameter": None}→ "TypeError float() argument must be ... not 'NoneType'".PRESUNTO: che vs-measure emetta davvero NaN su immagine reale.
ORIGINE: revisione fable del 21/09/2026 su ramo
V3.0.0, commit8cc5e82. Documento completo:_output/2026-09-21-TieMeasureFlow-revisione.mdsu Wasabi.⚡ jeeg — preso in carico 2026-09-21T20:22:37Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto C1MODIFICHE: src/vision/runner.py:121-122 — output numerico: escludi
bool, e NaN/±inf diventano assenti con un motivo inoutcome(es. elencoinvalid_outputs). src/vision_worker/main.py non deve serializzare NaN. src/backend/services/vision_service.py:149,177 — una quota mappata con valore None/assente/non finito conta come «non prodotta» → il 422 esistente «the graph did not produce …» con il nome dell'output.TEST: runner con strumento finto che dà NaN → output assente; backend con worker finto
{"t1.diameter": None}→ 422.Soluzione
ESITO: fatto
COSA: Il runner scarta bool, NaN e ±inf (
invalid_outputs); il backend considera prodotta una quota solo se il valore è un numero finito (_is_measurable). Prova originale rilanciata:{"t1.diameter": None}→ 422 «the graph did not produce t1.diameter».COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1):20957e5PROVA:
uv run --extra server --extra client --extra dev pytest -q→ 622 passed, 4 skipped (erano 391); visione su Python 3.13 → 16 passed (erano 8).