From e0f32fe8a908b9fe0a0e34dc2150a1cd6d0d3946 Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Tue, 28 Jul 2026 22:08:40 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20la=20scaletta=20di=20collaudo,=20in=20o?= =?UTF-8?q?rdine=20e=20con=20i=20numeri=20gi=C3=A0=20scelti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tredici punti su quindici sono in esercizio e nessuno li ha percorsi. Finora il collaudo era «provare le ricette COLLAUDO-A e B», che è un invito a scoprire da soli in che ordine e con quali valori — cioè a perdere mezza giornata prima di misurare qualcosa di utile. Ordinata perché ogni prova prepari la successiva, e perché le due che vanno fatte adesso vengano prima: il layout, che si vede solo da un monitor largo, e le richieste di rete, ora che la Content-Security-Policy è appena entrata in vigore. Due dettagli verificati sul codice prima di scriverla, perché mandavano a caccia di pulsanti inesistenti: il timer non parte finché non si preme «Avvio Produzione», che compare solo dopo il primo ciclo confermato — il primo pezzo è attrezzaggio, non produzione; e una quota già presa si rimisura cliccandola in alto, che è la via d'uscita dal blocco fuori tolleranza senza chiamare nessuno. Detto anche cosa la scaletta non copre, incluso il fatto che su una VPS pubblica staccare la rete non prova niente: si guarda dove vanno le richieste, e il giro vero si fa in reparto. Co-Authored-By: Claude Opus 5 (1M context) --- docs/COLLAUDO.md | 191 +++++++++++++++++++++++++++++++++++++++++++++++ docs/README.md | 1 + 2 files changed, 192 insertions(+) create mode 100644 docs/COLLAUDO.md diff --git a/docs/COLLAUDO.md b/docs/COLLAUDO.md new file mode 100644 index 0000000..c120217 --- /dev/null +++ b/docs/COLLAUDO.md @@ -0,0 +1,191 @@ +# Scaletta di collaudo — V3.0.0 + +Tredici dei quindici punti del 28/07 sono in esercizio e **nessuno li ha ancora +percorsi**. Questa è la scaletta per farlo: ordinata in modo che ogni prova prepari +la successiva, e scritta perché si possa spuntare riga per riga. + +Per ogni riga: cosa fare, e **come si vede che è giusto**. Se qualcosa non torna, +annotare il testo esatto dell'eventuale errore in console — non «dava errore». + +Totale stimato: **circa 90 minuti**, di cui 30 sul solo punto 3 (il timer, che si +misura aspettando). + +--- + +## 0 · Preparazione (5 min) + +| | Cosa | Verifica | +|---|---|---| +| 0.1 | Aprire il sito e fare **ricarica forzata** (`Ctrl+Shift+R`) | CSS e JS sono in cache per 7 giorni: senza questo si collauda la versione di ieri | +| 0.2 | Aprire la **console del browser** (`F12`) e lasciarla aperta per tutto il collaudo | Molte prove si leggono lì, non a schermo | +| 0.3 | Verificare che esistano le ricette `COLLAUDO-A` e `COLLAUDO-B` | Sono in `/measure/select`. Se una sessione precedente le ha sporcate: `docker compose exec server uv run python /tmp/seed_collaudo.py --replace` (cancella anche le misure fatte su di esse) | + +**Credenziali del capoturno:** `capoturno` / `Collaudo2026!` — da cambiare prima di +qualunque uso reale. + +**Le ricette:** + +- **COLLAUDO-A** — lotto obbligatorio, digitazione ammessa, intervallo **2 minuti**. + Cinque task: nota → misura (2 quote) → nota → misura (1 quota) → nota. +- **COLLAUDO-B** — lotto **e** seriale obbligatori, **solo calibro**, una quota. + +**Le quote e i valori da usare** (tutte con nominale al centro): + +| Quota | Task | Nominale | Conforme | Attenzione | Fuori tolleranza | +|---|---|---|---|---|---| +| 1 · Diametro esterno | A, misura 1 | 10.00 | `10.00` | `10.30` | `12.00` | +| 2 · Spessore parete | A, misura 1 | 25.00 | `25.00` | `25.30` | `27.00` | +| 3 · Lunghezza totale | A, misura 2 | 100.00 | `100.00` | `100.70` | `105.00` | + +--- + +## 1 · Layout — punto 14 (10 min) · **da monitor da scrivania** + +Va fatto **prima** e **non dal tablet**: in verticale su un tablet quasi tutte le +larghezze coincidono e il difetto non si vede. Serve uno schermo largo. + +| | Cosa | Verifica | +|---|---|---| +| 1.1 | Percorrere Ricette → apri una ricetta → Task → Disegno → Anteprima, e tornare indietro | Il blocco di contenuto **non cambia larghezza** fra una schermata e l'altra | +| 1.2 | Su ognuna, guardare il bordo sinistro del contenuto e quello della barra in alto | Sono **allineati**: il contenuto sta dentro la stessa cornice della navbar | +| 1.3 | Passare da una pagina lunga (che scorre) a una corta (che non scorre) | Niente **salta di lato** di qualche pixel: lo spazio della barra di scorrimento è riservato sempre | +| 1.4 | Entrare in un task di misura e uscirne | Stesso controllo: nessuno spostamento orizzontale | +| 1.5 | Admin → Utenti, Stazioni, Impostazioni; poi il proprio Profilo | Utenti e Stazioni sono larghe, Impostazioni e Profilo strette — ma con **gli stessi margini esterni** | +| 1.6 | **Dal tablet**, entrare in un task di misura | Il piede con «Fine ciclo misura» e il tastierino è visibile **senza scorrere**, anche quando la barra dell'indirizzo compare e sparisce | + +--- + +## 2 · Niente arriva dalla rete — punto 12 (15 min) + +Da fare **adesso**, perché la Content-Security-Policy è appena entrata in vigore: se +una libreria avesse bisogno di un permesso non concesso, il sintomo compare ora. + +> **Attenzione al metodo.** Il sistema è oggi su una VPS pubblica: staccare la rete +> significherebbe perdere anche il server, quindi non prova niente. La prova +> equivalente e più diretta è guardare **dove vanno le richieste**. Il giro a rete +> davvero staccata si fa in reparto, sull'installazione on-premise. + +| | Cosa | Verifica | +|---|---|---| +| 2.1 | Console → scheda **Rete**, spuntare «Disabilita cache», ricaricare | Ordinando per dominio compare **un solo dominio**: `tieflow.tielogic.xyz`. Nessun `cdn`, `jsdelivr`, `cloudflare`, `googleapis`, `plot.ly` | +| 2.2 | Ripetere su: login, selezione ricetta, esecuzione task, editor annotazioni (`/maker`), dashboard statistiche | Sempre un dominio solo. La dashboard è quella che carica Plotly, l'editor quella che carica Fabric | +| 2.3 | Aprire un task che ha un **disegno PDF** allegato | Il disegno si vede. È la prova del *worker* di PDF.js: se cercasse la rete, tutto sembrerebbe a posto fino a questo momento | +| 2.4 | Con la console aperta su ogni pagina del giro | **Zero** messaggi che iniziano con `Refused to load…` o `…violates the following Content Security Policy directive`. Se ce n'è uno, copiarlo per intero: dice quale permesso manca | +| 2.5 | Generare un **report PDF** dalle statistiche | Il PDF esce. È generato sul server, non nel browser, ma vale la pena vederlo funzionare nel giro completo | + +--- + +## 3 · Le regole della ricetta — punti 8 e 9 (10 min) · **COLLAUDO-B** + +| | Cosa | Verifica | +|---|---|---| +| 3.1 | `/measure/select`, **senza** compilare lotto e seriale | Sulla scheda di COLLAUDO-B il pulsante è spento e dice **«Compila prima: lotto, seriale»** | +| 3.2 | Compilare **solo** il lotto | Il pulsante resta spento e ora chiede solo il **seriale** | +| 3.3 | Provare ad andare a mano su `/measure/start/` di COLLAUDO-B senza seriale | Rimanda alla selezione con il messaggio «Compila prima:». La regola non si aggira dall'indirizzo | +| 3.4 | Compilare entrambi e avviare | Entra nel task | +| 3.5 | Guardare il tastierino | I tasti numerici **non ci sono affatto** — non sono grigi, non ci sono. Restano «cancella» e «conferma» | +| 3.6 | Con un **calibro USB** collegato, prendere una lettura | Il valore entra e si salva | +| 3.7 | *(facoltativo, per chi vuole la prova dura)* Provare a salvare un valore digitato aggirando lo schermo | Il server risponde **422**: la regola vive lì, non nella pagina | + +--- + +## 4 · Il primo ciclo e l'avvio produzione — punti 10 e 11 (10 min) · **COLLAUDO-A** + +> Da qui in avanti si lavora su COLLAUDO-A. **Il timer non parte subito**: prima si +> fa un ciclo completo, poi compare «Avvio Produzione». È voluto — il primo pezzo è +> l'attrezzaggio, non produzione. + +| | Cosa | Verifica | +|---|---|---| +| 4.1 | Selezione ricetta → COLLAUDO-A → lotto `LOT-TEST-01` → **AVVIA IN SEQUENZA** | Si apre **il primo task** (la nota «Preparazione del pezzo»), **non** l'elenco dei task | +| 4.2 | Leggere la nota | «a sinistra» è in **grassetto**, le righe vanno a capo e la riga vuota si vede (punto 11) | +| 4.3 | Guardare i due pulsanti in alto a destra | Sono **«Lista task»** e **«Completato»**. Su una nota «Completato» è attivo | +| 4.4 | Premere «Completato» | Passa al task 2, «Misura 1 — diametro e spessore» | +| 4.5 | Guardare il pulsante in basso a destra | **«Mancano 2 quote»**, grigio e non cliccabile | +| 4.6 | Misurare la quota 1 con `10.00` e confermare | Verde (conforme). Il pulsante in basso ora dice **«Manca 1 quota»** | +| 4.7 | **Prova chiave del punto 10**: premere «Lista task» adesso, a metà | Nel'elenco il task «Misura 1» porta **«Incompiuto 1/2»** con il bordo ambra. Gli altri non dicono niente | +| 4.8 | Premere **«Visualizza singolo TASK»** su quel task | Ci si torna dentro, con la quota già presa | +| 4.9 | Misurare la quota 2 con `25.00` | Il pulsante in basso diventa blu: **«Fine ciclo misura»** | +| 4.10 | Premerlo | Compare il verde **«Task successivo»** (non un secondo «Completato») | +| 4.11 | Guardare sotto il piede della pagina | Compare il pulsante verde **«Avvio Produzione»** | +| 4.12 | Premere «Avvio Produzione» | Parte il conto alla rovescia da **2 minuti**. Da qui in avanti compaiono «Fermo linea» e «Fine produzione» | + +--- + +## 5 · Il fuori tolleranza — punto 5 (15 min) + +La parte più importante del collaudo: fino a ieri questo gate era una modale che si +poteva chiudere. + +| | Cosa | Verifica | +|---|---|---| +| 5.1 | Tornare su «Misura 1». Cliccare la **quota 1** in alto per rimisurarla, e inserire `12.00` | Si salva ed è **rossa**. La misura sbagliata resta a registro: è un dato, non un errore da nascondere | +| 5.2 | Provare a passare alla **quota 2** e salvare un valore | **Rifiutato.** Compare l'avviso che serve l'autorizzazione | +| 5.3 | Guardare «Completato» in alto | È **spento**, e passandoci sopra dice «Serve l'autorizzazione del capoturno» | +| 5.4 | **Ricaricare la pagina** (`F5`) | Il blocco **è ancora lì**. Ricaricare non è una via d'uscita | +| 5.5 | **La via d'uscita senza capoturno**: cliccare di nuovo la quota 1 e rimisurarla con `10.00` | Il blocco **si scioglie**. È voluto: il calibro scivola, il pezzo si riposiziona, e chiamare il capoturno per questo sarebbe assurdo | +| 5.6 | Rifarlo: quota 1 con `12.00`, e stavolta **autorizzare** con `capoturno` / `Collaudo2026!` | Il blocco si scioglie e la misura resta segnata come autorizzata | +| 5.7 | Provare ad autorizzare con una password sbagliata | Rifiutato, e il blocco **resta** | +| 5.8 | Provare ad autorizzare con un utente **senza** ruolo Supervisor (es. l'operatore stesso) | Rifiutato: non basta essere collegati, serve il ruolo | +| 5.9 | Rimettere `10.00` sulla quota 1 e `25.00` sulla 2, chiudere il ciclo | Si prosegue normalmente | + +--- + +## 6 · Il ciclo di misura — punto 3 (30 min, quasi tutti di attesa) + +| | Cosa | Verifica | +|---|---|---| +| 6.1 | Con il conto alla rovescia in corso, **cambiare task** | Il tempo residuo **prosegue**, non riparte da 2 minuti | +| 6.2 | **Ricaricare la pagina** (`F5`) | Idem: il tempo è lo stesso. Vive sul server, non nella pagina | +| 6.3 | Fermarsi su una **nota** e lasciare scadere l'intervallo | A ~5 secondi dalla scadenza compare l'avviso e **suona il cicalino** | +| 6.4 | Non toccare niente | Alla scadenza si viene portati **al primo task di misura** della ricetta, non a quello dove si era | +| 6.5 | Fare un ciclo completo: misura 1 (2 quote) → nota → **misura 2** (quota 3, `100.00`) → «Fine ciclo misura» | Chiudendo il ciclo **sull'ultimo task di misura** l'intervallo **riparte da 2 minuti** | +| 6.6 | Ripetere ma chiudendo il ciclo sulla **prima** misura | L'intervallo **non** riparte: il ciclo si chiude solo sull'ultimo task di misura | +| 6.7 | **La prova più delicata**: stare **dentro** un task di misura, con una quota già presa e una da prendere, e lasciare scadere l'intervallo | **Non** si viene spostati. Il conteggio diventa **rosso** e prosegue **oltre lo zero**, mostrando il ritardo. Chi sta misurando va lasciato finire | +| 6.8 | Usare **«Rimisura»** dopo aver completato le quote | Registra una seconda lettura dello stesso pezzo **senza** far ripartire l'intervallo. Girare il pezzo e rimisurare non è un pezzo nuovo | + +--- + +## 7 · Fermo linea e fine produzione — punto 6 (10 min) + +| | Cosa | Verifica | +|---|---|---| +| 7.1 | Dentro un task di misura, premere **«Fermo linea»** → credenziali capoturno | Il conto alla rovescia **si ferma** | +| 7.2 | Ricaricare la pagina | È ancora fermo: lo stato è sul server | +| 7.3 | Premere **«Ripresa»** → credenziali | Riparte | +| 7.4 | Premere **«Fine produzione»** → credenziali | La produzione si chiude | +| 7.5 | Sul server: `docker compose exec server ls uploads/statistics/` | C'è un file `production__.csv` | +| 7.6 | Aprire il file | Contiene **tutte** le misure della produzione, compresi i `12.00`. Sulla riga autorizzata le colonne `authorised_by` e `authorised_at` sono **valorizzate**: il file mostra il guasto **e** la decisione | +| 7.7 | Aprire il file in Excel | Le accentate si leggono, il separatore è quello configurato | + +--- + +## 8 · La statistica resta separata — punto 15 (5 min) + +| | Cosa | Verifica | +|---|---|---| +| 8.1 | Collegarsi con un utente che ha **solo** il ruolo MeasurementTec | In barra **non c'è** la voce Statistiche | +| 8.2 | Percorrere tutto il flusso operatore guardando ogni schermata | Nessun collegamento porta alla statistica, in nessun punto | +| 8.3 | Andare a mano su `/statistics/dashboard` | **403**: il ruolo non basta | +| 8.4 | Verificare che le misure ci siano comunque | Con un utente Metrologist, le misure appena fatte compaiono in dashboard. Si registra sempre, si consulta a parte | + +--- + +## Cosa annotare + +Per ogni riga che non torna: + +1. **Numero della riga** di questa scaletta. +2. **Cosa è successo** invece di quello che c'è scritto. +3. Se c'è un errore in console, il **testo esatto**, per intero. +4. Se è un problema di aspetto, uno **screenshot** e su **quale schermo** (tablet o + monitor, e in che orientamento) — per il punto 14 è l'informazione che manca. + +## Cosa questa scaletta non copre + +- Il **punto 4** (numero di tentativi prima del capoturno) non è implementato: è + fermo sulle risposte del cliente (D-6, D-7, D-9). +- Il **cicalino** è il suono del browser. Se serva una colonnina luminosa è D-5. +- Il giro a **rete davvero staccata** si fa in reparto, sull'installazione + on-premise: qui si prova l'equivalente (nessuna richiesta esce dal dominio). +- Il **carico** con venti tablet insieme non è mai stato misurato. diff --git a/docs/README.md b/docs/README.md index 77aefae..9149348 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,6 +20,7 @@ Indice della documentazione del progetto. | [`DEPLOYMENT.md`](DEPLOYMENT.md) | Guida deploy su VPS (Hostinger/Tielogic con Traefik + Let's Encrypt). | | [`USER_GUIDE.md`](USER_GUIDE.md) | Manuale utente (operatore, maker, metrologist, admin). | | [`I18N_SETUP.md`](I18N_SETUP.md) | Setup e workflow traduzioni (Flask-Babel + Alpine.js). | +| [`COLLAUDO.md`](COLLAUDO.md) | **Scaletta di collaudo V3.0.0**: cosa provare, in che ordine, con quali valori, e come si vede che è giusto. | ## Piani dettagliati TDD (rev04) — storici