Frontend: difetti minori dalla revisione del 21/09 #37
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À: bassa
status_code: 0usato come status HTTP. VERIFICATO: test client →0 UNKNOWN.keypressnon parte): chi usa solo il calibro viene disconnesso a metà task. PRESUNTO.codeconcatenato nel path senzaquote(): barcodeAB/123→ 404;{"code": 5}→ 500;../raggiunge altri GET del backend coi permessi dell'utente.'{{ _(...) }}'è diffuso.func.now()di MySQL (PRESUNTO il fuso).timerRemaining--mai risincronizzato col server (il banner lo fa ogni 60 s): con tablet in standby resta indietro. PRESUNTO.measurementssolo in memoria: un reload a metà ciclo mostra tutte le quote da misurare;/api/measurements/task-progressesiste e non è usato qui. PRESUNTO.pfdel client, non suresult.pass_faildel server.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:23:32Z
ramo:
lavoro/jeeg· capacità: docker, gpu, systemdANALISI (passo 1) — ramo
lavoro/jeeg, worktree~/lavoro/TieMeasureFlowsu jeeg, lotto B1+B2MODIFICHE B2 (python/altri template):
status_code0 → 502. Fallo in un punto solo: in src/frontend/flask_app/services/api_client.py restituisci 502 invece di 0 quando il backend è irraggiungibile (verifica che nessuno confronti== 0).saveRecipe+ src/backend/services/recipe_service.py:42 — QUESTA parte tocca il backend: invianullesplicito quando il campo è svuotato; nel backend distingui «non inviato» da «null» conmodel_fields_set/exclude_unsetpermeasurement_interval_minuteseimage_path(unica eccezione ammessa al confine dei lotti: recipe_service.py righe ~35-50, funzione di update dei metadati; non toccare altro in quel file).urllib.parse.quote(code, safe=""),codenon stringa → 400.'{{ _(...) }}'dentro attributi Alpine: usa{{ _('...')|tojson_attr }}(filtro in app.py:122) o sposta la stringa inx-data.MODIFICHE B1 (task_execute.html, base.html):
keydownagli eventi di attività.deadline = Date.now()+remaining*1000, a ogni tickremaining = ceil((deadline-Date.now())/1000)), e risincronizzazione col server suvisibilitychange./api/measurements/task-progress(via la route Flask esistente usata da task_list; se manca un proxy adatto, aggiungilo tu in measure.py? NO: measure.py è del lotto B2 — se serve, scrivi MANCA) le quote già misurate nel ciclo corrente.result.pass_faildel server.TEST: B2: backend giù → 502; barcode
AB/123quotato;{"code":5}→ 400; render EN di admin/stations senza errori di apici (parser HTML + controllo che l'attributo sia JS valido a occhio: almeno che non contenga's).Soluzione
ESITO: fatto
COSA: Fatti: 1 (backend giù → 502), 2 (keydown nell'auto-logout), 3 (intervallo e immagine azzerabili,
model_fields_set), 4 (barcode quotato, code non stringa → 400), 5 (stringhe tradotte negli attributi Alpine viatojson_attr), 6 (tendina ricette paginata), 7 (countdown su scadenza assoluta, risincronizzato su visibilitychange), 9 (blocco capoturno sulpass_faildel server). Punto 8 (ripristino del ciclo dopo reload): solo la route proxy; il resto in issue nuova.COMMIT (ramo lavoro/jeeg, unito su V3.0.0 a
d483fa1): cc68612; 2b59c3e; 72f0cb1; f739f96;31fa78bPROVA:
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).