pgbus 0.19.4 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +96 -7
  4. data/Rakefile +6 -1
  5. data/app/controllers/pgbus/dashboard_controller.rb +2 -0
  6. data/app/controllers/pgbus/workflow_definitions_controller.rb +28 -0
  7. data/app/controllers/pgbus/workflows_controller.rb +197 -0
  8. data/app/frontend/pgbus/modules/charts.js +130 -4
  9. data/app/frontend/pgbus/modules/charts.min.js +1 -1
  10. data/app/frontend/pgbus/modules/charts.min.js.map +1 -1
  11. data/app/frontend/pgbus/style.css +1 -1
  12. data/app/helpers/pgbus/button_helper.rb +4 -2
  13. data/app/helpers/pgbus/workflow_insights_helper.rb +129 -0
  14. data/app/helpers/pgbus/workflows_helper.rb +165 -0
  15. data/app/models/pgbus/workflow_entry.rb +172 -0
  16. data/app/models/pgbus/workflow_event.rb +43 -0
  17. data/app/models/pgbus/workflow_signal.rb +77 -0
  18. data/app/models/pgbus/workflow_step.rb +142 -0
  19. data/app/views/layouts/pgbus/application.html.erb +2 -0
  20. data/app/views/pgbus/dashboard/_stats_cards.html.erb +17 -0
  21. data/app/views/pgbus/workflows/_actions.html.erb +59 -0
  22. data/app/views/pgbus/workflows/_events_table.html.erb +24 -0
  23. data/app/views/pgbus/workflows/_filters.html.erb +29 -0
  24. data/app/views/pgbus/workflows/_signal_form.html.erb +31 -0
  25. data/app/views/pgbus/workflows/_signals_table.html.erb +40 -0
  26. data/app/views/pgbus/workflows/_status_filter.html.erb +12 -0
  27. data/app/views/pgbus/workflows/_steps_table.html.erb +79 -0
  28. data/app/views/pgbus/workflows/_timeline.html.erb +39 -0
  29. data/app/views/pgbus/workflows/_workflows_table.html.erb +59 -0
  30. data/app/views/pgbus/workflows/attention.html.erb +88 -0
  31. data/app/views/pgbus/workflows/definitions/_by_revision.html.erb +52 -0
  32. data/app/views/pgbus/workflows/definitions/_duration_table.html.erb +18 -0
  33. data/app/views/pgbus/workflows/definitions/_funnel.html.erb +49 -0
  34. data/app/views/pgbus/workflows/definitions/_pipeline.html.erb +16 -0
  35. data/app/views/pgbus/workflows/definitions/_step_card.html.erb +31 -0
  36. data/app/views/pgbus/workflows/definitions/_throughput_table.html.erb +32 -0
  37. data/app/views/pgbus/workflows/definitions/_window.html.erb +17 -0
  38. data/app/views/pgbus/workflows/definitions/index.html.erb +71 -0
  39. data/app/views/pgbus/workflows/definitions/not_found.html.erb +5 -0
  40. data/app/views/pgbus/workflows/definitions/show.html.erb +80 -0
  41. data/app/views/pgbus/workflows/index.html.erb +15 -0
  42. data/app/views/pgbus/workflows/not_found.html.erb +5 -0
  43. data/app/views/pgbus/workflows/show.html.erb +93 -0
  44. data/config/i18n-tasks.yml +6 -0
  45. data/config/locales/da.yml +442 -0
  46. data/config/locales/de.yml +442 -0
  47. data/config/locales/en.yml +442 -0
  48. data/config/locales/es.yml +442 -0
  49. data/config/locales/fi.yml +442 -0
  50. data/config/locales/fr.yml +442 -0
  51. data/config/locales/it.yml +442 -0
  52. data/config/locales/ja.yml +442 -0
  53. data/config/locales/nb.yml +442 -0
  54. data/config/locales/nl.yml +442 -0
  55. data/config/locales/pt.yml +442 -0
  56. data/config/locales/sv.yml +442 -0
  57. data/config/routes.rb +26 -0
  58. data/lib/generators/pgbus/add_workflow_signals_generator.rb +56 -0
  59. data/lib/generators/pgbus/add_workflows_generator.rb +54 -0
  60. data/lib/generators/pgbus/templates/add_workflow_signals.rb.erb +51 -0
  61. data/lib/generators/pgbus/templates/add_workflows.rb.erb +150 -0
  62. data/lib/generators/pgbus/templates/migration.rb.erb +127 -0
  63. data/lib/pgbus/active_job/delivery.rb +49 -0
  64. data/lib/pgbus/active_job/executor.rb +3 -1
  65. data/lib/pgbus/configuration/workflow_settings.rb +99 -0
  66. data/lib/pgbus/configuration.rb +21 -3
  67. data/lib/pgbus/generators/migration_detector.rb +40 -0
  68. data/lib/pgbus/instrumentation.rb +32 -0
  69. data/lib/pgbus/integrations/appsignal/dashboard.json +128 -1
  70. data/lib/pgbus/integrations/appsignal/subscriber.rb +16 -1
  71. data/lib/pgbus/mcp/rack_app.rb +7 -2
  72. data/lib/pgbus/mcp/runner.rb +2 -1
  73. data/lib/pgbus/mcp/serialization.rb +25 -0
  74. data/lib/pgbus/mcp/server.rb +53 -10
  75. data/lib/pgbus/mcp/tools/deploy_tasks_tool.rb +1 -10
  76. data/lib/pgbus/mcp/tools/workflow_cancel_tool.rb +23 -0
  77. data/lib/pgbus/mcp/tools/workflow_definitions_tool.rb +36 -0
  78. data/lib/pgbus/mcp/tools/workflow_detail_tool.rb +38 -0
  79. data/lib/pgbus/mcp/tools/workflow_resume_at_tool.rb +32 -0
  80. data/lib/pgbus/mcp/tools/workflow_resume_tool.rb +24 -0
  81. data/lib/pgbus/mcp/tools/workflow_run_now_tool.rb +23 -0
  82. data/lib/pgbus/mcp/tools/workflow_signal_tool.rb +77 -0
  83. data/lib/pgbus/mcp/tools/workflow_skip_step_tool.rb +23 -0
  84. data/lib/pgbus/mcp/tools/workflow_stats_tool.rb +42 -0
  85. data/lib/pgbus/mcp/tools/workflows_attention_tool.rb +42 -0
  86. data/lib/pgbus/mcp/tools/workflows_tool.rb +60 -0
  87. data/lib/pgbus/mcp/workflow_insights_payload.rb +15 -0
  88. data/lib/pgbus/mcp/workflow_payloads.rb +53 -0
  89. data/lib/pgbus/mcp/write_tool.rb +134 -0
  90. data/lib/pgbus/mcp.rb +15 -0
  91. data/lib/pgbus/metrics/backends/statsd.rb +6 -0
  92. data/lib/pgbus/metrics/subscriber.rb +14 -1
  93. data/lib/pgbus/metrics/workflow_metrics.rb +65 -0
  94. data/lib/pgbus/process/dispatcher.rb +26 -0
  95. data/lib/pgbus/version.rb +1 -1
  96. data/lib/pgbus/web/data_source/workflow_actions.rb +109 -0
  97. data/lib/pgbus/web/data_source/workflow_insights.rb +99 -0
  98. data/lib/pgbus/web/data_source/workflow_list.rb +248 -0
  99. data/lib/pgbus/web/data_source.rb +3 -0
  100. data/lib/pgbus/web/workflow_action_plan.rb +62 -0
  101. data/lib/pgbus/web/workflow_insights_queries.rb +250 -0
  102. data/lib/pgbus/web/workflow_insights_report.rb +171 -0
  103. data/lib/pgbus/web/workflow_payload.rb +36 -0
  104. data/lib/pgbus/web/workflow_query.rb +82 -0
  105. data/lib/pgbus/web/workflow_state.rb +76 -0
  106. data/lib/pgbus/web/workflow_timeline.rb +113 -0
  107. data/lib/pgbus/web/workflow_window.rb +51 -0
  108. data/lib/pgbus/workflow/batch_finished_job.rb +21 -0
  109. data/lib/pgbus/workflow/dsl.rb +105 -0
  110. data/lib/pgbus/workflow/error_capture.rb +63 -0
  111. data/lib/pgbus/workflow/exception_policy.rb +170 -0
  112. data/lib/pgbus/workflow/fan_out.rb +157 -0
  113. data/lib/pgbus/workflow/fan_out_definition.rb +41 -0
  114. data/lib/pgbus/workflow/flow_control.rb +94 -0
  115. data/lib/pgbus/workflow/instance.rb +183 -0
  116. data/lib/pgbus/workflow/outside_verbs.rb +138 -0
  117. data/lib/pgbus/workflow/payload.rb +53 -0
  118. data/lib/pgbus/workflow/registry.rb +53 -0
  119. data/lib/pgbus/workflow/removed_step.rb +14 -0
  120. data/lib/pgbus/workflow/runner.rb +218 -0
  121. data/lib/pgbus/workflow/signal_matcher.rb +53 -0
  122. data/lib/pgbus/workflow/signals.rb +132 -0
  123. data/lib/pgbus/workflow/states.rb +119 -0
  124. data/lib/pgbus/workflow/step_context.rb +58 -0
  125. data/lib/pgbus/workflow/step_definition.rb +131 -0
  126. data/lib/pgbus/workflow/step_execution.rb +242 -0
  127. data/lib/pgbus/workflow/step_job.rb +28 -0
  128. data/lib/pgbus/workflow/step_outcome.rb +151 -0
  129. data/lib/pgbus/workflow/steps.rb +103 -0
  130. data/lib/pgbus/workflow/sweep.rb +156 -0
  131. data/lib/pgbus/workflow/test_helpers.rb +152 -0
  132. data/lib/pgbus/workflow/wait_timeout.rb +73 -0
  133. data/lib/pgbus/workflow/waiting.rb +82 -0
  134. data/lib/pgbus/workflow.rb +183 -0
  135. data/sig/pgbus/configuration.rbs +22 -0
  136. metadata +92 -1
