Sessioni di produzione: dati e statistica per sessione #58
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?
RICHIESTA: l'avvio della ricetta (con il timer verso GAIA e l'inizio produzione) apre una sessione che si chiude a Fine Produzione. In statistica e analisi si isola la sessione: misure, testi dei campi, note, allegati dei task Note.
VERIFICATO 28/09: ProductionRun esiste già; manca la vista statistica per sessione e il collegamento dei dati non di misura.
FONTE: UPDATE TIEMEASUREFLOW_180926.docx (Tràfilo via Menoncin, test del 18/09/2026), daitarn:D:\Sorgenti\Clienti\Ricerca_e_Misura\0_REM-Tielogic_SHARED\1_TRAFILO\0_Specifiche\ (16 screenshot nel docx). Raccolta: TieMeasureFlow#44.
ESITO: analisi
COSA: statistica per sessione di produzione.
STATO: Measurement.production_run_id esiste (BE/models/orm/measurement.py:62) ma i filtri non lo usano.
FILE: BE/api/routers/statistics.py:31 _query_measurements + endpoint :100,:122,:145,:172 parametro
production_run_id· nuovo GET /api/statistics/runs?recipe_id= (elenco sessioni) · BE/services/report_service.py:41 e routers/reports.py:17,51 · FE/blueprints/statistics.py:52,139 · FE/templates/statistics/dashboard.html:27-60 select sessione. Note e allegati dei task (task_results) entrano dopo l'ondata 2.MIGRAZIONE: no. PIANO: unità F.
VERIFICATO su V3.0.0
a829bf3(mappa del 07/10). Percorsi da src/; BE=backend/, FE=frontend/flask_app/.🔵 daitarn — preso in carico 2026-10-07T10:21:19Z
ramo:
lavoro/daitarn· capacità: build-windows, gpuESITO: bloccato
COSA: statistica per sessione di produzione fatta per le misure; note, campi e allegati dei task non ancora.
FILE: src/backend/api/routers/statistics.py — parametro production_run_id sui filtri delle misure, GET /api/statistics/runs?recipe_id= (elenco sessioni), conteggio misure solo sui run della ricetta
FILE: src/backend/services/report_service.py, api/routers/reports.py — report filtrabili per sessione
FILE: src/frontend/flask_app/blueprints/statistics.py, templates/statistics/dashboard.html — select Sessione
COMMIT:
4e52095e44ac31PROVA: suite goldrake su
b7cb061→ 835 passed 2 skipped (pytest 3.11 backend+frontend), 29 passed (pytest 3.13 vision), docker build vision ok; test src/backend/tests/test_statistics.py, src/frontend/flask_app/tests/test_statistics.pyVERIFICATO: grep -i task_result su src/backend/api/routers/statistics.py, services/report_service.py, api/routers/reports.py, frontend templates/statistics/dashboard.html (V3.0.0
b7cb061) → nessuna occorrenzaMANCA: note, testi dei campi e allegati dei task (task_results, tabella della migrazione 018, #54 #55) nella vista per sessione; anche gli esiti OK/NOK dei task check (#54)
In V3.0.0 da
b7cb061. Issue resta aperta.🤖 goldrake — liberata nessun segno di daitarn da 6.1 h — 2026-10-07T16:29:45Z
🔵 daitarn — preso in carico 2026-10-11T18:05:34Z
ramo:
lavoro/daitarn· capacità: build-windows, gpuESITO: richiesta
RIF: gitea:Adriano/TieMeasureFlow#58
COSA: analisi (passo 1 di 3) della parte che manca. Nella vista statistica per sessione vanno gli esiti dei task check (OK/NOK), le note, i testi dei campi e gli allegati dei task note (task_results). Ramo lavoro/daitarn-58, partito da origin/V3.0.0
ac8604e.VERIFICATO: src/backend/models/orm/task_result.py — TaskResult(task_id, version_id, production_run_id, user_id, outcome ok|nok|done, note, values {chiave: testo}, attachments [{key, path, name}], created_at).
VERIFICATO: src/backend/api/routers/task_results.py:176 GET /api/task-results?production_run_id= esiste, ma vuole require_measurement_tec. La statistica usa require_metrologist (src/backend/api/routers/statistics.py:10), quindi non si riusa: si scrive un endpoint di statistica.
VERIFICATO: src/backend/api/routers/files.py:294 GET /api/files/{path} vuole solo l'autenticazione (i prefissi ristretti sono statistics/ e reports/). Il frontend fa il proxy dei file con proxy_file (blueprints/measure.py:951, maker.py:486).
VERIFICATO: le etichette dei campi stanno in RecipeTask.fields (src/backend/models/orm/task.py:78), normalizzate da normalize_note_fields (src/backend/models/api/task.py:44).
MODIFICHE:
{"run_id", "counts": {"ok", "nok", "done"}, "results": [...]}, risultati in ordine created_at crescente. Ogni risultato contiene id, task_id, task_title, task_type, outcome, note, created_at (isoformat), user_name (User.display_name) e:values:[{key, label, value}]; l'etichetta viene da task.fields, se manca si usa la chiave;attachments:[{key, label, name, path}].Una query per i TaskResult della run più una per task e utenti (in_), niente N+1. Commenti
#58.task_results/(altrimenti 404) e usa proxy_file come measure.py:951.Il pannello si ricarica a ogni cambio di sessione, con lo stesso meccanismo JS dei grafici esistenti. Le stringhe nuove vanno in
_()e in translations it/en (.po); i .mo non si committano.NON TOCCARE: src/backend/api/routers/task_results.py, le migrazioni (non serve una tabella nuova), i report PDF/Excel (report_service), src/vision*, vendor/visionsuite.
TEST:
statistics/xe../; la pagina dashboard contiene il pannello.uv run --extra server --extra client --extra dev pytest src/backend/tests src/frontend/flask_app/tests -q -p no:cacheprovider, tutta verde.CRITERIO DI FATTO: scelta una sessione, la statistica mostra misure, esiti OK/NOK, note, testi dei campi e allegati di quella sessione.
Soluzione
ESITO: fatto
RIF: gitea:Adriano/TieMeasureFlow#58
COSA: la statistica per sessione mostra, oltre alle misure (fatte il 07/10,
4e52095e44ac31), anche gli esiti OK/NOK dei task check e le note, i testi dei campi e gli allegati dei task note.FILE: src/backend/api/routers/statistics.py — GET /api/statistics/runs/{run_id}/task-results (require_metrologist, 404 se la run non esiste; risponde counts e results in ordine di tempo; etichette dai task.fields, se manca la chiave; 3 query)
FILE: src/frontend/flask_app/blueprints/statistics.py — proxy task-results; proxy dei file limitato a task_results/ senza ..
FILE: src/frontend/flask_app/templates/statistics/dashboard.html — pannello «Esiti dei task della sessione» (contatori OK/NOK/Fatto e tabella con ora, task, esito, note, campi, allegati, operatore), visibile solo con una sessione scelta
FILE: translations it/en — 6 stringhe
COMMIT:
c9114498d7fa9a, merge su V3.0.0PROVA: suite goldrake su lavoro/daitarn-58 (base
ac8604e= base del merge) → 856 passed 2 skipped (pytest 3.11 backend+frontend), 29 passed (pytest 3.13 vision), docker build vision ok. Test: TestRunTaskResults (src/backend/tests/test_statistics.py), TestRunTaskResultsProxy (src/frontend/flask_app/tests/test_statistics.py)MANCA: i report PDF ed Excel per sessione restano con le sole misure (fuori ambito). Prova a mano nel browser non fatta.