Misure: value accetta NaN, Infinity e fuori scala → esito «pass» poi 500 #20

Closed
opened 2026-09-21 20:14:46 +00:00 by Adriano · 3 comments
Owner

GRAVITÀ: media
FILE: src/backend/models/api/measurement.py:12 ; src/backend/services/measurement_service.py:17-45
COSA: value: float senza 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, commit 8cc5e82. Documento completo: _output/2026-09-21-TieMeasureFlow-revisione.md su Wasabi.

GRAVITÀ: media FILE: src/backend/models/api/measurement.py:12 ; src/backend/services/measurement_service.py:17-45 COSA: `value: float` senza 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`, commit 8cc5e82. Documento completo: `_output/2026-09-21-TieMeasureFlow-revisione.md` su Wasabi.
Adriano added the bug label 2026-09-21 20:14:46 +00:00
Adriano added the assegnata:jeeg label 2026-09-21 20:22:54 +00:00
Author
Owner

⚡ jeeg — preso in carico 2026-09-21T20:22:54Z
ramo: lavoro/jeeg · capacità: docker, gpu, systemd

⚡ jeeg — **preso in carico** 2026-09-21T20:22:54Z ramo: `lavoro/jeeg` · capacità: docker, gpu, systemd
Author
Owner

ANALISI (passo 1) — ramo lavoro/jeeg, worktree ~/lavoro/TieMeasureFlow su jeeg, lotto A1

MODIFICHE: 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 — calcola pass_fail e deviation sul 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).

ANALISI (passo 1) — ramo `lavoro/jeeg`, worktree `~/lavoro/TieMeasureFlow` su jeeg, lotto A1 MODIFICHE: 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 — calcola `pass_fail` e `deviation` sul 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).
Author
Owner

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): 7b01507
PROVA: 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).

**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): 7b01507 PROVA: `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).
Adriano removed the assegnata:jeeg label 2026-09-21 21:56:24 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/TieMeasureFlow#20