Misure: value accetta NaN, Infinity e fuori scala → esito «pass» poi 500 #20
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À: media
FILE: src/backend/models/api/measurement.py:12 ; src/backend/services/measurement_service.py:17-45
COSA:
value: floatsenza vincoli. Con NaN ogni confronto è falso → "pass", poi l'INSERT fallisce. Nessun limite coerente con DECIMAL(12,6).INPUT: body
{"subtask_id":1,"version_id":1,"value":NaN}.VERIFICATO: script pytest → parametri INSERT
(1, 1, 2, nan, 'pass', nan, ...), IntegrityError.PRESUNTO: esito calcolato sul float grezzo ma valore salvato a 6 decimali (10.5000004 con utl 10.5 → fail registrato come 10.500000).
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:54Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto A1MODIFICHE: src/backend/models/api/measurement.py —
value: rifiuta NaN e ±inf (allow_inf_nan=False) e limita a |value| < 1e6 (DECIMAL(12,6)). src/backend/services/measurement_service.py — calcolapass_failedeviationsul valore arrotondato a 6 decimali, lo stesso che viene salvato.TEST: NaN, Infinity, 1e300, 1e6 → 422; 10.5000004 con utl 10.5 → esito calcolato su 10.5 (non fail).
Soluzione
ESITO: fatto
COSA: Valore non finito o |value| ≥ 1e6 → 422 (controllo in measurement_service: come Field pydantic FastAPI rispondeva 500 riecheggiando il NaN). Esito e deviazione calcolati sul valore arrotondato a 6 decimali, lo stesso che si salva.
COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1):7b01507PROVA:
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).