feat(production): la misura torna a cercare l'operatore

Il conto alla rovescia non si ferma piu' a zero. Oltre la scadenza continua
nell'altro senso e dice da quanto la linea e' in ritardo, in rosso, su tutte le
schermate del percorso di misura: lista task, riepilogo, scelta ricetta. Un
ritardo va letto, non dedotto. Allo scadere dell'intervallo la misura si
ripropone da sola: cicalino, un avviso di cinque secondi, e l'operatore torna al
primo task di misura da qualunque schermata si trovi.

Un ciclo copre tutti i task di misura della ricetta, quindi solo l'ultimo lo
chiude e fa ripartire l'intervallo. Farlo ripartire al primo avrebbe fatto
misurare una ricetta con tre task di misura tre volte piu' spesso di come e'
configurata. E' il server a decidere quale task chiude il ciclo, perche' e' lui
a conoscere la sequenza: la lista dei task di misura viaggia con la produzione
(measurement_task_ids), che e' anche cio' che permette a una schermata qualsiasi
di sapere dove riportare l'operatore.

Aggiunta la rimisura: si gira il pezzo e si misura di nuovo dentro lo stesso
ciclo, senza chiudere niente e senza guadagnare tempo sulla scadenza. Le due
letture restano entrambe in statistica, che e' il motivo per cui si prendono.

Chi sta gia' misurando quando l'intervallo scade e' in ritardo, non perso: la
banda diventa rossa e lo si lascia lavorare. Portarlo altrove a meta' ciclo
cancellerebbe quote che ha davanti agli occhi senza guadagnare nulla.

Sistemato anche il pulsante "Conferma ciclo" dell'overlay: alzava una bandierina
locale e basta, quindi il ciclo non veniva mai registrato sul server da quella
strada. Ora passa da confirmCycle come il pulsante della barra.

Migrazione 008: il registro eventi della produzione impara task_measured e
remeasure, e la colonna task_id — un task_measured che non dice quale task non
registra niente di utile. I valori nuovi entrano tutti insieme perche' allargare
una enum MySQL riscrive la tabella, stesso ragionamento dei tipi di task in 007.
Verificata su SQLite (batch mode) e in MySQL con --sql.

La logica dell'orologio — come si legge un ritardo, quando suona, dove sta la
misura — vive in un solo posto (production-clock.js) e la schermata di misura la
usa invece di riscriverla.