@@ -140,6 +140,11 @@ it:
140
140
  throughput: Throughput
141
141
  throughput_detail: lavori/min negli ultimi %{minutes} min
142
142
  throughput_unavailable: richiede le statistiche dei job (rails g pgbus:add_job_stats)
143
+ workflows: Workflow
144
+ workflows_attention:
145
+ one: "%{count} richiede attenzione"
146
+ other: "%{count} richiedono attenzione"
147
+ workflows_detail: in corso (%{paused} in pausa)
143
148
  verdict:
144
149
  links:
145
150
  dlq: Dead letter
@@ -723,6 +728,7 @@ it:
723
728
  processes: Processi
724
729
  queues: Code
725
730
  recurring: Ricorrente
731
+ workflows: Workflow
726
732
  return_to_app: Torna all'app
727
733
  title: Cruscotto Pgbus
728
734
  toggle_dark_mode: Attiva/disattiva modalità scura
@@ -1023,3 +1029,439 @@ it:
1023
1029
  disabled: Attività disabilitata
1024
1030
  enabled: Attività abilitata
1025
1031
  failed: Impossibile cambiare lo stato dell'attività
1032
+ workflow_insights:
1033
+ back_to_classes: Tutte le classi di workflow
1034
+ back_to_runs: Tutte le esecuzioni dei workflow
1035
+ bad_request: 'Richiesta non valida: %{reason}'
1036
+ capped: 'Limitato a workflow_retention (%{retention}): le esecuzioni terminate e annullate più vecchie vengono eliminate.'
1037
+ few_samples:
1038
+ one: n=%{count}, pochi campioni
1039
+ other: n=%{count}, pochi campioni
1040
+ index:
1041
+ description: 'Come è andata ogni classe di workflow in %{window}: le esecuzioni in corso, quelle terminate e quanto dura un''esecuzione dall''inizio alla fine.'
1042
+ empty_hint: 'Definisci una sottoclasse di Pgbus::Workflow e avvia un''esecuzione: YourWorkflow.start!(subject, **arguments).'
1043
+ empty_title: Nessuna classe di workflow è ancora stata eseguita.
1044
+ headers:
1045
+ attention: Richiedono attenzione
1046
+ cancelled: Annullate
1047
+ duration_p50: Durata p50
1048
+ duration_p95: Durata p95
1049
+ finished: Terminate
1050
+ ongoing: In corso
1051
+ paused: In pausa
1052
+ workflow_class: Classe di workflow
1053
+ title: Analisi dei workflow
1054
+ links:
1055
+ at_step: "%{status} esecuzioni a %{step}"
1056
+ attention: esecuzioni di %{workflow} che richiedono attenzione
1057
+ cancelled: esecuzioni di %{workflow} annullate nella finestra
1058
+ cancelled_bucket: esecuzioni annullate in questo periodo
1059
+ finished: esecuzioni di %{workflow} terminate nella finestra
1060
+ finished_bucket: esecuzioni terminate in questo periodo
1061
+ ongoing: esecuzioni in corso di %{workflow}
1062
+ paused: esecuzioni in pausa di %{workflow}
1063
+ started: esecuzioni di %{workflow} avviate nella finestra
1064
+ started_bucket: esecuzioni avviate in questo periodo
1065
+ not_found:
1066
+ hint: Nessuna sottoclasse di Pgbus::Workflow e nessuna esecuzione si chiama %{workflow} (oppure la lettura è fallita, vedi il log).
1067
+ title: Classe di workflow sconosciuta
1068
+ not_loaded: Definizione non caricata
1069
+ not_loaded_hint: 'Questa classe non si carica più nell''app: i suoi passi vengono dalle righe delle sue esecuzioni, nell''ordine in cui le esecuzioni li hanno raggiunti.'
1070
+ percentile: "%{name} %{value}"
1071
+ removed_in_flight:
1072
+ one: "%{count} esecuzione sul passo rimosso %{step}"
1073
+ other: "%{count} esecuzioni sul passo rimosso %{step}"
1074
+ show:
1075
+ by_revision:
1076
+ all_steps: Tutti i passi
1077
+ caption: 'Gli stessi numeri per le ultime cinque revisioni dell''app che hanno terminato un tentativo nella finestra, dalla più recente: una regressione dopo un deploy appare come una riga.'
1078
+ empty: Nessun tentativo in questa finestra ha registrato una revisione dell'app (config.app_revision).
1079
+ headers:
1080
+ attempts: Tentativi
1081
+ failed: Falliti
1082
+ reattempted: Ritentati
1083
+ revision: Revisione
1084
+ run_time: Tempo di esecuzione
1085
+ skipped: Saltati
1086
+ step: Passo
1087
+ seen_html: vista da %{from} a %{to}
1088
+ title: Per revisione dell'app
1089
+ worse: in aumento da %{rate} su %{revision}
1090
+ charts:
1091
+ durations:
1092
+ between: "%{from}–%{to}"
1093
+ caption:
1094
+ one: Quanto è durata la %{count} esecuzione terminata nella finestra, dall'inizio alla fine.
1095
+ other: Quanto sono durate le %{count} esecuzioni terminate nella finestra, dall'inizio alla fine.
1096
+ headers:
1097
+ range: Durata
1098
+ runs: Esecuzioni
1099
+ over: "%{from} o più"
1100
+ title: Durata dall'inizio alla fine
1101
+ under: meno di %{to}
1102
+ series:
1103
+ cancelled: Annullate
1104
+ finished: Terminate
1105
+ runs: Esecuzioni
1106
+ started: Avviate
1107
+ throughput:
1108
+ caption: 'Esecuzioni avviate, terminate e annullate per %{bucket} in %{window}: %{started} avviate, %{finished} terminate, %{cancelled} annullate.'
1109
+ headers:
1110
+ cancelled: Annullate
1111
+ finished: Terminate
1112
+ from: Da
1113
+ started: Avviate
1114
+ title: Esecuzioni per %{bucket}
1115
+ description: 'In %{window}: dove sono ora le sue esecuzioni, come si comporta ogni passo e dove si fermano le esecuzioni.'
1116
+ funnel:
1117
+ caption:
1118
+ one: 'Della %{count} esecuzione avviata nella finestra: quante hanno raggiunto ogni passo e dove si trova ora.'
1119
+ other: 'Delle %{count} esecuzioni avviate nella finestra: quante hanno raggiunto ogni passo e dove si trova ora ciascuna.'
1120
+ empty: Nessuna esecuzione avviata in questa finestra.
1121
+ headers:
1122
+ now_here: Ora a questo passo
1123
+ reached: Raggiunto
1124
+ share: Delle avviate
1125
+ step: Passo
1126
+ here:
1127
+ cancelled:
1128
+ one: "%{count} annullata"
1129
+ other: "%{count} annullate"
1130
+ finished:
1131
+ one: "%{count} terminata"
1132
+ other: "%{count} terminate"
1133
+ paused:
1134
+ one: "%{count} in pausa"
1135
+ other: "%{count} in pausa"
1136
+ performing:
1137
+ one: "%{count} in esecuzione"
1138
+ other: "%{count} in esecuzione"
1139
+ ready:
1140
+ one: "%{count} pianificata"
1141
+ other: "%{count} pianificate"
1142
+ waiting:
1143
+ one: "%{count} in attesa"
1144
+ other: "%{count} in attesa"
1145
+ title: Imbuto
1146
+ pipeline:
1147
+ attempts:
1148
+ one: "%{count} tentativo"
1149
+ other: "%{count} tentativi"
1150
+ caption: 'Ogni passo in ordine: le esecuzioni ferme lì ora e come sono andati i suoi tentativi terminati nella finestra.'
1151
+ empty: 'Ancora nessun passo: nessuna esecuzione di questa classe ha un passo nella finestra e nessuna è in corso.'
1152
+ failed: Falliti
1153
+ kinds:
1154
+ fan_out: Fan-out
1155
+ removed: Rimosso
1156
+ signal: Attende un segnale
1157
+ undeclared: Non nella definizione
1158
+ live:
1159
+ paused: In pausa
1160
+ performing: In esecuzione
1161
+ ready: Pianificate
1162
+ waiting: In attesa
1163
+ now_label: Esecuzioni a questo passo ora
1164
+ pickup: Presa in carico
1165
+ reattempted: Ritentati
1166
+ run_time: Tempo di esecuzione
1167
+ skipped: Saltati
1168
+ step_link: Esecuzioni in corso a %{step}
1169
+ title: Pipeline
1170
+ window_label: Tentativi terminati nella finestra
1171
+ summary:
1172
+ attention: Richiedono attenzione
1173
+ cancelled: Annullate
1174
+ duration: Durata p50
1175
+ finished: Terminate
1176
+ ongoing: In corso
1177
+ started: Avviate
1178
+ window_label: Finestra temporale
1179
+ windows:
1180
+ 1h: l'ultima ora
1181
+ 24h: le ultime 24 ore
1182
+ 30d: gli ultimi 30 giorni
1183
+ 7d: gli ultimi 7 giorni
1184
+ workflows:
1185
+ actions:
1186
+ bulk_cancel: Annulla tutti
1187
+ bulk_resume: Riprendi tutti
1188
+ cancel: Annulla
1189
+ rerun: Riesegui
1190
+ resume: Riprendi
1191
+ resume_at: Riprendi dal passaggio
1192
+ run_now: Esegui ora
1193
+ signal: Invia segnale
1194
+ skip_step: Salta passaggio
1195
+ attempt: tentativo %{attempt}
1196
+ attention:
1197
+ at_step_html: a %{step}
1198
+ back: "← Workflow"
1199
+ cancel_all:
1200
+ one: Annulla %{count}
1201
+ other: Annulla tutte (%{count})
1202
+ confirm:
1203
+ cancel:
1204
+ one: Annullare l'esecuzione bloccata a %{step}?
1205
+ other: Annullare tutte le %{count} esecuzioni bloccate a %{step}?
1206
+ cancel_error:
1207
+ one: Annullare l'esecuzione bloccata a %{step} per %{error}?
1208
+ other: Annullare tutte le %{count} esecuzioni bloccate a %{step} per %{error}?
1209
+ resume:
1210
+ one: Riprendere l'esecuzione in pausa a %{step}?
1211
+ other: Riprendere tutte le %{count} esecuzioni in pausa a %{step}?
1212
+ resume_error:
1213
+ one: Riprendere l'esecuzione in pausa a %{step} per %{error}?
1214
+ other: Riprendere tutte le %{count} esecuzioni in pausa a %{step} per %{error}?
1215
+ description: Esecuzioni in corso che attendono una persona, raggruppate in base a ciò che le ha fermate. Una volta risolta la causa, agisci sull'intero gruppo.
1216
+ empty_hint: Nessuna esecuzione in corso è in pausa, in stallo, in ritardo o in attesa oltre workflow_waiting_visibility_threshold.
1217
+ empty_title: Niente richiede attenzione.
1218
+ first_seen_html: prima volta %{time}
1219
+ headers:
1220
+ actions: Azioni
1221
+ reason: Motivo
1222
+ runs: Esecuzioni
1223
+ seen: Visto
1224
+ workflow: Workflow
1225
+ last_seen_html: ultima volta %{time}
1226
+ only_class_html: Solo %{workflow}.
1227
+ reasons:
1228
+ overdue: 'In ritardo: prevista, ma non presa'
1229
+ paused_error: In pausa per un errore
1230
+ paused_manual: Messa in pausa a mano
1231
+ stalled: 'In stallo: il suo worker ha smesso di rispondere'
1232
+ waiting_overdue: Attesa troppo lunga
1233
+ resume_all:
1234
+ one: Riprendi %{count}
1235
+ other: Riprendi tutte (%{count})
1236
+ show_all: Mostra tutte le classi
1237
+ show_runs: Mostra esecuzioni
1238
+ title: Richiedono attenzione
1239
+ audit:
1240
+ by: "%{event} da %{actor}"
1241
+ empty: Nessun evento registrato.
1242
+ headers:
1243
+ what: Cosa è successo
1244
+ when: Quando
1245
+ title: Registro di audit
1246
+ with_reason: "%{sentence}: %{reason}"
1247
+ with_step: "%{sentence} (%{step} #%{attempt})"
1248
+ bad_request: 'Richiesta non valida: %{reason}'
1249
+ confirm:
1250
+ cancel: Annullare questo workflow? I suoi passaggi aperti vengono annullati e non verrà più eseguito.
1251
+ rerun: Avviare di nuovo questo workflow come nuova esecuzione, con lo stesso soggetto e gli stessi argomenti?
1252
+ resume: Riprendere questo workflow?
1253
+ resume_at: Riprendere questo workflow dal passaggio scelto? I suoi passaggi aperti vengono prima annullati.
1254
+ run_now: Eseguire ora il passaggio pianificato invece di attendere?
1255
+ signal: Inviare questo segnale al workflow?
1256
+ skip_step: Saltare il passaggio atteso da questo workflow e passare al successivo?
1257
+ events:
1258
+ cancelled: Annullato
1259
+ fan_out_finished: Fan-out terminato
1260
+ fan_out_opened: Fan-out aperto
1261
+ finished: Terminato
1262
+ late_completion_ignored: Completamento tardivo ignorato
1263
+ paused: In pausa
1264
+ rerun: Rieseguito
1265
+ rescheduled: Ripianificato
1266
+ resumed: Ripreso
1267
+ run_now: Esegui ora
1268
+ signal_claimed: Segnale preso in carico
1269
+ signal_received: Segnale ricevuto
1270
+ stall_detected: Stallo rilevato
1271
+ started: Avviato
1272
+ step_completed: Passaggio completato
1273
+ step_failed: Passaggio fallito
1274
+ step_reattempted: Passaggio ritentato
1275
+ step_scheduled: Passaggio pianificato
1276
+ step_skipped: Passaggio saltato
1277
+ step_started: Passaggio avviato
1278
+ step_waiting: Passaggio in attesa
1279
+ wait_timed_out: Attesa scaduta
1280
+ filters:
1281
+ apply: Applica filtri
1282
+ clear: Cancella
1283
+ created_from: Creato dal
1284
+ created_to: Creato fino al
1285
+ ended_from: Terminato dal
1286
+ ended_to: Terminato fino al
1287
+ error_class: Classe di errore
1288
+ step: Passaggio corrente
1289
+ subject_id: ID del soggetto
1290
+ subject_type: Tipo di soggetto
1291
+ workflow_class: Classe del workflow
1292
+ workflow_id: ID del workflow
1293
+ flash:
1294
+ bad_group: Quel gruppo non è valido.
1295
+ bulk_cancel:
1296
+ one: "%{count} annullato."
1297
+ other: "%{count} annullati."
1298
+ bulk_cancel_skipped: "%{count} annullati; %{skipped} erano già andati avanti."
1299
+ bulk_failed: 'Impossibile modificarne %{count}: %{reason}'
1300
+ bulk_more: 'Potrebbero esserci altre esecuzioni in attesa: premi di nuovo per le prossime %{cap}.'
1301
+ bulk_resume:
1302
+ one: "%{count} ripreso."
1303
+ other: "%{count} ripresi."
1304
+ bulk_resume_skipped: "%{count} ripresi; %{skipped} erano già andati avanti."
1305
+ cancel: Workflow annullato.
1306
+ choose_step: Scegli un passaggio da cui riprendere.
1307
+ failed:
1308
+ not_allowed: 'Non eseguito: l''esecuzione è ora %{status}.'
1309
+ not_found: Quel workflow non esiste più.
1310
+ other: "%{action} non riuscito: %{reason}"
1311
+ payload_not_object: 'Non inviato: il payload non è un oggetto JSON.'
1312
+ payload_too_large: 'Non inviato: il payload supera %{limit} byte.'
1313
+ rerun: Avviata una nuova esecuzione.
1314
+ resume: Workflow ripreso.
1315
+ resume_at: Workflow ripreso da %{step}.
1316
+ run_now: Il passaggio pianificato viene eseguito ora.
1317
+ signal: Segnale %{name} inviato.
1318
+ signal_duplicate: Il segnale %{name} è già stato consegnato con questa chiave; non è stato inviato nulla di nuovo.
1319
+ signal_name_missing: 'Non inviato: il segnale ha bisogno di un nome.'
1320
+ skip_step: Passaggio saltato.
1321
+ headers:
1322
+ current_step: Passaggio corrente
1323
+ last_activity: Ultima attività
1324
+ started: Avviato
1325
+ status: Stato
1326
+ subject: Soggetto
1327
+ workflow: Workflow
1328
+ index:
1329
+ attention_link:
1330
+ one: Richiede attenzione (%{count})
1331
+ other: Richiedono attenzione (%{count})
1332
+ description: 'Esecuzioni durevoli in più passaggi: cosa sta facendo ciascuna e cosa succede dopo.'
1333
+ empty_hint: Scegli un altro stato o cancella i filtri. Un'esecuzione parte con YourWorkflow.start!(subject, **arguments).
1334
+ empty_title: Nessun workflow corrisponde.
1335
+ insights_link: Analisi per classe
1336
+ status_label: Filtra per stato
1337
+ title: Workflow
1338
+ next:
1339
+ cancelled_html: Annullato %{ago}.
1340
+ due_html: 'Pronto: %{step} era previsto %{ago} e attende un worker.'
1341
+ finished_html: Terminato %{ago}.
1342
+ overdue_html: 'In ritardo: %{step} era previsto %{ago}; la scansione lo invia di nuovo.'
1343
+ paused_error_html: 'In pausa su %{step}: %{error} — riprendi o annulla.'
1344
+ paused_manual_html: In pausa su %{step} — riprendi o annulla.
1345
+ performing_attempt_html: Esecuzione di %{step} (tentativo %{attempt}).
1346
+ performing_html: Esecuzione di %{step}.
1347
+ ready_html: 'Pronto: %{step} viene eseguito subito dopo.'
1348
+ scheduled_html: 'Pianificato: %{step} viene eseguito %{time}.'
1349
+ unknown_html: 'Stato: %{status}.'
1350
+ waiting_batch_html: In attesa del lotto %{batch} (%{done} lavori su %{total} completati).
1351
+ waiting_signal_html: In attesa del segnale %{signal} da %{ago}.
1352
+ waiting_signal_timeout_html: In attesa del segnale %{signal} da %{ago}. L'attesa scade %{time}.
1353
+ waiting_step_html: In attesa di %{step}.
1354
+ not_found:
1355
+ hint: Potrebbe essere terminato e rimosso dopo workflow_retention, oppure non è stato possibile leggere il database (vedi il log).
1356
+ title: Workflow non trovato
1357
+ outcomes:
1358
+ cancelled: annullato
1359
+ completed: completato
1360
+ finished_early: ha terminato l'esecuzione in anticipo
1361
+ paused: ha messo in pausa l'esecuzione
1362
+ reattempted: ritentato
1363
+ skipped: saltato
1364
+ resume:
1365
+ carry_on: 'Riprendi: prosegui con %{step}'
1366
+ continue: 'Riprendi: continua con %{step}'
1367
+ finish: 'Riprendi: termina l''esecuzione'
1368
+ resend: 'Riprendi: invia di nuovo %{step}'
1369
+ retry: 'Riprendi: riprova %{step}'
1370
+ rewait: 'Riprendi: attendi di nuovo %{step}'
1371
+ show:
1372
+ actions: Azioni
1373
+ arguments: Argomenti
1374
+ back: "← Workflow"
1375
+ cancelled_at: Annullato
1376
+ class_missing: "%{workflow_class} non è caricato in questo processo: l'esecuzione può ancora essere annullata, ma non ripresa."
1377
+ definition_outdated: 'Questa esecuzione è partita con una definizione precedente di %{workflow_class}: da allora i suoi passaggi sono cambiati.'
1378
+ details: Dettagli
1379
+ finished_at: Terminato
1380
+ no_arguments: Questa esecuzione non ha argomenti.
1381
+ paused_at: In pausa
1382
+ reason_hint: Registrato nel registro di audit, insieme a chi l'ha fatto.
1383
+ reason_label: Motivo (facoltativo)
1384
+ rerun_of: Riesecuzione di
1385
+ reruns: Rieseguito come
1386
+ resume_at_label: Passaggio da cui riprendere
1387
+ signal:
1388
+ hint: Un passaggio che lo attende si risveglia subito; altrimenti resta in sospeso finché un passaggio lo prende.
1389
+ name: Nome del segnale
1390
+ payload: Payload (JSON)
1391
+ send: Invia segnale
1392
+ title: Invia un segnale
1393
+ signal_statuses:
1394
+ claimed: Presa in carico
1395
+ consumed: Consumato
1396
+ pending: In sospeso
1397
+ signals:
1398
+ empty: Nessun segnale consegnato a questa esecuzione.
1399
+ headers:
1400
+ claimed: Preso in carico
1401
+ consumed: Consumato
1402
+ idempotency_key: Chiave di idempotenza
1403
+ name: Segnale
1404
+ received: Ricevuto
1405
+ status: Stato
1406
+ payload: Payload
1407
+ title: Segnali
1408
+ statuses:
1409
+ cancelled: Annullato
1410
+ finished: Terminato
1411
+ gone: scomparso
1412
+ paused: In pausa
1413
+ performing: In esecuzione
1414
+ ready: Pronto
1415
+ scheduled: Pianificato
1416
+ waiting: In attesa
1417
+ step_statuses:
1418
+ cancelled: Annullato
1419
+ completed: Completato
1420
+ failed: Fallito
1421
+ in_progress: In esecuzione
1422
+ scheduled: Pianificato
1423
+ skipped: Saltato
1424
+ waiting: In attesa
1425
+ steps:
1426
+ batch: lotto %{batch}
1427
+ caused_by: Causato da %{error}
1428
+ empty: Ancora nessun tentativo.
1429
+ headers:
1430
+ finished: Terminato
1431
+ queued: In coda
1432
+ ran: Esecuzione
1433
+ scheduled: Pianificato
1434
+ started: Avviato
1435
+ status: Stato
1436
+ step: Passaggio
1437
+ waited: Attesa
1438
+ worker: Worker
1439
+ revision: revisione %{revision}
1440
+ show_backtrace: Mostra backtrace
1441
+ title: Tentativi
1442
+ waiting_for: poi in attesa per %{duration}
1443
+ waits_for_html: attende %{signal}
1444
+ tabs:
1445
+ all: Tutti
1446
+ cancelled: Annullati
1447
+ finished: Terminati
1448
+ ongoing: In corso
1449
+ paused: In pausa
1450
+ performing: In esecuzione
1451
+ ready: Pronti
1452
+ waiting: In attesa
1453
+ timeline:
1454
+ caption: 'Ogni tentativo, il più vecchio in alto: atteso (la sua attesa), in coda (previsto, non ancora preso), eseguito (colorato in base a come è finito) e in attesa (di un segnale o del suo lotto), con le pause su una riga a parte. La tabella dei tentativi qui sotto riporta le stesse durate.'
1455
+ empty: Ancora nessun tentativo.
1456
+ paused_period_html: In pausa dalle %{from} per %{duration}
1457
+ paused_row: In pausa
1458
+ series:
1459
+ paused: In pausa
1460
+ queued: In coda
1461
+ ran_cancelled: Eseguito, annullato
1462
+ ran_failed: Eseguito, fallito
1463
+ ran_ok: Eseguito
1464
+ ran_open: In esecuzione
1465
+ waited: Atteso
1466
+ waiting: In attesa
1467
+ title: Cronologia