pgbus 0.19.4 → 0.20.1

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +97 -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 +148 -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/blocked_execution.rb +12 -0
  16. data/app/models/pgbus/uniqueness_key.rb +88 -3
  17. data/app/models/pgbus/workflow_entry.rb +172 -0
  18. data/app/models/pgbus/workflow_event.rb +43 -0
  19. data/app/models/pgbus/workflow_signal.rb +77 -0
  20. data/app/models/pgbus/workflow_step.rb +149 -0
  21. data/app/views/layouts/pgbus/application.html.erb +2 -0
  22. data/app/views/pgbus/dashboard/_stats_cards.html.erb +17 -0
  23. data/app/views/pgbus/workflows/_actions.html.erb +59 -0
  24. data/app/views/pgbus/workflows/_events_table.html.erb +24 -0
  25. data/app/views/pgbus/workflows/_filters.html.erb +29 -0
  26. data/app/views/pgbus/workflows/_signal_form.html.erb +31 -0
  27. data/app/views/pgbus/workflows/_signals_table.html.erb +40 -0
  28. data/app/views/pgbus/workflows/_status_filter.html.erb +12 -0
  29. data/app/views/pgbus/workflows/_steps_table.html.erb +79 -0
  30. data/app/views/pgbus/workflows/_timeline.html.erb +49 -0
  31. data/app/views/pgbus/workflows/_workflows_table.html.erb +59 -0
  32. data/app/views/pgbus/workflows/attention.html.erb +88 -0
  33. data/app/views/pgbus/workflows/definitions/_by_revision.html.erb +52 -0
  34. data/app/views/pgbus/workflows/definitions/_duration_table.html.erb +18 -0
  35. data/app/views/pgbus/workflows/definitions/_funnel.html.erb +49 -0
  36. data/app/views/pgbus/workflows/definitions/_pipeline.html.erb +16 -0
  37. data/app/views/pgbus/workflows/definitions/_step_card.html.erb +31 -0
  38. data/app/views/pgbus/workflows/definitions/_throughput_table.html.erb +32 -0
  39. data/app/views/pgbus/workflows/definitions/_window.html.erb +17 -0
  40. data/app/views/pgbus/workflows/definitions/index.html.erb +71 -0
  41. data/app/views/pgbus/workflows/definitions/not_found.html.erb +5 -0
  42. data/app/views/pgbus/workflows/definitions/show.html.erb +80 -0
  43. data/app/views/pgbus/workflows/index.html.erb +15 -0
  44. data/app/views/pgbus/workflows/not_found.html.erb +5 -0
  45. data/app/views/pgbus/workflows/show.html.erb +93 -0
  46. data/config/i18n-tasks.yml +6 -0
  47. data/config/locales/da.yml +445 -0
  48. data/config/locales/de.yml +445 -0
  49. data/config/locales/en.yml +445 -0
  50. data/config/locales/es.yml +445 -0
  51. data/config/locales/fi.yml +445 -0
  52. data/config/locales/fr.yml +445 -0
  53. data/config/locales/it.yml +445 -0
  54. data/config/locales/ja.yml +445 -0
  55. data/config/locales/nb.yml +445 -0
  56. data/config/locales/nl.yml +445 -0
  57. data/config/locales/pt.yml +445 -0
  58. data/config/locales/sv.yml +445 -0
  59. data/config/routes.rb +26 -0
  60. data/lib/generators/pgbus/add_workflow_signals_generator.rb +56 -0
  61. data/lib/generators/pgbus/add_workflows_generator.rb +54 -0
  62. data/lib/generators/pgbus/templates/add_workflow_signals.rb.erb +51 -0
  63. data/lib/generators/pgbus/templates/add_workflows.rb.erb +150 -0
  64. data/lib/generators/pgbus/templates/migration.rb.erb +127 -0
  65. data/lib/pgbus/active_job/adapter.rb +81 -3
  66. data/lib/pgbus/active_job/delivery.rb +63 -0
  67. data/lib/pgbus/active_job/executor.rb +20 -8
  68. data/lib/pgbus/concurrency/blocked_execution.rb +14 -6
  69. data/lib/pgbus/configuration/workflow_settings.rb +99 -0
  70. data/lib/pgbus/configuration.rb +64 -4
  71. data/lib/pgbus/dead_letter_header.rb +9 -1
  72. data/lib/pgbus/generators/migration_detector.rb +40 -0
  73. data/lib/pgbus/instrumentation.rb +33 -0
  74. data/lib/pgbus/integrations/appsignal/dashboard.json +157 -1
  75. data/lib/pgbus/integrations/appsignal/subscriber.rb +16 -1
  76. data/lib/pgbus/mcp/rack_app.rb +7 -2
  77. data/lib/pgbus/mcp/runner.rb +2 -1
  78. data/lib/pgbus/mcp/serialization.rb +25 -0
  79. data/lib/pgbus/mcp/server.rb +53 -10
  80. data/lib/pgbus/mcp/tools/deploy_tasks_tool.rb +1 -10
  81. data/lib/pgbus/mcp/tools/workflow_cancel_tool.rb +23 -0
  82. data/lib/pgbus/mcp/tools/workflow_definitions_tool.rb +36 -0
  83. data/lib/pgbus/mcp/tools/workflow_detail_tool.rb +38 -0
  84. data/lib/pgbus/mcp/tools/workflow_resume_at_tool.rb +32 -0
  85. data/lib/pgbus/mcp/tools/workflow_resume_tool.rb +24 -0
  86. data/lib/pgbus/mcp/tools/workflow_run_now_tool.rb +23 -0
  87. data/lib/pgbus/mcp/tools/workflow_signal_tool.rb +77 -0
  88. data/lib/pgbus/mcp/tools/workflow_skip_step_tool.rb +23 -0
  89. data/lib/pgbus/mcp/tools/workflow_stats_tool.rb +42 -0
  90. data/lib/pgbus/mcp/tools/workflows_attention_tool.rb +42 -0
  91. data/lib/pgbus/mcp/tools/workflows_tool.rb +60 -0
  92. data/lib/pgbus/mcp/workflow_insights_payload.rb +15 -0
  93. data/lib/pgbus/mcp/workflow_payloads.rb +53 -0
  94. data/lib/pgbus/mcp/write_tool.rb +134 -0
  95. data/lib/pgbus/mcp.rb +15 -0
  96. data/lib/pgbus/metrics/backends/statsd.rb +6 -0
  97. data/lib/pgbus/metrics/subscriber.rb +14 -1
  98. data/lib/pgbus/metrics/workflow_metrics.rb +75 -0
  99. data/lib/pgbus/process/consumer.rb +2 -1
  100. data/lib/pgbus/process/dispatcher.rb +39 -3
  101. data/lib/pgbus/process/worker.rb +10 -1
  102. data/lib/pgbus/recurring/schedule.rb +1 -1
  103. data/lib/pgbus/streams/presence.rb +65 -36
  104. data/lib/pgbus/uniqueness.rb +23 -6
  105. data/lib/pgbus/version.rb +1 -1
  106. data/lib/pgbus/web/data_source/workflow_actions.rb +109 -0
  107. data/lib/pgbus/web/data_source/workflow_insights.rb +99 -0
  108. data/lib/pgbus/web/data_source/workflow_list.rb +291 -0
  109. data/lib/pgbus/web/data_source.rb +126 -15
  110. data/lib/pgbus/web/workflow_action_plan.rb +62 -0
  111. data/lib/pgbus/web/workflow_insights_queries.rb +250 -0
  112. data/lib/pgbus/web/workflow_insights_report.rb +171 -0
  113. data/lib/pgbus/web/workflow_payload.rb +36 -0
  114. data/lib/pgbus/web/workflow_query.rb +82 -0
  115. data/lib/pgbus/web/workflow_state.rb +89 -0
  116. data/lib/pgbus/web/workflow_timeline.rb +130 -0
  117. data/lib/pgbus/web/workflow_window.rb +51 -0
  118. data/lib/pgbus/workflow/batch_finished_job.rb +21 -0
  119. data/lib/pgbus/workflow/dsl.rb +105 -0
  120. data/lib/pgbus/workflow/error_capture.rb +63 -0
  121. data/lib/pgbus/workflow/exception_policy.rb +170 -0
  122. data/lib/pgbus/workflow/fan_out.rb +157 -0
  123. data/lib/pgbus/workflow/fan_out_definition.rb +41 -0
  124. data/lib/pgbus/workflow/flow_control.rb +94 -0
  125. data/lib/pgbus/workflow/instance.rb +183 -0
  126. data/lib/pgbus/workflow/outside_verbs.rb +138 -0
  127. data/lib/pgbus/workflow/payload.rb +53 -0
  128. data/lib/pgbus/workflow/registry.rb +53 -0
  129. data/lib/pgbus/workflow/removed_step.rb +14 -0
  130. data/lib/pgbus/workflow/runner.rb +218 -0
  131. data/lib/pgbus/workflow/signal_matcher.rb +53 -0
  132. data/lib/pgbus/workflow/signals.rb +132 -0
  133. data/lib/pgbus/workflow/states.rb +119 -0
  134. data/lib/pgbus/workflow/step_context.rb +58 -0
  135. data/lib/pgbus/workflow/step_definition.rb +133 -0
  136. data/lib/pgbus/workflow/step_execution.rb +242 -0
  137. data/lib/pgbus/workflow/step_job.rb +28 -0
  138. data/lib/pgbus/workflow/step_outcome.rb +151 -0
  139. data/lib/pgbus/workflow/steps.rb +103 -0
  140. data/lib/pgbus/workflow/sweep.rb +156 -0
  141. data/lib/pgbus/workflow/test_helpers.rb +152 -0
  142. data/lib/pgbus/workflow/wait_timeout.rb +94 -0
  143. data/lib/pgbus/workflow/waiting.rb +82 -0
  144. data/lib/pgbus/workflow.rb +183 -0
  145. data/sig/pgbus/configuration.rbs +23 -0
  146. 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,442 @@ 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_late_html: Odottaa signaalia %{signal}, alkoi %{ago} (myöhässä alkaen %{late}). Seuraava myöhästymisilmoitus lähtee %{time}.
