handleMeasurement è rientrante: doppia lettura = doppio record e quota saltata #13

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

GRAVITÀ: alta
FILE: src/frontend/flask_app/templates/measure/task_execute.html:1192, 1245-1248, 1279, 1289-1297
COSA: saving torna false PRIMA dell'attesa di 1 s del feedback; currentIndex avanza dopo. Una seconda lettura in quella finestra è salvata sulla stessa quota; i due advanceToNext() saltano una quota. Nessun controllo su showCompletionOverlay, showSupervisorModal, isPaused.
INPUT: doppia pressione del tasto DATA, o due letture entro ~1 s.
VERIFICATO: lettura del codice alle righe citate. Non eseguito in browser.

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À: alta FILE: src/frontend/flask_app/templates/measure/task_execute.html:1192, 1245-1248, 1279, 1289-1297 COSA: `saving` torna false PRIMA dell'attesa di 1 s del feedback; `currentIndex` avanza dopo. Una seconda lettura in quella finestra è salvata sulla stessa quota; i due `advanceToNext()` saltano una quota. Nessun controllo su `showCompletionOverlay`, `showSupervisorModal`, `isPaused`. INPUT: doppia pressione del tasto DATA, o due letture entro ~1 s. VERIFICATO: lettura del codice alle righe citate. Non eseguito in browser. 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:41 +00:00
Adriano added the assegnata:jeeg label 2026-09-21 20:22:27 +00:00
Author
Owner

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

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

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

MODIFICHE: src/frontend/flask_app/templates/measure/task_execute.html handleMeasurement — guardia di rientranza unica this.busy: true all'ingresso, false solo DOPO l'avanzamento (advanceToNext) o dopo l'errore; saving resta per la UI. All'ingresso esci anche se showCompletionOverlay, showSupervisorModal, isPaused o cycleConfirmed in attesa. Una lettura scartata perché busy non deve sparire in silenzio: emetti il feedback d'errore sonoro/visivo già esistente («lettura ignorata, attendere»).
TEST: non c'è infrastruttura browser: estrai la logica minima verificabile? NO — non rifattorizzare. Verifica a lettura e scrivi nel rapporto i passi manuali di prova.

ANALISI (passo 1) — ramo `lavoro/jeeg`, worktree `~/lavoro/TieMeasureFlow` su jeeg, lotto B1 MODIFICHE: src/frontend/flask_app/templates/measure/task_execute.html `handleMeasurement` — guardia di rientranza unica `this.busy`: true all'ingresso, false solo DOPO l'avanzamento (`advanceToNext`) o dopo l'errore; `saving` resta per la UI. All'ingresso esci anche se `showCompletionOverlay`, `showSupervisorModal`, `isPaused` o `cycleConfirmed` in attesa. Una lettura scartata perché busy non deve sparire in silenzio: emetti il feedback d'errore sonoro/visivo già esistente («lettura ignorata, attendere»). TEST: non c'è infrastruttura browser: estrai la logica minima verificabile? NO — non rifattorizzare. Verifica a lettura e scrivi nel rapporto i passi manuali di prova.
Author
Owner

Soluzione

ESITO: fatto
COSA: Guardia unica busy in handleMeasurement, tenuta fino all'avanzamento; le letture con overlay, modale capoturno, pausa o ciclo confermato sono rifiutate con messaggio «Lettura ignorata: attendere». Verificato a lettura che la rimisura dal modale resta possibile. PROVA MANUALE sul tablet: due letture entro 1 s → un solo record, nessuna quota saltata.
COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a d483fa1): 31fa78b
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: Guardia unica `busy` in handleMeasurement, tenuta fino all'avanzamento; le letture con overlay, modale capoturno, pausa o ciclo confermato sono rifiutate con messaggio «Lettura ignorata: attendere». Verificato a lettura che la rimisura dal modale resta possibile. PROVA MANUALE sul tablet: due letture entro 1 s → un solo record, nessuna quota saltata. COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a d483fa1): 31fa78b 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:16 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Adriano/TieMeasureFlow#13