# 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.