# Roadmap TieMeasureFlow — V2.0.0 → V1.1.0 (rev04 / M1 demo cliente) > Aggiornare ad ogni Fase chiusa. ## Riferimenti - Master plan dettagliato: [`../superpowers/plans/2026-04-17-rev04-master-roadmap.md`](../superpowers/plans/2026-04-17-rev04-master-roadmap.md) - Spec sorgente: [`../specs/2026-04-16-schema-sviluppo-rev04.docx`](../specs/2026-04-16-schema-sviluppo-rev04.docx) - Stato corrente: [`STATO_PROGETTO.md`](STATO_PROGETTO.md) ## Strategia: due milestone | Milestone | Scope | Obiettivo | |---|---|---| | **M1 — Demo cliente** | Fasi 1-5 + deploy "demo" | Sistema testabile end-to-end col cliente per raccogliere feedback | | **M2 — Produzione** | Fasi 6-7 + correzioni post-feedback + GAIA live | Rollout su tablet/PC reali | ## Stato Fasi (M1) | Fase | Scope | Stato | Branch / Commit | |---|---|---|---| | **1** | Stazioni + identità per-tablet | ✅ **COMPLETATA** | `V2.0.0` (merge `ea8e468` da `feature/rev04-phase1-stations`) | | 2 | Ruolo Capoturno (Supervisor) + override token breve | ⏳ Da iniziare | — | | 3 | Editor ricetta a blocchi (preparation + measurement) | ⏳ Da iniziare | — | | 4 | Workflow operatore (retry/timer/autologout/avvio produzione) | ⏳ Da iniziare | — | | 5 (M1) | `ImportOnlyGaiaClient` + UI import dati cliente reali | ⏳ Da iniziare | — | | Deploy M1 | VPS demo (compose + Traefik + LE, no registry) | ⏳ Da iniziare | — | ## Stato Fasi (M2) | Fase | Scope | Stato | |---|---|---| | 5 (M2) | GAIA reale (protocollo TBD, polling, comandi produzione) | ⏳ Bloccata da decisioni cliente (D-0.1, D-0.2) | | 6 | Deploy B industriale (registry privato + Watchtower + STATION_ID per-tablet + CI release) | ⏳ Pianificata | | 7 | Hardening, security review, E2E sito pilota, docs aggiornati, i18n delta | ⏳ Pianificata | ## Decisioni aperte (bloccanti per M2 / future fasi) Da: master plan §0 "Precondizioni e Decisioni Aperte". Da risolvere col cliente prima della Fase 5/6. | ID | Decisione | Stato | Bloccante per | |---|---|---|---| | D-0.1 | Protocollo integrazione GAIA (REST / DB shared / OPC-UA / file) | **Aperta** | Fase 5 reale (M2) | | D-0.2 | Credenziali e rete GAIA (VPN / firewall / whitelist IP) | **Aperta** | Fase 5 reale (M2) | | D-0.3 | Target hardware "tablet" (Windows / Linux industriale / Android) | **Aperta** | Fase 6 (deploy B) | | D-0.4 | Cicalino/luce avviso (audio HTML5 / hardware USB / entrambi) | **Rimandata a M2** | Fase 4 finale | | D-0.5 | Parametri runtime modificabili vs versione immutabile | **Aperta** (raccomandato B: separare volatili) | Fase 3 | | D-0.6 | Auth capoturno durante override (modale / PIN / RFID) | **Aperta** | Fase 2 | | D-0.7 | Timeout auto-logout | **Risolta** | — | | D-0.8 | Naming ruolo capoturno | **Proposta:** `Supervisor` | Fase 2 | | D-0.9 | Tag versione immagine docker | **Proposta:** SemVer + `latest` | Fase 6 | | D-0.10 | Registry esposto su Internet o solo VPN | **Proposta:** solo VPN cliente | Fase 6 | ## Tech debt da chiudere | Item | Priorità | Note | |---|---|---| | 3 test backend pre-esistenti rotti (`test_recipes`, `test_tasks`) | Media | Investigare prima di Fase 3 (toccano recipe + task router). | | 1 test client pre-esistente rotto (`test_save_measurement_proxy`) | Bassa | Probabilmente CSRF/payload. Risolvere con Fase 4. | | Pagina `task_complete` riepilogo: utente segnala riga vuota in alcuni scenari | Media | Da debuggare (rendering corretto via curl ma utente vede vuoto in browser, possibile interazione con sessione lot/serial). | | `.env` rename a convenzione spec (SERVICE_NAME, SERVICE_DOMAIN, API_KEY) | Bassa | Rinviato (impatto deploy). | | Header `X-API-Key` rename a `X-Api-Key` | Bassa | Vedere se M2 lo richiede. | | Envelope risposta `{success,data,error}` | Bassa | Eventuale API v2 in M2. | | `Dockerfile.frontend`: `pybabel compile` via `uv run` non testato in build reale | Alta | Verificare al primo `docker compose build`. | | Smoke test in container Docker (non solo locale uvicorn+gunicorn) | Alta | Validare che i Dockerfile riscritti con `uv` buildino e girino correttamente prima di chiudere V2.0.0. | ## Open per scelta utente prima della prossima sessione 1. **Quale fase iniziare adesso?** Opzioni: Fase 2 (Supervisor — sblocca workflow), Fase 3 (block editor — independente), Fase 5 (import GAIA dati reali — sblocca demo). 2. **Revisione decisioni aperte col cliente** — D-0.1 / D-0.2 / D-0.3 / D-0.6 prima di pianificare Fase 5 e 6. 3. **Smoke test Docker** della nuova struttura V2.0.0 (`docker compose -f docker-compose.dev.yml up --build`) per validare i Dockerfile riscritti. 4. **Test di carico** (k6/locust) a 20 VU su `/measure/save-measurement` per validare la scalatura worker (capacità annunciata: 20-30 tablet contemporanei). ## Stima tempi residui M1 (post-Fase 1) | Task | Stima full-time | |---|---| | Fase 2 — Supervisor + override | 1 settimana | | Fase 3 — Block editor | 1.5 settimane | | Fase 4 — Workflow operatore | 2 settimane | | Fase 5 (M1) — Import-only GAIA | 1 settimana | | Deploy M1 demo | 0.5 settimane | | **Totale M1 residuo** | **~6 settimane** | ## Stima tempi M2 (dopo feedback) | Task | Stima | |---|---| | Aggiustamenti post-feedback | variabile (1-2 sett.) | | Fase 5 reale GAIA | 1-2 settimane | | Fase 6 deploy B | 1 settimana | | Fase 7 hardening | 1-2 settimane | | **Totale M2** | **~4-7 settimane** | **Totale fino a produzione:** ~10-13 settimane full-time da oggi (2026-04-25), assumendo decisioni aperte risolte in tempo utile.