Test: +10 (265). Coprono il ciclo che non riparte a meta', la rimisura che non
sposta la scadenza, il rifiuto a linea ferma, la sequenza dei task di misura
esposta dalla produzione, i proxy Flask e la validita' JS della lista task.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-07-28 19:31:51 +00:00
parent 6fbff2fe76
commit bde8fafd77
20 changed files with 1586 additions and 529 deletions
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TieMeasureFlow 1.0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-07-28 18:13+0000\n"
"POT-Creation-Date: 2026-07-28 19:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n"
@@ -161,7 +161,7 @@ msgstr "Missing data: subtask_id, version_id and value are required"
msgid "Errore nel salvataggio"
msgstr "Error saving"
#: blueprints/measure.py:407 blueprints/measure.py:495
#: blueprints/measure.py:407 blueprints/measure.py:515
msgid "Username e password richiesti"
msgstr "Username and password required"
@@ -267,13 +267,13 @@ msgstr "New Station"
# Task Complete Page
#: templates/admin/stations.html:49 templates/admin/stations.html:173
#: templates/maker/recipe_editor.html:195
#: templates/measure/task_complete.html:49
#: templates/measure/task_complete.html:52
msgid "Codice"
msgstr "Code"
#: templates/admin/stations.html:50 templates/admin/stations.html:190
#: templates/maker/recipe_editor.html:213
#: templates/measure/task_complete.html:53
#: templates/measure/task_complete.html:56
msgid "Nome"
msgstr "Name"
@@ -286,7 +286,7 @@ msgid "Ricette collegate"
msgstr "Assigned recipes"
#: templates/admin/stations.html:53 templates/admin/users.html:52
#: templates/measure/task_complete.html:292
#: templates/measure/task_complete.html:295
msgid "Stato"
msgstr "Status"
@@ -375,8 +375,8 @@ msgstr "Optional notes"
#: templates/maker/task_editor.html:306 templates/maker/task_editor.html:415
#: templates/maker/task_editor.html:767 templates/maker/task_editor.html:886
#: templates/maker/task_editor.html:951 templates/maker/task_editor.html:1056
#: templates/measure/select_recipe.html:367
#: templates/measure/task_execute.html:738
#: templates/measure/select_recipe.html:371
#: templates/measure/task_execute.html:810
msgid "Annulla"
msgstr "Cancel"
@@ -521,7 +521,7 @@ msgstr "New User"
#: 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:723
#: templates/measure/task_execute.html:795
msgid "Username"
msgstr "Username"
@@ -573,7 +573,7 @@ msgstr "Username cannot be changed"
#: 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:728
#: templates/measure/task_execute.html:800
msgid "Password"
msgstr "Password"
@@ -728,8 +728,8 @@ msgstr "Logout"
#: templates/components/barcode_scanner.html:21
#: templates/components/barcode_scanner.html:54
#: templates/measure/select_recipe.html:107
#: templates/measure/select_recipe.html:319
#: templates/measure/select_recipe.html:111
#: templates/measure/select_recipe.html:323
msgid "Scansiona Barcode"
msgstr "Scan Barcode"
@@ -791,8 +791,8 @@ msgid "NON CONFORME"
msgstr "NON-CONFORMING"
# Navbar
#: templates/components/navbar.html:26 templates/measure/task_complete.html:16
#: templates/measure/task_execute.html:2 templates/measure/task_list.html:16
#: templates/components/navbar.html:26 templates/measure/task_complete.html:19
#: templates/measure/task_execute.html:2 templates/measure/task_list.html:19
msgid "Misure"
msgstr "Activities"
@@ -803,7 +803,7 @@ msgstr "Activities"
msgid "Ricette"
msgstr "Recipes"
#: templates/components/navbar.html:32 templates/measure/task_complete.html:261
#: templates/components/navbar.html:32 templates/measure/task_complete.html:264
msgid "Statistiche"
msgstr "Statistics"
@@ -823,6 +823,47 @@ msgstr "Logout blocked during measurements"
msgid "Prossima misura"
msgstr "Next measurement"
#: templates/components/production_clock.html:42
#: templates/measure/task_execute.html:439
msgid "Prossima misurazione tra"
msgstr "Next measurement in"
#: templates/components/production_clock.html:49
#: templates/components/production_clock.html:62
#: templates/measure/task_execute.html:442
#: templates/measure/task_execute.html:495
msgid "Misurazione in ritardo di"
msgstr "Measurement overdue by"
#: templates/components/production_clock.html:57
msgid "Linea ferma — conto alla rovescia congelato a"
msgstr "Line stopped — countdown frozen at"
#: templates/components/production_clock.html:62
#: templates/measure/task_execute.html:489
msgid "Linea ferma"
msgstr "Line stopped"
#: templates/components/production_clock.html:74
#: templates/measure/task_execute.html:451
msgid "Ciclo"
msgstr "Cycle"
#: templates/components/production_clock.html:92
#: templates/measure/task_execute.html:657
msgid "È ora di misurare"
msgstr "Time to measure"
#: templates/components/production_clock.html:95
#: templates/measure/task_execute.html:659
msgid "Ritorno alla misurazione tra"
msgstr "Returning to the measurement in"
#: templates/components/production_clock.html:101
#: templates/measure/task_execute.html:664
msgid "Vai alla misura"
msgstr "Go to the measurement"
#: templates/errors/station_not_configured.html:20
msgid "Questo client non ha impostato la variabile di ambiente STATION_CODE."
msgstr "This client has not set the STATION_CODE environment variable."
@@ -863,9 +904,9 @@ msgstr "Preview"
#: 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:168
#: templates/measure/task_execute.html:551 templates/measure/task_list.html:2
#: templates/measure/task_list.html:156
#: templates/measure/task_complete.html:171
#: templates/measure/task_execute.html:568 templates/measure/task_list.html:2
#: templates/measure/task_list.html:159
msgid "Task"
msgstr "Task"
@@ -893,7 +934,7 @@ msgstr "E.g. Coupling Assembly 256"
#: templates/maker/task_editor.html:521 templates/maker/task_editor.html:547
#: templates/maker/task_editor.html:562 templates/maker/task_editor.html:680
#: templates/maker/task_editor.html:1045
#: templates/measure/task_complete.html:169
#: templates/measure/task_complete.html:172
msgid "Descrizione"
msgstr "Description"
@@ -1013,8 +1054,8 @@ msgstr "Error during deletion"
# Recipe Selection Additional
#: templates/maker/recipe_list.html:55 templates/measure/select_recipe.html:55
#: templates/measure/task_execute.html:1121
#: templates/measure/task_execute.html:1337
#: templates/measure/task_execute.html:1232
#: templates/measure/task_execute.html:1528
msgid "Errore di connessione"
msgstr "Connection Error"
@@ -1047,7 +1088,7 @@ msgid "ricetta trovata"
msgstr "recipe found"
#: templates/maker/recipe_list.html:144
#: templates/measure/select_recipe.html:175
#: templates/measure/select_recipe.html:179
msgid "ricette trovate"
msgstr "recipes found"
@@ -1065,7 +1106,7 @@ msgid "Versioni"
msgstr "Versions"
#: templates/maker/recipe_list.html:297
#: templates/measure/select_recipe.html:273
#: templates/measure/select_recipe.html:277
msgid "Nessuna ricetta trovata"
msgstr "No recipe found"
@@ -1099,7 +1140,7 @@ msgid "Anteprima Ricetta"
msgstr "Recipe Preview"
#: templates/maker/recipe_preview.html:114
#: templates/measure/task_complete.html:57
#: templates/measure/task_complete.html:60
msgid "Versione"
msgstr "Version"
@@ -1154,7 +1195,7 @@ msgstr "Measurement Points"
#: templates/maker/recipe_preview.html:299 templates/maker/task_editor.html:564
#: templates/maker/task_editor.html:706
#: templates/measure/task_complete.html:170
#: templates/measure/task_complete.html:173
#: templates/measure/task_execute.html:300
msgid "Nominale"
msgstr "Nominal"
@@ -1209,7 +1250,7 @@ msgid "Torna ai Task"
msgstr "Back to Tasks"
#: templates/maker/task_drawing.html:205 templates/maker/task_drawing.html:209
#: templates/measure/select_recipe.html:253
#: templates/measure/select_recipe.html:257
msgid "Seleziona"
msgstr "Select"
@@ -1325,18 +1366,18 @@ msgid "Tipo"
msgstr "Type"
#: templates/maker/task_editor.html:277 templates/maker/task_editor.html:534
#: templates/measure/task_list.html:174
#: templates/measure/task_list.html:177
msgid "Nota"
msgstr "Note"
#: templates/maker/task_editor.html:278 templates/maker/task_editor.html:535
#: templates/measure/task_execute.html:288 templates/measure/task_list.html:172
#: templates/measure/task_execute.html:288 templates/measure/task_list.html:175
msgid "Misura"
msgstr "Measure"
# Maker - Task Editor
#: templates/maker/task_editor.html:279 templates/maker/task_editor.html:536
#: templates/measure/task_list.html:173
#: templates/measure/task_list.html:176
msgid "Disegno"
msgstr "Drawing"
@@ -1367,7 +1408,7 @@ msgstr "Drag to reorder"
#: templates/maker/task_editor.html:384
#: templates/maker/version_history.html:188
#: templates/measure/task_list.html:189
#: templates/measure/task_list.html:192
msgid "misurazioni"
msgstr "measurements"
@@ -1416,7 +1457,7 @@ msgid "LTL"
msgstr "LTL"
#: templates/maker/task_editor.html:569 templates/maker/task_editor.html:714
#: templates/measure/task_complete.html:275
#: templates/measure/task_complete.html:278
msgid "Unita"
msgstr "Unit"
@@ -1633,7 +1674,7 @@ msgid "Misurazione aggiunta"
msgstr "Measurement added"
#: templates/maker/task_editor.html:1668
#: templates/measure/task_execute.html:995
#: templates/measure/task_execute.html:1078
msgid "Errore nel salvataggio della misurazione"
msgstr "Error saving measurement"
@@ -1696,289 +1737,289 @@ msgstr ""
# Measure - Recipe Selection
#: templates/measure/select_recipe.html:2
#: templates/measure/select_recipe.html:73
#: templates/measure/select_recipe.html:77
msgid "Seleziona Ricetta"
msgstr "Select Recipe"
#: templates/measure/select_recipe.html:76
#: templates/measure/select_recipe.html:80
msgid "Scegli la ricetta di misura da eseguire"
msgstr "Choose the measurement recipe to execute"
#: templates/measure/select_recipe.html:79
#: templates/measure/select_recipe.html:83
msgid "Stazione"
msgstr "Station"
#: templates/measure/select_recipe.html:89
#: templates/measure/select_recipe.html:93
msgid "Stazione forzata per collaudo"
msgstr "Station overridden for commissioning"
#: templates/measure/select_recipe.html:89
#: templates/measure/select_recipe.html:93
msgid "configurata"
msgstr "configured"
#: templates/measure/select_recipe.html:94
#: templates/measure/select_recipe.html:98
msgid "Ripristina"
msgstr "Restore"
#: templates/measure/select_recipe.html:119
#: templates/measure/select_recipe.html:123
msgid "Cerca ricetta"
msgstr "Search recipe"
#: templates/measure/select_recipe.html:123
#: templates/measure/select_recipe.html:127
msgid "Nome, codice o descrizione..."
msgstr "Name, code or description..."
#: templates/measure/select_recipe.html:136
#: templates/measure/select_recipe.html:140
msgid "Tracciabilità"
msgstr "Traceability"
#: templates/measure/select_recipe.html:137
#: templates/measure/select_recipe.html:141
msgid "Dati del pezzo da misurare — compila prima di selezionare la ricetta"
msgstr "Data of the part to measure — fill in before selecting the recipe"
#: templates/measure/select_recipe.html:147
#: templates/measure/task_complete.html:281
#: templates/measure/select_recipe.html:151
#: templates/measure/task_complete.html:284
msgid "Numero Lotto"
msgstr "Lot Number"
#: templates/measure/select_recipe.html:151
#: templates/measure/select_recipe.html:155
msgid "Es. LOT-2026-001 (opzionale)"
msgstr "E.g. LOT-2026-001 (optional)"
#: templates/measure/select_recipe.html:161
#: templates/measure/task_complete.html:282
#: templates/measure/select_recipe.html:165
#: templates/measure/task_complete.html:285
msgid "Numero Seriale"
msgstr "Serial Number"
#: templates/measure/select_recipe.html:165
#: templates/measure/select_recipe.html:169
msgid "Es. SN-000123 (opzionale)"
msgstr "E.g. SN-000123 (optional)"
#: templates/measure/select_recipe.html:218
#: templates/measure/select_recipe.html:222
msgid "Nessuna descrizione disponibile"
msgstr "No description available"
#: templates/measure/select_recipe.html:277
#: templates/measure/select_recipe.html:281
msgid "Nessun risultato per"
msgstr "No results for"
#: templates/measure/select_recipe.html:278
#: templates/measure/select_recipe.html:282
msgid "Prova con un termine diverso."
msgstr "Try a different search term."
#: templates/measure/select_recipe.html:281
#: templates/measure/select_recipe.html:285
msgid "Non ci sono ricette disponibili al momento."
msgstr "No recipes available at the moment."
#: templates/measure/select_recipe.html:334
#: templates/measure/select_recipe.html:338
msgid ""
"Inserisci o scansiona il codice della ricetta per selezionarla "
"automaticamente."
msgstr "Enter or scan the recipe code to select it automatically."
#: templates/measure/select_recipe.html:339
#: templates/measure/select_recipe.html:343
msgid "Codice Ricetta"
msgstr "Recipe Code"
#: templates/measure/select_recipe.html:345
#: templates/measure/select_recipe.html:349
msgid "Es. REC-001"
msgstr "E.g. REC-001"
#: templates/measure/select_recipe.html:381
#: templates/measure/select_recipe.html:385
msgid "Cerca"
msgstr "Search"
#: templates/measure/task_complete.html:3
#: templates/measure/task_complete.html:36
#: templates/measure/task_complete.html:39
#: templates/measure/task_execute.html:112
#: templates/measure/task_execute.html:659
#: templates/measure/task_execute.html:718
#: templates/statistics/dashboard.html:139
msgid "Riepilogo"
msgstr "Summary"
#: templates/measure/task_complete.html:44
#: templates/measure/task_execute.html:636
#: templates/measure/task_complete.html:47
#: templates/measure/task_execute.html:695
msgid "Misurazioni Complete"
msgstr "Measurements Complete"
# Measure - Task List
#: templates/measure/task_complete.html:61
#: templates/measure/task_complete.html:293 templates/measure/task_list.html:94
#: templates/measure/task_complete.html:64
#: templates/measure/task_complete.html:296 templates/measure/task_list.html:97
msgid "Lotto"
msgstr "Lot"
#: templates/measure/task_complete.html:67
#: templates/measure/task_complete.html:294
#: templates/measure/task_list.html:106
#: templates/measure/task_complete.html:70
#: templates/measure/task_complete.html:297
#: templates/measure/task_list.html:109
msgid "Seriale"
msgstr "Serial"
#: templates/measure/task_complete.html:86
#: templates/measure/task_complete.html:89
msgid "Totale"
msgstr "Total"
#: templates/measure/task_complete.html:103
#: templates/measure/task_execute.html:644
#: templates/measure/task_complete.html:106
#: templates/measure/task_execute.html:703
msgid "Conformi"
msgstr "Pass"
#: templates/measure/task_complete.html:120
#: templates/measure/task_execute.html:648
#: templates/measure/task_complete.html:123
#: templates/measure/task_execute.html:707
msgid "Attenzione"
msgstr "Warning"
#: templates/measure/task_complete.html:137
#: templates/measure/task_complete.html:140
msgid "Non Conformi"
msgstr "Non-Conforming"
#: templates/measure/task_complete.html:153
#: templates/measure/task_complete.html:156
msgid "Dettaglio Misurazioni"
msgstr "Measurement Details"
#: templates/measure/task_complete.html:160
#: templates/measure/task_complete.html:163
msgid "Esporta CSV"
msgstr "Export CSV"
#: templates/measure/task_complete.html:167
#: templates/measure/task_complete.html:170
msgid "Data/Ora"
msgstr "Date/Time"
#: templates/measure/task_complete.html:171
#: templates/measure/task_complete.html:174
#: templates/statistics/dashboard.html:247
msgid "Valore"
msgstr "Value"
#: templates/measure/task_complete.html:172
#: templates/measure/task_complete.html:175
msgid "Deviazione"
msgstr "Deviation"
#: templates/measure/task_complete.html:173
#: templates/measure/task_complete.html:280
#: templates/measure/task_complete.html:176
#: templates/measure/task_complete.html:283
msgid "Esito"
msgstr "Result"
#: templates/measure/task_complete.html:174
#: templates/measure/task_complete.html:177
msgid "Metodo"
msgstr "Method"
#: templates/measure/task_complete.html:202
#: templates/measure/task_complete.html:205
#: templates/statistics/dashboard.html:147
msgid "Pass"
msgstr "Pass"
#: templates/measure/task_complete.html:204
#: templates/measure/task_complete.html:207
#: templates/statistics/dashboard.html:153
msgid "Warning"
msgstr "Warning"
#: templates/measure/task_complete.html:206
#: templates/measure/task_complete.html:209
#: templates/statistics/dashboard.html:159
msgid "Fail"
msgstr "Fail"
#: templates/measure/task_complete.html:217
#: templates/measure/task_complete.html:220
msgid "Manuale"
msgstr "Manual"
#: templates/measure/task_complete.html:224
#: templates/measure/task_complete.html:227
msgid "Calibro"
msgstr "Caliper"
#: templates/measure/task_complete.html:245 templates/measure/task_list.html:37
#: templates/measure/task_complete.html:248 templates/measure/task_list.html:40
msgid "Seleziona altra ricetta"
msgstr "Select another recipe"
#: templates/measure/task_complete.html:252
#: templates/measure/task_complete.html:255
msgid "Ripeti misurazioni"
msgstr "Repeat Measurements"
# CSV Export i18n
#: templates/measure/task_complete.html:272
#: templates/measure/task_complete.html:275
msgid "Subtask ID"
msgstr "Subtask ID"
#: templates/measure/task_complete.html:273
#: templates/measure/task_complete.html:276
msgid "Nome Sottotask"
msgstr "Subtask Name"
#: templates/measure/task_complete.html:274
#: templates/measure/task_complete.html:277
msgid "Valore Misurato"
msgstr "Measured Value"
#: templates/measure/task_complete.html:276
#: templates/measure/task_complete.html:279
msgid "Valore Nominale"
msgstr "Nominal Value"
#: templates/measure/task_complete.html:277
#: templates/measure/task_complete.html:280
msgid "Tolleranza +"
msgstr "Tolerance +"
#: templates/measure/task_complete.html:278
#: templates/measure/task_complete.html:281
msgid "Tolleranza -"
msgstr "Tolerance -"
#: templates/measure/task_complete.html:279
#: templates/measure/task_complete.html:282
msgid "Scarto"
msgstr "Deviation"
#: templates/measure/task_complete.html:283
#: templates/measure/task_complete.html:286
msgid "Metodo Input"
msgstr "Input Method"
#: templates/measure/task_complete.html:284
#: templates/measure/task_complete.html:287
msgid "Data Misurazione"
msgstr "Measurement Date"
#: templates/measure/task_complete.html:285
#: templates/measure/task_complete.html:288
msgid "Operatore"
msgstr "Operator"
#: templates/measure/task_complete.html:286
#: templates/measure/task_complete.html:289
msgid "RIEPILOGO ESECUZIONE TASK"
msgstr "TASK EXECUTION SUMMARY"
#: templates/measure/task_complete.html:287
#: templates/measure/task_complete.html:290
msgid "Task ID"
msgstr "Task ID"
#: templates/measure/task_complete.html:288
#: templates/measure/task_complete.html:291
msgid "Nome Task"
msgstr "Task Name"
#: templates/measure/task_complete.html:289
#: templates/measure/task_complete.html:292
#: templates/statistics/dashboard.html:27
msgid "Ricetta"
msgstr "Recipe"
#: templates/measure/task_complete.html:290
#: templates/measure/task_complete.html:293
msgid "Data Inizio"
msgstr "Start Date"
#: templates/measure/task_complete.html:291
#: templates/measure/task_complete.html:294
msgid "Data Fine"
msgstr "End Date"
#: templates/measure/task_complete.html:295
#: templates/measure/task_complete.html:298
msgid "STATISTICHE"
msgstr "STATISTICS"
#: templates/measure/task_complete.html:296
#: templates/measure/task_complete.html:299
msgid "Totale Misure"
msgstr "Total Measurements"
#: templates/measure/task_complete.html:297
#: templates/measure/task_complete.html:300
msgid "Passate"
msgstr "Passed"
#: templates/measure/task_complete.html:298
#: templates/measure/task_complete.html:301
msgid "Fallite"
msgstr "Failed"
#: templates/measure/task_complete.html:299
#: templates/measure/task_complete.html:302
msgid "Percentuale Successo"
msgstr "Pass Rate"
#: templates/measure/task_complete.html:300
#: templates/measure/task_complete.html:303
msgid "DETTAGLIO MISURE"
msgstr "MEASUREMENT DETAILS"
@@ -2015,157 +2056,153 @@ msgstr "Measurement"
msgid "Registrata"
msgstr "Recorded"
#: templates/measure/task_execute.html:432
msgid "Prossima misurazione tra"
msgstr "Next measurement in"
#: templates/measure/task_execute.html:437
msgid "Ciclo"
msgstr "Cycle"
#: templates/measure/task_execute.html:456
#: templates/measure/task_execute.html:470
msgid "Task di misura senza quote configurate: la ricetta è incompleta"
msgstr "Measurement task with no quotes configured: the recipe is incomplete"
#: templates/measure/task_execute.html:475
msgid "Linea ferma"
msgstr "Line stopped"
#: templates/measure/task_execute.html:478
#: templates/measure/task_execute.html:494
msgid "Il conto alla rovescia è congelato a"
msgstr "The countdown is frozen at"
#: templates/measure/task_execute.html:480
#: templates/measure/task_execute.html:497
msgid "serve il capoturno per riprendere"
msgstr "the supervisor must authorise the restart"
#: templates/measure/task_execute.html:499
#: templates/measure/task_execute.html:516
msgid "Produzione non registrata sul server"
msgstr "Production not recorded on the server"
#: templates/measure/task_execute.html:520
#: templates/measure/task_execute.html:686
#: templates/measure/task_execute.html:537
#: templates/measure/task_execute.html:746
msgid "Avvio Produzione"
msgstr "Production Start"
#: templates/measure/task_execute.html:524
#: templates/measure/task_execute.html:541
msgid "Invia segnale al gestionale per avviare il timer della linea"
msgstr "Send a signal to the ERP system to start the line timer"
#: templates/measure/task_execute.html:535
#: templates/measure/task_execute.html:552
msgid "Produzione avviata"
msgstr "Production started"
#: templates/measure/task_execute.html:580
#: templates/measure/task_execute.html:597
msgid "Fine ciclo misura"
msgstr "Measurement cycle complete"
#: templates/measure/task_execute.html:590
#: templates/measure/task_execute.html:604
#: templates/measure/task_execute.html:608
msgid "Rimisura"
msgstr "Measure again"
#: templates/measure/task_execute.html:618
#: templates/measure/task_execute.html:632
msgid "Completato"
msgstr "Completed"
#: templates/measure/task_execute.html:638
#: templates/measure/task_execute.html:697
msgid "Tutte le"
msgstr "All"
#: templates/measure/task_execute.html:638
#: templates/measure/task_execute.html:697
msgid "misurazioni sono state registrate."
msgstr "measurements have been recorded."
#: templates/measure/task_execute.html:652
#: templates/measure/task_execute.html:711
msgid "Non Conf."
msgstr "Fail"
#: templates/measure/task_execute.html:666
#: templates/measure/task_execute.html:726
msgid "Conferma ciclo"
msgstr "Confirm cycle"
#: templates/measure/task_execute.html:676
#: templates/measure/task_execute.html:736
msgid "Task successivo"
msgstr "Next task"
#: templates/measure/task_execute.html:716
#: templates/measure/task_execute.html:762
msgid "Girare il pezzo e rimisurare"
msgstr "Turn the piece over and measure again"
#: templates/measure/task_execute.html:788
msgid "Autorizzazione capoturno"
msgstr "Shift supervisor authorization"
#: templates/measure/task_execute.html:725
#: templates/measure/task_execute.html:797
msgid "Username capoturno"
msgstr "Supervisor username"
#: templates/measure/task_execute.html:747
#: templates/measure/task_execute.html:819
msgid "Autorizza"
msgstr "Authorize"
#: templates/measure/task_execute.html:1039
#: templates/measure/task_execute.html:1122
msgid "Errore di rete. Riprovare."
msgstr "Network error. Please retry."
#: templates/measure/task_execute.html:1116
#: templates/measure/task_execute.html:1227
msgid "Errore di comunicazione con il server"
msgstr "Error communicating with the server"
#: templates/measure/task_execute.html:1284
#: templates/measure/task_execute.html:1475
msgid "Misurazione fuori tolleranza"
msgstr "Measurement out of tolerance"
#: templates/measure/task_execute.html:1285
#: templates/measure/task_execute.html:1476
msgid "Fermo linea richiesto"
msgstr "Line stop requested"
#: templates/measure/task_execute.html:1286
#: templates/measure/task_execute.html:1477
msgid "Ripresa della produzione"
msgstr "Resuming production"
#: templates/measure/task_execute.html:1287
#: templates/measure/task_execute.html:1478
msgid "Fine produzione richiesta"
msgstr "End of production requested"
#: templates/measure/task_execute.html:1316
#: templates/measure/task_execute.html:1507
msgid "Credenziali non valide o utente non autorizzato"
msgstr "Invalid credentials or unauthorized user"
#: templates/measure/task_execute.html:1348
#: templates/measure/task_execute.html:1539
msgid "Nessuna produzione aperta su questa stazione"
msgstr "No production open at this station"
#: templates/measure/task_execute.html:1365
#: templates/measure/task_execute.html:1556
msgid "Azione non riuscita"
msgstr "Action failed"
#: templates/measure/task_list.html:84
#: templates/measure/task_list.html:87
msgid "AVVIA"
msgstr "START"
#: templates/measure/task_list.html:121
#: templates/measure/task_list.html:124
msgid "Task da eseguire"
msgstr "Tasks to execute"
#: templates/measure/task_list.html:133
#: templates/measure/task_list.html:136
msgid "misurazioni totali"
msgstr "total measurements"
#: templates/measure/task_list.html:175
#: templates/measure/task_list.html:178
msgid "Confronto profilo"
msgstr "Profile comparison"
#: templates/measure/task_list.html:176
#: templates/measure/task_list.html:179
msgid "Misura camera"
msgstr "Camera measurement"
#: templates/measure/task_list.html:198
#: templates/measure/task_list.html:201
msgid "Allegato"
msgstr "Attachment"
#: templates/measure/task_list.html:222
#: templates/measure/task_list.html:225
msgid "Visualizza Task"
msgstr "View Tasks"
#: templates/measure/task_list.html:245
#: templates/measure/task_list.html:248
msgid "Nessun task disponibile"
msgstr "No tasks available"
#: templates/measure/task_list.html:248
#: templates/measure/task_list.html:251
msgid "Questa ricetta non ha ancora task definiti."
msgstr "This recipe has no tasks defined yet."