1353
+ waiting_signal_notify_html: Odottaa signaalia %{signal}, alkoi %{ago}. Myöhästymisilmoitus lähtee %{time}, ja odotus jatkuu.
1354
+ waiting_signal_timeout_html: Odottaa signaalia %{signal}, alkoi %{ago}. Odotus aikakatkaistaan %{time}.
1355
+ waiting_step_html: Odottaa vaihetta %{step}.
1356
+ not_found:
1357
+ hint: Se on ehkä päättynyt ja poistettu workflow_retentionin jälkeen, tai tietokantaa ei voitu lukea (katso loki).
1358
+ title: Työnkulkua ei löytynyt
1359
+ outcomes:
1360
+ cancelled: peruttu
1361
+ completed: valmistui
1362
+ finished_early: päätti ajon etuajassa
1363
+ paused: keskeytti ajon
1364
+ reattempted: yritetty uudelleen
1365
+ skipped: ohitettu
1366
+ resume:
1367
+ carry_on: 'Jatka: etene vaiheeseen %{step}'
1368
+ continue: 'Jatka: siirry vaiheeseen %{step}'
1369
+ finish: 'Jatka: päätä ajo'
1370
+ resend: 'Jatka: lähetä %{step} uudelleen'
1371
+ retry: 'Jatka: yritä vaihetta %{step} uudelleen'
1372
+ rewait: 'Jatka: odota vaihetta %{step} uudelleen'
1373
+ show:
1374
+ actions: Toiminnot
1375
+ arguments: Argumentit
1376
+ back: "← Työnkulut"
1377
+ cancelled_at: Peruttu
1378
+ class_missing: "%{workflow_class} ei ole ladattuna tässä prosessissa: ajon voi yhä perua, mutta ei jatkaa."
1379
+ definition_outdated: 'Tämä ajo alkoi luokan %{workflow_class} vanhemmalla määrityksellä: sen vaiheet ovat muuttuneet ajon alun jälkeen.'
1380
+ details: Tiedot
1381
+ finished_at: Päättynyt
1382
+ no_arguments: Tällä ajolla ei ole argumentteja.
1383
+ paused_at: Keskeytetty
1384
+ reason_hint: Tallennetaan auditointilokiin tekijän viereen.
1385
+ reason_label: Syy (valinnainen)
1386
+ rerun_of: Uusinta ajosta
1387
+ reruns: Uusittu ajona
1388
+ resume_at_label: Jatka vaiheesta
1389
+ signal:
1390
+ hint: Sitä odottava vaihe herää heti; muuten signaali odottaa, kunnes jokin vaihe ottaa sen.
1391
+ name: Signaalin nimi
1392
+ payload: Payload (JSON)
1393
+ send: Lähetä signaali
1394
+ title: Lähetä signaali
1395
+ signal_statuses:
1396
+ claimed: Varattu
1397
+ consumed: Käsitelty
1398
+ pending: Odottaa
1399
+ signals:
1400
+ empty: Tälle ajolle ei ole toimitettu signaaleja.
1401
+ headers:
1402
+ claimed: Varattu
1403
+ consumed: Käsitelty
1404
+ idempotency_key: Idempotenssiavain
1405
+ name: Signaali
1406
+ received: Vastaanotettu
1407
+ status: Tila
1408
+ payload: Payload
1409
+ title: Signaalit
1410
+ statuses:
1411
+ cancelled: Peruttu
1412
+ finished: Päättynyt
1413
+ gone: poistunut
1414
+ paused: Keskeytetty
1415
+ performing: Suoritetaan
1416
+ ready: Valmiina
1417
+ scheduled: Ajastettu
1418
+ waiting: Odottaa
1419
+ step_statuses:
1420
+ cancelled: Peruttu
1421
+ completed: Valmis
1422
+ failed: Epäonnistui
1423
+ in_progress: Käynnissä
1424
+ scheduled: Ajastettu
1425
+ skipped: Ohitettu
1426
+ waiting: Odottaa
1427
+ steps:
1428
+ batch: erä %{batch}
1429
+ caused_by: 'Aiheuttaja: %{error}'
1430
+ empty: Ei vielä yrityksiä.
1431
+ headers:
1432
+ finished: Päättynyt
1433
+ queued: Jonossa
1434
+ ran: Ajettu
1435
+ scheduled: Ajastettu
1436
+ started: Aloitettu
1437
+ status: Tila
1438
+ step: Vaihe
1439
+ waited: Odotettu
1440
+ worker: Worker
1441
+ revision: versio %{revision}
1442
+ show_backtrace: Näytä backtrace
1443
+ title: Yritykset
1444
+ waiting_for: sen jälkeen odotus %{duration}
1445
+ waits_for_html: odottaa signaalia %{signal}
1446
+ tabs:
1447
+ all: Kaikki
1448
+ cancelled: Peruttu
1449
+ finished: Päättynyt
1450
+ ongoing: Käynnissä
1451
+ paused: Keskeytetty
1452
+ performing: Suoritetaan
1453
+ ready: Valmiina
1454
+ waiting: Odottaa
1455
+ timeline:
1456
+ 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. Katkoviiva merkitsee jokaista kertaa, kun odotus ylitti määräaikansa.'
1457
+ empty: Ei vielä yrityksiä.
1458
+ paused_period_html: Keskeytetty %{from} ajaksi %{duration}
1459
+ paused_row: Keskeytetty
1460
+ series:
1461
+ paused: Keskeytetty
1462
+ queued: Jonossa
1463
+ ran_cancelled: Ajettu, peruttu
1464
+ ran_failed: Ajettu, epäonnistui
1465
+ ran_ok: Ajettu
1466
+ ran_open: Käynnissä
1467
+ waited: Odotettu
1468
+ waiting: Odottaa
1469
+ title: Aikajana
1470
+ wait_timeout_html: 'Vaiheen %{step} odotus ylitti määräaikansa %{time} (on_timeout: %{action}).'