feat(measure): il fuori tolleranza si autorizza, non si chiude
Il punto 5 c'era a meta': la schermata apriva il modale del capoturno e bloccava l'avanzamento automatico, ma il modale si chiudeva con Annulla o con un click sullo sfondo, la misura era gia' salvata, e `pendingAdvance` veniva impostato e non letto da nessuno. Era una conferma, non uno sbarramento. Ora l'autorizzazione finisce sulla misura: due colonne, chi ha autorizzato e quando. Finche' una quota e' fuori tolleranza e nessuno l'ha autorizzata, il server rifiuta la misura della quota successiva e la chiusura del ciclo. Non e' la schermata a impedirlo: la schermata risparmia solo il viaggio. Rimisurare la stessa quota resta possibile — il calibro scivola, il pezzo si riposiziona — e una seconda lettura in tolleranza libera il blocco, perche' conta l'ultima lettura di ogni quota. Quante volte si possa riprovare e' il punto 4, e tutte le letture restano comunque a registro. Un warning non blocca: fuori dai limiti di attenzione ma dentro la tolleranza e' dentro la tolleranza. Ricaricare la pagina era il modo piu' semplice per scavalcare il vecchio gate. Non lo e' piu': la schermata chiede al server, all'apertura, se una quota sta aspettando, e si ritrova davanti lo stesso blocco. Sparisce /validate-supervisor, che verificava le credenziali e buttava via la risposta. Al suo posto un endpoint che le credenziali le usa per scrivere l'approvazione dove serve. Il controllo del capoturno si sposta in auth_service, accanto al resto delle credenziali: fermo linea, chiusura e fuori tolleranza fanno la stessa domanda, e solo una delle tre riguarda la produzione. Il file di statistica guadagna authorised_by e authorised_at: mostrava il fallimento e non la decisione, che e' la meta' che un auditor chiede. Migrazione 010: due colonne nullable sulle misure. Le righe esistenti restano nulle — retrodatare un'autorizzazione mai avvenuta sarebbe inventarsi un record di audit, e quelle produzioni sono chiuse da un pezzo. Test: +18 (309). Coprono il rifiuto della quota successiva, la rimisura ammessa, il rilascio del blocco con una lettura buona, il ciclo che non si chiude, il capoturno registrato sulla misura, le credenziali sbagliate e chi capoturno non e', il file di statistica, e il fatto che una produzione chiusa non blocchi la successiva. Aggiunto uploads/statistics/ al gitignore: i test che chiudono una produzione scrivevano nel repository. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2026-07-28 20:16+0000\n"
|
||||
"POT-Creation-Date: 2026-07-28 20:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -39,7 +39,7 @@ msgstr ""
|
||||
msgid "Inserisci username e password"
|
||||
msgstr ""
|
||||
|
||||
#: blueprints/auth.py:81 blueprints/measure.py:417
|
||||
#: blueprints/auth.py:81
|
||||
msgid "Credenziali non valide"
|
||||
msgstr ""
|
||||
|
||||
@@ -158,15 +158,11 @@ msgstr ""
|
||||
msgid "Errore nel salvataggio"
|
||||
msgstr ""
|
||||
|
||||
#: blueprints/measure.py:412 blueprints/measure.py:520
|
||||
#: blueprints/measure.py:437 blueprints/measure.py:542
|
||||
msgid "Username e password richiesti"
|
||||
msgstr ""
|
||||
|
||||
#: blueprints/measure.py:422
|
||||
msgid "Utente non autorizzato (richiesto capoturno)"
|
||||
msgstr ""
|
||||
|
||||
#: blueprints/measure.py:441 blueprints/measure.py:458
|
||||
#: blueprints/measure.py:463 blueprints/measure.py:480
|
||||
#: templates/errors/station_not_configured.html:2
|
||||
#: templates/errors/station_not_configured.html:16
|
||||
msgid "Stazione non configurata"
|
||||
@@ -369,7 +365,7 @@ msgstr ""
|
||||
#: templates/maker/task_editor.html:782 templates/maker/task_editor.html:901
|
||||
#: templates/maker/task_editor.html:966 templates/maker/task_editor.html:1071
|
||||
#: templates/measure/select_recipe.html:405
|
||||
#: templates/measure/task_execute.html:831
|
||||
#: templates/measure/task_execute.html:860
|
||||
msgid "Annulla"
|
||||
msgstr ""
|
||||
|
||||
@@ -513,7 +509,7 @@ msgstr ""
|
||||
#: templates/admin/users.html:48 templates/admin/users.html:173
|
||||
#: templates/admin/users.html:179 templates/auth/login.html:35
|
||||
#: templates/auth/login.html:49 templates/auth/profile.html:36
|
||||
#: templates/measure/task_execute.html:816
|
||||
#: templates/measure/task_execute.html:842
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
@@ -565,7 +561,7 @@ msgstr ""
|
||||
|
||||
#: templates/admin/users.html:206 templates/admin/users.html:214
|
||||
#: templates/auth/login.html:57 templates/auth/login.html:71
|
||||
#: templates/measure/task_execute.html:821
|
||||
#: templates/measure/task_execute.html:847
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
@@ -818,7 +814,7 @@ msgstr ""
|
||||
#: templates/components/production_clock.html:49
|
||||
#: templates/components/production_clock.html:62
|
||||
#: templates/measure/task_execute.html:463
|
||||
#: templates/measure/task_execute.html:516
|
||||
#: templates/measure/task_execute.html:542
|
||||
msgid "Misurazione in ritardo di"
|
||||
msgstr ""
|
||||
|
||||
@@ -827,7 +823,7 @@ msgid "Linea ferma — conto alla rovescia congelato a"
|
||||
msgstr ""
|
||||
|
||||
#: templates/components/production_clock.html:62
|
||||
#: templates/measure/task_execute.html:510
|
||||
#: templates/measure/task_execute.html:536
|
||||
msgid "Linea ferma"
|
||||
msgstr ""
|
||||
|
||||
@@ -837,17 +833,17 @@ msgid "Ciclo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/components/production_clock.html:92
|
||||
#: templates/measure/task_execute.html:678
|
||||
#: templates/measure/task_execute.html:704
|
||||
msgid "È ora di misurare"
|
||||
msgstr ""
|
||||
|
||||
#: templates/components/production_clock.html:95
|
||||
#: templates/measure/task_execute.html:680
|
||||
#: templates/measure/task_execute.html:706
|
||||
msgid "Ritorno alla misurazione tra"
|
||||
msgstr ""
|
||||
|
||||
#: templates/components/production_clock.html:101
|
||||
#: templates/measure/task_execute.html:685
|
||||
#: templates/measure/task_execute.html:711
|
||||
msgid "Vai alla misura"
|
||||
msgstr ""
|
||||
|
||||
@@ -896,8 +892,8 @@ msgstr ""
|
||||
#: templates/maker/recipe_editor.html:128 templates/maker/recipe_list.html:246
|
||||
#: templates/maker/task_drawing.html:106 templates/maker/task_editor.html:130
|
||||
#: templates/measure/task_complete.html:171
|
||||
#: templates/measure/task_execute.html:589 templates/measure/task_list.html:2
|
||||
#: templates/measure/task_list.html:159
|
||||
#: templates/measure/task_execute.html:615 templates/measure/task_list.html:2
|
||||
#: templates/measure/task_list.html:180
|
||||
msgid "Task"
|
||||
msgstr ""
|
||||
|
||||
@@ -1071,8 +1067,8 @@ msgid "Errore durante eliminazione"
|
||||
msgstr ""
|
||||
|
||||
#: templates/maker/recipe_list.html:55 templates/measure/select_recipe.html:72
|
||||
#: templates/measure/task_execute.html:1262
|
||||
#: templates/measure/task_execute.html:1558
|
||||
#: templates/measure/task_execute.html:1362
|
||||
#: templates/measure/task_execute.html:1672
|
||||
msgid "Errore di connessione"
|
||||
msgstr ""
|
||||
|
||||
@@ -1376,17 +1372,17 @@ msgid "Tipo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/maker/task_editor.html:277 templates/maker/task_editor.html:543
|
||||
#: templates/measure/task_list.html:177
|
||||
#: templates/measure/task_list.html:198
|
||||
msgid "Nota"
|
||||
msgstr ""
|
||||
|
||||
#: templates/maker/task_editor.html:278 templates/maker/task_editor.html:544
|
||||
#: templates/measure/task_execute.html:309 templates/measure/task_list.html:175
|
||||
#: templates/measure/task_execute.html:309 templates/measure/task_list.html:196
|
||||
msgid "Misura"
|
||||
msgstr ""
|
||||
|
||||
#: templates/maker/task_editor.html:279 templates/maker/task_editor.html:545
|
||||
#: templates/measure/task_list.html:176
|
||||
#: templates/measure/task_list.html:197
|
||||
msgid "Disegno"
|
||||
msgstr ""
|
||||
|
||||
@@ -1417,7 +1413,7 @@ msgstr ""
|
||||
|
||||
#: templates/maker/task_editor.html:390
|
||||
#: templates/maker/version_history.html:188
|
||||
#: templates/measure/task_list.html:192
|
||||
#: templates/measure/task_list.html:213
|
||||
msgid "misurazioni"
|
||||
msgstr ""
|
||||
|
||||
@@ -1683,7 +1679,7 @@ msgid "Misurazione aggiunta"
|
||||
msgstr ""
|
||||
|
||||
#: templates/maker/task_editor.html:1685
|
||||
#: templates/measure/task_execute.html:1108
|
||||
#: templates/measure/task_execute.html:1170
|
||||
msgid "Errore nel salvataggio della misurazione"
|
||||
msgstr ""
|
||||
|
||||
@@ -1746,16 +1742,16 @@ msgstr ""
|
||||
msgid "Seleziona Ricetta"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/select_recipe.html:30
|
||||
#: templates/measure/select_recipe.html:30 templates/measure/task_list.html:86
|
||||
msgid "lotto"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/select_recipe.html:31
|
||||
#: templates/measure/select_recipe.html:31 templates/measure/task_list.html:87
|
||||
msgid "seriale"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/select_recipe.html:64
|
||||
#: templates/measure/select_recipe.html:277
|
||||
#: templates/measure/select_recipe.html:277 templates/measure/task_list.html:97
|
||||
msgid "Compila prima:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1850,24 +1846,25 @@ msgstr ""
|
||||
#: templates/measure/task_complete.html:3
|
||||
#: templates/measure/task_complete.html:39
|
||||
#: templates/measure/task_execute.html:113
|
||||
#: templates/measure/task_execute.html:739
|
||||
#: templates/measure/task_execute.html:765
|
||||
#: templates/statistics/dashboard.html:139
|
||||
msgid "Riepilogo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_complete.html:47
|
||||
#: templates/measure/task_execute.html:716
|
||||
#: templates/measure/task_execute.html:742
|
||||
msgid "Misurazioni Complete"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_complete.html:64
|
||||
#: templates/measure/task_complete.html:296 templates/measure/task_list.html:97
|
||||
#: templates/measure/task_complete.html:296
|
||||
#: templates/measure/task_list.html:118
|
||||
msgid "Lotto"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_complete.html:70
|
||||
#: templates/measure/task_complete.html:297
|
||||
#: templates/measure/task_list.html:109
|
||||
#: templates/measure/task_list.html:130
|
||||
msgid "Seriale"
|
||||
msgstr ""
|
||||
|
||||
@@ -1876,12 +1873,12 @@ msgid "Totale"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_complete.html:106
|
||||
#: templates/measure/task_execute.html:724
|
||||
#: templates/measure/task_execute.html:750
|
||||
msgid "Conformi"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_complete.html:123
|
||||
#: templates/measure/task_execute.html:728
|
||||
#: templates/measure/task_execute.html:754
|
||||
msgid "Attenzione"
|
||||
msgstr ""
|
||||
|
||||
@@ -2075,153 +2072,172 @@ msgstr ""
|
||||
msgid "Task di misura senza quote configurate: la ricetta è incompleta"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:515
|
||||
msgid "Il conto alla rovescia è congelato a"
|
||||
#: templates/measure/task_execute.html:510
|
||||
msgid "Quota fuori tolleranza"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:518
|
||||
msgid "serve il capoturno per riprendere"
|
||||
#: templates/measure/task_execute.html:513
|
||||
msgid "serve il capoturno, oppure una nuova misura della stessa quota"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:537
|
||||
msgid "Produzione non registrata sul server"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:558
|
||||
#: templates/measure/task_execute.html:767
|
||||
msgid "Avvio Produzione"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:562
|
||||
msgid "Invia segnale al gestionale per avviare il timer della linea"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:573
|
||||
msgid "Produzione avviata"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:618
|
||||
msgid "Fine ciclo misura"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:629
|
||||
msgid "Rimisura"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:639
|
||||
#: templates/measure/task_execute.html:653
|
||||
msgid "Completato"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:718
|
||||
msgid "Tutte le"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:718
|
||||
msgid "misurazioni sono state registrate."
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:732
|
||||
msgid "Non Conf."
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:747
|
||||
msgid "Conferma ciclo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:757
|
||||
msgid "Task successivo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:783
|
||||
msgid "Girare il pezzo e rimisurare"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:809
|
||||
msgid "Autorizzazione capoturno"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:818
|
||||
msgid "Username capoturno"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:840
|
||||
#: templates/measure/task_execute.html:517
|
||||
#: templates/measure/task_execute.html:870
|
||||
msgid "Autorizza"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1063
|
||||
#: templates/measure/task_execute.html:541
|
||||
msgid "Il conto alla rovescia è congelato a"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:544
|
||||
msgid "serve il capoturno per riprendere"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:563
|
||||
msgid "Produzione non registrata sul server"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:584
|
||||
#: templates/measure/task_execute.html:793
|
||||
msgid "Avvio Produzione"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:588
|
||||
msgid "Invia segnale al gestionale per avviare il timer della linea"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:599
|
||||
msgid "Produzione avviata"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:644
|
||||
msgid "Fine ciclo misura"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:655
|
||||
msgid "Rimisura"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:665
|
||||
#: templates/measure/task_execute.html:679
|
||||
msgid "Completato"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:744
|
||||
msgid "Tutte le"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:744
|
||||
msgid "misurazioni sono state registrate."
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:758
|
||||
msgid "Non Conf."
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:773
|
||||
msgid "Conferma ciclo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:783
|
||||
msgid "Task successivo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:809
|
||||
msgid "Girare il pezzo e rimisurare"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:835
|
||||
msgid "Autorizzazione capoturno"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:844
|
||||
msgid "Username capoturno"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:861
|
||||
msgid "Rimisura la quota"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1125
|
||||
msgid "Questa ricetta non ammette valori digitati: usare il calibro"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1152
|
||||
#: templates/measure/task_execute.html:1222
|
||||
msgid "Errore di rete. Riprovare."
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1257
|
||||
#: templates/measure/task_execute.html:1260
|
||||
msgid ""
|
||||
"Quota fuori tolleranza: serve l'autorizzazione del capoturno, oppure "
|
||||
"misurare di nuovo la quota"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1357
|
||||
msgid "Errore di comunicazione con il server"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1505
|
||||
#: templates/measure/task_execute.html:1609
|
||||
msgid "Misurazione fuori tolleranza"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1506
|
||||
#: templates/measure/task_execute.html:1610
|
||||
msgid "Fermo linea richiesto"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1507
|
||||
#: templates/measure/task_execute.html:1611
|
||||
msgid "Ripresa della produzione"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1508
|
||||
#: templates/measure/task_execute.html:1612
|
||||
msgid "Fine produzione richiesta"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1537
|
||||
#: templates/measure/task_execute.html:1656
|
||||
msgid "Credenziali non valide o utente non autorizzato"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1569
|
||||
#: templates/measure/task_execute.html:1683
|
||||
msgid "Nessuna produzione aperta su questa stazione"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_execute.html:1586
|
||||
#: templates/measure/task_execute.html:1700
|
||||
msgid "Azione non riuscita"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:87
|
||||
#: templates/measure/task_list.html:107
|
||||
msgid "AVVIA"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:124
|
||||
#: templates/measure/task_list.html:145
|
||||
msgid "Task da eseguire"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:136
|
||||
#: templates/measure/task_list.html:157
|
||||
msgid "misurazioni totali"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:178
|
||||
#: templates/measure/task_list.html:199
|
||||
msgid "Confronto profilo"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:179
|
||||
#: templates/measure/task_list.html:200
|
||||
msgid "Misura camera"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:201
|
||||
#: templates/measure/task_list.html:222
|
||||
msgid "Allegato"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:225
|
||||
#: templates/measure/task_list.html:246
|
||||
msgid "Visualizza Task"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:248
|
||||
#: templates/measure/task_list.html:269
|
||||
msgid "Nessun task disponibile"
|
||||
msgstr ""
|
||||
|
||||
#: templates/measure/task_list.html:251
|
||||
#: templates/measure/task_list.html:272
|
||||
msgid "Questa ricetta non ha ancora task definiti."
|
||||
msgstr ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user