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 @@ fi:
140
140
  throughput: Läpäisykyky
141
141
  throughput_detail: tehtäviä/min viimeisen %{minutes} min aikana
142
142
  throughput_unavailable: vaatii työtilastot (rails g pgbus:add_job_stats)
143
+ workflows: Työnkulut
144
+ workflows_attention:
145
+ one: "%{count} vaatii huomiota"
146
+ other: "%{count} vaatii huomiota"
147
+ workflows_detail: käynnissä (%{paused} keskeytetty)
143
148
  verdict:
144
149
  links:
145
150
  dlq: Dead letterit
@@ -723,6 +728,7 @@ fi:
723
728
  processes: Prosessit
724
729
  queues: Jonot
725
730
  recurring: Toistuva
731
+ workflows: Työnkulut
726
732
  return_to_app: Takaisin sovellukseen
727
733
  title: Pgbus-hallintapaneeli
728
734
  toggle_dark_mode: Vaihda tumma tila
@@ -1023,3 +1029,439 @@ fi:
1023
1029
  disabled: Tehtävä poistettu käytöstä
1024
1030
  enabled: Tehtävä otettu käyttöön
1025
1031
  failed: Tehtävän vaihto epäonnistui
1032
+ workflow_insights:
1033
+ back_to_classes: Kaikki työnkulkuluokat
1034
+ back_to_runs: Kaikki työnkulkujen ajot
1035
+ bad_request: 'Virheellinen pyyntö: %{reason}'
1036
+ capped: 'Rajattu workflow_retention-arvoon (%{retention}): tätä vanhemmat valmistuneet ja perutut ajot poistetaan.'
1037
+ few_samples:
1038
+ one: n=%{count}, vähän näytteitä
1039
+ other: n=%{count}, vähän näytteitä
1040
+ index:
1041
+ description: 'Miten kukin työnkulkuluokka on toiminut %{window}: nyt käynnissä olevat ajot, päättyneet ajot ja kuinka kauan ajo kestää alusta loppuun.'
1042
+ empty_hint: 'Määrittele Pgbus::Workflow-aliluokka ja käynnistä ajo: YourWorkflow.start!(subject, **arguments).'
1043
+ empty_title: Yhtään työnkulkuluokkaa ei ole vielä ajettu.
1044
+ headers:
1045
+ attention: Vaatii toimia
1046
+ cancelled: Peruttu
1047
+ duration_p50: Kesto p50
1048
+ duration_p95: Kesto p95
1049
+ finished: Valmistunut
1050
+ ongoing: Käynnissä
1051
+ paused: Keskeytetty
1052
+ workflow_class: Työnkulkuluokka
1053
+ title: Työnkulkujen näkymä
1054
+ links:
1055
+ at_step: "%{status} ajot vaiheessa %{step}"
1056
+ attention: luokan %{workflow} toimenpiteitä vaativat ajot
1057
+ cancelled: luokan %{workflow} ikkunassa perutut ajot
1058
+ cancelled_bucket: jaksolla perutut ajot
1059
+ finished: luokan %{workflow} ikkunassa valmistuneet ajot
1060
+ finished_bucket: jaksolla valmistuneet ajot
1061
+ ongoing: luokan %{workflow} käynnissä olevat ajot
1062
+ paused: luokan %{workflow} keskeytetyt ajot
1063
+ started: luokan %{workflow} ikkunassa alkaneet ajot
1064
+ started_bucket: jaksolla alkaneet ajot
1065
+ not_found:
1066
+ hint: Pgbus::Workflow-aliluokkaa tai ajoa nimeltä %{workflow} ei ole (tai lukeminen epäonnistui, katso loki).
1067
+ title: Tuntematon työnkulkuluokka
1068
+ not_loaded: Määrittelyä ei ole ladattu
1069
+ not_loaded_hint: 'Luokka ei enää lataudu sovelluksessa: vaiheet tulevat ajojen riveiltä siinä järjestyksessä, jossa ajot saavuttivat ne.'
1070
+ percentile: "%{name} %{value}"
1071
+ removed_in_flight:
1072
+ one: "%{count} ajo poistetussa vaiheessa %{step}"
1073
+ other: "%{count} ajoa poistetussa vaiheessa %{step}"
1074
+ show:
1075
+ by_revision:
1076
+ all_steps: Kaikki vaiheet
1077
+ caption: 'Samat luvut viidelle viimeisimmälle sovellusversiolle, jotka päättivät yrityksen ikkunassa, uusin ensin: heikkeneminen julkaisun jälkeen näkyy rivinä.'
1078
+ empty: Yksikään yritys tässä ikkunassa ei tallentanut sovellusversiota (config.app_revision).
1079
+ headers:
1080
+ attempts: Yritykset
1081
+ failed: Epäonnistui
1082
+ reattempted: Yritetty uudelleen
1083
+ revision: Versio
1084
+ run_time: Ajoaika
1085
+ skipped: Ohitettu
1086
+ step: Vaihe
1087
+ seen_html: nähty %{from} – %{to}
1088
+ title: Sovellusversioittain
1089
+ worse: nousua arvosta %{rate} versiossa %{revision}
1090
+ charts:
1091
+ durations:
1092
+ between: "%{from}–%{to}"
1093
+ caption:
1094
+ one: Kuinka kauan ikkunassa valmistunut %{count} ajo kesti alusta loppuun.
1095
+ other: Kuinka kauan ikkunassa valmistuneet %{count} ajoa kestivät alusta loppuun.
1096
+ headers:
1097
+ range: Kesto
1098
+ runs: Ajot
1099
+ over: "%{from} tai enemmän"
1100
+ title: Kesto alusta loppuun
1101
+ under: alle %{to}
1102
+ series:
1103
+ cancelled: Perutut
1104
+ finished: Valmistuneet
1105
+ runs: Ajot
1106
+ started: Alkaneet
1107
+ throughput:
1108
+ caption: 'Alkaneet, valmistuneet ja perutut ajot jaksoittain (%{bucket}) %{window}: %{started} alkoi, %{finished} valmistui, %{cancelled} peruttiin.'
1109
+ headers:
1110
+ cancelled: Perutut
1111
+ finished: Valmistuneet
1112
+ from: Alkaen
1113
+ started: Alkaneet
1114
+ title: Ajot / %{bucket}
1115
+ description: 'Aikaikkuna %{window}: missä ajot ovat nyt, miten kukin vaihe toimii ja mihin ajot pysähtyvät.'
1116
+ funnel:
1117
+ caption:
1118
+ one: 'Ikkunassa alkaneesta %{count} ajosta: kuinka moni saavutti kunkin vaiheen ja missä se on nyt.'
1119
+ other: 'Ikkunassa alkaneista %{count} ajosta: kuinka moni saavutti kunkin vaiheen ja missä kukin on nyt.'
1120
+ empty: Yksikään ajo ei alkanut tässä ikkunassa.
1121
+ headers:
1122
+ now_here: Nyt tässä vaiheessa
1123
+ reached: Saavuttanut
1124
+ share: Alkaneista
1125
+ step: Vaihe
1126
+ here:
1127
+ cancelled:
1128
+ one: "%{count} peruttu"
1129
+ other: "%{count} peruttu"
1130
+ finished:
1131
+ one: "%{count} valmistunut"
1132
+ other: "%{count} valmistunut"
1133
+ paused:
1134
+ one: "%{count} keskeytetty"
1135
+ other: "%{count} keskeytetty"
1136
+ performing:
1137
+ one: "%{count} käynnissä"
1138
+ other: "%{count} käynnissä"
1139
+ ready:
1140
+ one: "%{count} ajastettu"
1141
+ other: "%{count} ajastettu"
1142
+ waiting:
1143
+ one: "%{count} odottaa"
1144
+ other: "%{count} odottaa"
1145
+ title: Suppilo
1146
+ pipeline:
1147
+ attempts:
1148
+ one: "%{count} yritys"
1149
+ other: "%{count} yritystä"
1150
+ caption: 'Vaiheet järjestyksessä: ajot, jotka ovat vaiheessa nyt, ja miten sen ikkunassa päättyneet yritykset menivät.'
1151
+ empty: 'Ei vielä vaiheita: luokan yhdelläkään ajolla ei ole vaihetta ikkunassa eikä mikään ole käynnissä.'
1152
+ failed: Epäonnistui
1153
+ kinds:
1154
+ fan_out: Fan-out
1155
+ removed: Poistettu
1156
+ signal: Odottaa signaalia
1157
+ undeclared: Ei määrittelyssä
1158
+ live:
1159
+ paused: Keskeytetty
1160
+ performing: Käynnissä
1161
+ ready: Ajastettu
1162
+ waiting: Odottaa
1163
+ now_label: Ajot tässä vaiheessa nyt
1164
+ pickup: Nouto
1165
+ reattempted: Yritetty uudelleen
1166
+ run_time: Ajoaika
1167
+ skipped: Ohitettu
1168
+ step_link: Käynnissä olevat ajot vaiheessa %{step}
1169
+ title: Putki
1170
+ window_label: Ikkunassa päättyneet yritykset
1171
+ summary:
1172
+ attention: Vaatii toimia
1173
+ cancelled: Perutut
1174
+ duration: Kesto p50
1175
+ finished: Valmistuneet
1176
+ ongoing: Käynnissä
1177
+ started: Alkaneet
1178
+ window_label: Aikaikkuna
1179
+ windows:
1180
+ 1h: viimeisen tunnin aikana
1181
+ 24h: viimeisen 24 tunnin aikana
1182
+ 30d: viimeisen 30 päivän aikana
1183
+ 7d: viimeisen 7 päivän aikana
1184
+ workflows:
1185
+ actions:
1186
+ bulk_cancel: Peru kaikki
1187
+ bulk_resume: Jatka kaikki
1188
+ cancel: Peru
1189
+ rerun: Uusi
1190
+ resume: Jatka
1191
+ resume_at: Jatka vaiheesta
1192
+ run_now: Aja nyt
1193
+ signal: Lähetä signaali
1194
+ skip_step: Ohita vaihe
1195
+ attempt: yritys %{attempt}
1196
+ attention:
1197
+ at_step_html: vaiheessa %{step}
1198
+ back: "← Työnkulut"
1199
+ cancel_all:
1200
+ one: Peru kaikki %{count}
1201
+ other: Peru kaikki %{count}
1202
+ confirm:
1203
+ cancel:
1204
+ one: Perutaanko vaiheeseen %{step} jumittunut ajo?
1205
+ other: Perutaanko kaikki %{count} vaiheeseen %{step} jumittunutta ajoa?
1206
+ cancel_error:
1207
+ one: 'Perutaanko vaiheeseen %{step} jumittunut ajo (virhe: %{error})?'
1208
+ other: 'Perutaanko kaikki %{count} vaiheeseen %{step} jumittunutta ajoa (virhe: %{error})?'
1209
+ resume:
1210
+ one: Jatketaanko vaiheessa %{step} keskeytettyä ajoa?
1211
+ other: Jatketaanko kaikkia %{count} vaiheessa %{step} keskeytettyä ajoa?
1212
+ resume_error:
1213
+ one: 'Jatketaanko vaiheessa %{step} keskeytettyä ajoa (virhe: %{error})?'
1214
+ other: 'Jatketaanko kaikkia %{count} vaiheessa %{step} keskeytettyä ajoa (virhe: %{error})?'
1215
+ description: Käynnissä olevat ajot, jotka odottavat ihmistä, ryhmiteltynä pysähtymisen syyn mukaan. Kun syy on korjattu, käsittele koko ryhmä kerralla.
1216
+ empty_hint: Yksikään käynnissä oleva ajo ei ole keskeytetty, jumissa, myöhässä tai odota yli rajan workflow_waiting_visibility_threshold.
1217
+ empty_title: Mikään ei vaadi huomiota.
1218
+ first_seen_html: ensimmäinen %{time}
1219
+ headers:
1220
+ actions: Toiminnot
1221
+ reason: Syy
1222
+ runs: Ajot
1223
+ seen: Nähty
1224
+ workflow: Työnkulku
1225
+ last_seen_html: viimeisin %{time}
1226
+ only_class_html: Vain %{workflow}.
1227
+ reasons:
1228
+ overdue: 'Myöhässä: erääntynyt, mutta ei otettu'
1229
+ paused_error: Keskeytetty virheen vuoksi
1230
+ paused_manual: Keskeytetty käsin
1231
+ stalled: 'Jumissa: sen worker lakkasi vastaamasta'
1232
+ waiting_overdue: Odottaa liian kauan
1233
+ resume_all:
1234
+ one: Jatka kaikki %{count}
1235
+ other: Jatka kaikki %{count}
1236
+ show_all: Näytä kaikki luokat
1237
+ show_runs: Näytä ajot
1238
+ title: Vaatii huomiota
1239
+ audit:
1240
+ by: "%{event}, tekijä %{actor}"
1241
+ empty: Ei tallennettuja tapahtumia.
1242
+ headers:
1243
+ what: Mitä tapahtui
1244
+ when: Milloin
1245
+ title: Auditointiloki
1246
+ with_reason: "%{sentence}: %{reason}"
1247
+ with_step: "%{sentence} (%{step} #%{attempt})"
1248
+ bad_request: 'Virheellinen pyyntö: %{reason}'
1249
+ confirm:
1250
+ cancel: Perutaanko tämä työnkulku? Sen avoimet vaiheet perutaan, eikä se aja enää uudelleen.
1251
+ rerun: Käynnistetäänkö tämä työnkulku uudelleen uutena ajona samalla kohteella ja samoilla argumenteilla?
1252
+ resume: Jatketaanko tätä työnkulkua?
1253
+ resume_at: Jatketaanko tätä työnkulkua valitusta vaiheesta? Sen avoimet vaiheet perutaan ensin.
1254
+ run_now: Ajetaanko ajastettu vaihe nyt odottamatta?
1255
+ signal: Lähetetäänkö tämä signaali työnkulkuun?
1256
+ skip_step: Ohitetaanko vaihe, jota tämä työnkulku odottaa, ja siirrytäänkö seuraavaan?
1257
+ events:
1258
+ cancelled: Peruttu
1259
+ fan_out_finished: Fan-out päättynyt
1260
+ fan_out_opened: Fan-out avattu
1261
+ finished: Päättynyt
1262
+ late_completion_ignored: Myöhäinen valmistuminen ohitettu
1263
+ paused: Keskeytetty
1264
+ rerun: Uusittu
1265
+ rescheduled: Ajastettu uudelleen
1266
+ resumed: Jatkettu
1267
+ run_now: Aja nyt
1268
+ signal_claimed: Signaali varattu
1269
+ signal_received: Signaali vastaanotettu
1270
+ stall_detected: Jumiutuminen havaittu
1271
+ started: Aloitettu
1272
+ step_completed: Vaihe valmis
1273
+ step_failed: Vaihe epäonnistui
1274
+ step_reattempted: Vaihe yritetty uudelleen
1275
+ step_scheduled: Vaihe ajastettu
1276
+ step_skipped: Vaihe ohitettu
1277
+ step_started: Vaihe aloitettu
1278
+ step_waiting: Vaihe odottaa
1279
+ wait_timed_out: Odotus aikakatkaistu
1280
+ filters:
1281
+ apply: Käytä suodattimia
1282
+ clear: Tyhjennä
1283
+ created_from: Luotu alkaen
1284
+ created_to: Luotu asti
1285
+ ended_from: Päättynyt alkaen
1286
+ ended_to: Päättynyt asti
1287
+ error_class: Virheluokka
1288
+ step: Nykyinen vaihe
1289
+ subject_id: Kohteen ID
1290
+ subject_type: Kohteen tyyppi
1291
+ workflow_class: Työnkulun luokka
1292
+ workflow_id: Työnkulun ID
1293
+ flash:
1294
+ bad_group: Ryhmä ei kelpaa.
1295
+ bulk_cancel:
1296
+ one: Peruttiin %{count}.
1297
+ other: Peruttiin %{count}.
1298
+ bulk_cancel_skipped: Peruttiin %{count}; %{skipped} oli jo edennyt.
1299
+ bulk_failed: "%{count} ei voitu muuttaa: %{reason}"
1300
+ bulk_more: 'Ajoja voi olla vielä jäljellä: paina uudelleen seuraavat %{cap} varten.'
1301
+ bulk_resume:
1302
+ one: Jatkettiin %{count}.
1303
+ other: Jatkettiin %{count}.
1304
+ bulk_resume_skipped: Jatkettiin %{count}; %{skipped} oli jo edennyt.
1305
+ cancel: Työnkulku peruttu.
1306
+ choose_step: Valitse vaihe, josta jatketaan.
1307
+ failed:
1308
+ not_allowed: 'Ei tehty: ajon tila on nyt %{status}.'
1309
+ not_found: Työnkulkua ei enää ole.
1310
+ other: "%{action} epäonnistui: %{reason}"
1311
+ payload_not_object: 'Ei lähetetty: payload ei ole JSON-objekti.'
1312
+ payload_too_large: 'Ei lähetetty: payload ylittää %{limit} tavua.'
1313
+ rerun: Uusi ajo käynnistetty.
1314
+ resume: Työnkulkua jatkettu.
1315
+ resume_at: Työnkulkua jatkettu vaiheesta %{step}.
1316
+ run_now: Ajastettu vaihe ajetaan nyt.
1317
+ signal: Signaali %{name} lähetetty.
1318
+ signal_duplicate: Signaali %{name} oli jo toimitettu tällä avaimella; mitään uutta ei lähetetty.
1319
+ signal_name_missing: 'Ei lähetetty: signaali tarvitsee nimen.'
1320
+ skip_step: Vaihe ohitettu.
1321
+ headers:
1322
+ current_step: Nykyinen vaihe
1323
+ last_activity: Viimeisin toiminta
1324
+ started: Aloitettu
1325
+ status: Tila
1326
+ subject: Kohde
1327
+ workflow: Työnkulku
1328
+ index:
1329
+ attention_link:
1330
+ one: Vaatii huomiota (%{count})
1331
+ other: Vaatii huomiota (%{count})
1332
+ description: 'Pitkäkestoiset monivaiheiset ajot: mitä kukin tekee ja mitä seuraavaksi tapahtuu.'
1333
+ empty_hint: Valitse toinen tila tai tyhjennä suodattimet. Ajo alkaa komennolla YourWorkflow.start!(subject, **arguments).
1334
+ empty_title: Ei työnkulkuja.
1335
+ insights_link: Näkymä luokittain
1336
+ status_label: Suodata tilan mukaan
1337
+ title: Työnkulut
1338
+ next:
1339
+ cancelled_html: Peruttu %{ago}.
1340
+ due_html: 'Valmiina: %{step} erääntyi %{ago} ja odottaa workeria.'
1341
+ finished_html: Päättyi %{ago}.
1342
+ overdue_html: 'Myöhässä: %{step} erääntyi %{ago}; siivous lähettää sen uudelleen.'
1343
+ paused_error_html: 'Keskeytetty vaiheessa %{step}: %{error} — jatka tai peru.'
1344
+ paused_manual_html: Keskeytetty vaiheessa %{step} — jatka tai peru.
1345
+ performing_attempt_html: Suoritetaan vaihetta %{step} (yritys %{attempt}).
1346
+ performing_html: Suoritetaan vaihetta %{step}.
1347
+ ready_html: 'Valmiina: %{step} ajetaan seuraavaksi.'
1348
+ scheduled_html: 'Ajastettu: %{step} ajetaan %{time}.'
1349
+ unknown_html: 'Tila: %{status}.'
1350
+ waiting_batch_html: Odottaa erää %{batch} (%{done} / %{total} tehtävää valmis).
1351
+ waiting_signal_html: Odottaa signaalia %{signal}, alkoi %{ago}.
1352
+ waiting_signal_timeout_html: Odottaa signaalia %{signal}, alkoi %{ago}. Odotus aikakatkaistaan %{time}.
1353
+ waiting_step_html: Odottaa vaihetta %{step}.
1354
+ not_found:
1355
+ hint: Se on ehkä päättynyt ja poistettu workflow_retentionin jälkeen, tai tietokantaa ei voitu lukea (katso loki).
1356
+ title: Työnkulkua ei löytynyt
1357
+ outcomes:
1358
+ cancelled: peruttu
1359
+ completed: valmistui
1360
+ finished_early: päätti ajon etuajassa
1361
+ paused: keskeytti ajon
1362
+ reattempted: yritetty uudelleen
1363
+ skipped: ohitettu
1364
+ resume:
1365
+ carry_on: 'Jatka: etene vaiheeseen %{step}'
1366
+ continue: 'Jatka: siirry vaiheeseen %{step}'
1367
+ finish: 'Jatka: päätä ajo'
1368
+ resend: 'Jatka: lähetä %{step} uudelleen'
1369
+ retry: 'Jatka: yritä vaihetta %{step} uudelleen'
1370
+ rewait: 'Jatka: odota vaihetta %{step} uudelleen'
1371
+ show:
1372
+ actions: Toiminnot
1373
+ arguments: Argumentit
1374
+ back: "← Työnkulut"
1375
+ cancelled_at: Peruttu
1376
+ class_missing: "%{workflow_class} ei ole ladattuna tässä prosessissa: ajon voi yhä perua, mutta ei jatkaa."
1377
+ definition_outdated: 'Tämä ajo alkoi luokan %{workflow_class} vanhemmalla määrityksellä: sen vaiheet ovat muuttuneet ajon alun jälkeen.'
1378
+ details: Tiedot
1379
+ finished_at: Päättynyt
1380
+ no_arguments: Tällä ajolla ei ole argumentteja.
1381
+ paused_at: Keskeytetty
1382
+ reason_hint: Tallennetaan auditointilokiin tekijän viereen.
1383
+ reason_label: Syy (valinnainen)
1384
+ rerun_of: Uusinta ajosta
1385
+ reruns: Uusittu ajona
1386
+ resume_at_label: Jatka vaiheesta
1387
+ signal:
1388
+ hint: Sitä odottava vaihe herää heti; muuten signaali odottaa, kunnes jokin vaihe ottaa sen.
1389
+ name: Signaalin nimi
1390
+ payload: Payload (JSON)
1391
+ send: Lähetä signaali
1392
+ title: Lähetä signaali
1393
+ signal_statuses:
1394
+ claimed: Varattu
1395
+ consumed: Käsitelty
1396
+ pending: Odottaa
1397
+ signals:
1398
+ empty: Tälle ajolle ei ole toimitettu signaaleja.
1399
+ headers:
1400
+ claimed: Varattu
1401
+ consumed: Käsitelty
1402
+ idempotency_key: Idempotenssiavain
1403
+ name: Signaali
1404
+ received: Vastaanotettu
1405
+ status: Tila
1406
+ payload: Payload
1407
+ title: Signaalit
1408
+ statuses:
1409
+ cancelled: Peruttu
1410
+ finished: Päättynyt
1411
+ gone: poistunut
1412
+ paused: Keskeytetty
1413
+ performing: Suoritetaan
1414
+ ready: Valmiina
1415
+ scheduled: Ajastettu
1416
+ waiting: Odottaa
1417
+ step_statuses:
1418
+ cancelled: Peruttu
1419
+ completed: Valmis
1420
+ failed: Epäonnistui
1421
+ in_progress: Käynnissä
1422
+ scheduled: Ajastettu
1423
+ skipped: Ohitettu
1424
+ waiting: Odottaa
1425
+ steps:
1426
+ batch: erä %{batch}
1427
+ caused_by: 'Aiheuttaja: %{error}'
1428
+ empty: Ei vielä yrityksiä.
1429
+ headers:
1430
+ finished: Päättynyt
1431
+ queued: Jonossa
1432
+ ran: Ajettu
1433
+ scheduled: Ajastettu
1434
+ started: Aloitettu
1435
+ status: Tila
1436
+ step: Vaihe
1437
+ waited: Odotettu
1438
+ worker: Worker
1439
+ revision: versio %{revision}
1440
+ show_backtrace: Näytä backtrace
1441
+ title: Yritykset
1442
+ waiting_for: sen jälkeen odotus %{duration}
1443
+ waits_for_html: odottaa signaalia %{signal}
1444
+ tabs:
1445
+ all: Kaikki
1446
+ cancelled: Peruttu
1447
+ finished: Päättynyt
1448
+ ongoing: Käynnissä
1449
+ paused: Keskeytetty
1450
+ performing: Suoritetaan
1451
+ ready: Valmiina
1452
+ waiting: Odottaa
1453
+ timeline:
1454
+ caption: 'Jokainen yritys, vanhin ylimpänä: odotettu (sen odotus), jonossa (erääntynyt, ei vielä otettu), ajettu (väri kertoo lopputuloksen) ja odottaa (signaalia tai erää), keskeytykset omalla rivillään. Alla oleva yritystaulukko listaa samat kestot.'
1455
+ empty: Ei vielä yrityksiä.
1456
+ paused_period_html: Keskeytetty %{from} ajaksi %{duration}
1457
+ paused_row: Keskeytetty
1458
+ series:
1459
+ paused: Keskeytetty
1460
+ queued: Jonossa
1461
+ ran_cancelled: Ajettu, peruttu
1462
+ ran_failed: Ajettu, epäonnistui
1463
+ ran_ok: Ajettu
1464
+ ran_open: Käynnissä
1465
+ waited: Odotettu
1466
+ waiting: Odottaa
1467
+ title: Aikajana