月次トリガーの定期自動化が期待通りに実行されない

こんにちは!

月初にトリガーされるはずの自動化で問題が発生しています。有効になっているにもかかわらず、自動的に実行されません。なぜ期待通りに動作しないのかをデバッグするためのログや方法が見つかりません。この問題を解決する方法をご存知の方はいらっしゃいますか?

以下をご覧ください。この自動化は毎月自動的に「Data Explorer の結果に基づいて PM をスケジュールする」ように設定されています。「今すぐトリガー」をクリックすると期待通りに動作し、リストに追加されたユーザーには Data Explorer の結果と CSV が送信されます。しかし、自動トリガーは実行されていません。

解決に向けたフィードバックやご提案をいただければ幸いです。よろしくお願いいたします!

「いいね!」 1

正確なスケジュール日付とタイムゾーン設定を確認しましたか?また、利用可能な場合は「見逃したジョブを実行」ボタンをオンにしましたか?

「いいね!」 1

今すぐトリガー以外の条件が自然に満たされているか確認するために、何かテストは行いましたか?

つまり、タイミングを「毎日」に設定してダミーグループに適用し、正しく動作することを確認してから、月次に変更して実際のグループに適用するという方法です。

また、ターゲットオーディエンスに対して、データエクスプローアのクエリを共有する必要があると思います

「いいね!」 1

こんにちは

ご支援ありがとうございます.. @kairo162 @putty

はい.. しかし問題は、スケジュールされた日時で実行されないことではなく、まったく実行されていないことです。

そのボタンはどこにありますか?

2人のユーザーに直接 PM を送信する予定です。ユーザーにはクエリが共有されています。異なるタイミングでテストするという提案ありがとうございます。ダミーグループを使用して実験してみます。

「いいね!」 2

私が気づく主な違いは、あなたのインターフェースには自動化が次にいつトリガーされるかが表示されていないことです。

まずは同じ設定で新しい自動化を設定し、有効にした後に「次のトリガー日時」が表示されるか確認することをお勧めします。

「いいね!」 1

私はこの正確な自動化スクリプトを、問題なく複数の場所で使用しています。以下は、そのうちの1つの設定です(テスト用に再発間隔を1週間から5分に変更していますが、1週間設定に戻せば期待通りに週1回実行されます):

PM(tech-admin はグループです)

自動化をトリガーしてから、yoursite/logs のログを確認してみてください。

「いいね!」 1

これは表示されています:

スクリプト名とデータエクスプローアのクエリタイトルから「コントロールノブ」の絵文字を削除してみてください。それがペイロードを壊している可能性があります(ただし、問題ないはずですが)。

「いいね!」 1

@Moin @Lilly

お手伝いいただきありがとうございます!残念ながら、謎は依然として解けていません…その理由は以下の通りです:

「トリガー日時」の前までは、まさにそのような表示で「次の自動化は [日付/時刻] にトリガーされます」というメッセージが出ていました。しかし、その日付/時刻が過ぎても正常に実行されなかった場合、そのメッセージは表示されなくなります。テスト中にタイミングを1分に変更すると、トリガーメッセージが再表示されました。以前、トリガーされなかった月にタイマーを更新したところ、「来月の最初の時刻にトリガーされます」というメッセージが表示されました(しかし実際にはトリガーされませんでした)。

実際には、ある月はトリガーされたのに他の月はトリガーされなかったため、なぜそうなるのか不明ですが、現在は自動的に起動しなくなったようです。使用しているDiscourseのバージョンは何ですか?私の環境は2026.5.0-latestです…

残念ながら、トリガーしても /logs には何も表示されません(すべてのオプションを選択しています)。

それは問題ではないと思います。トリガーを1分に設定し直したところ、送信されましたから:

私も同じバージョンで、少なくとも週に 1 回は更新しています。

「いいね!」 2

はい、ありがとうございます!月次でトリガーされるテスト自動化を作成してみませんか?

問題は「月次」トリガーにあるような気がします。1 分トリガーに変更すると動作するからです。

「いいね!」 1

わかりました。1ヶ月に設定してトリガーしたところ、正常に動作しました。ただし、テストのために1ヶ月待つのは実用的ではありません。数分後に開始日を設定してみます。

編集:月次設定は私の環境で動作しているようです。

もしあなたには正常に動作しているなら、エラーは一部のユーザーにのみ発生している可能性がありますか?

はい、Moin と今日はこのケースについて話していました。彼女は、月の長さが異なるため、月次(monthly)を使用するとバグがあるかもしれないと指摘しました。もちろん、彼女は正しいと言えなくもないです… :stuck_out_tongue:

ともあれ、少し詳しく調べてみました :detective:

コアの plugins/automation/lib/discourse_automation/scripts フォルダに、schedule pm with data-explorer results の自動化スクリプトが見つかりませんでした。どこかに隠れているようです。

しかし、plugins/automation/lib/discourse_automation/triggers/recurring.rb の再帰(recurring)のロジックを見てみました(おそらくそのスクリプトはこれを使用しています):

月次再帰自動化の基盤コードは、実際の暦日ではなく「第 N 週の曜日」を計算しており、Calendar day とのロジックの不一致があると思います。RRule に BYDAY=#{count}#{byday} を注入することで、自動化は曜日への整合性を強制しており、代わりに BYMONTHDAY を使用するべきです。

つまり、4 月 15 日(4 月の第 3 水曜日)に自動化を開始するように設定すると、システムはそのルールを「毎月の第 3 水曜日に実行する」と解釈します。

5 月になると、第 3 水曜日は 5 月 20 日となり、スケジュールが 5 日ずれてしまいます。

さらに、月の 30 日や 31 日(例:「第 5 火曜日」)に自動化を設定した場合、システムは翌月の第 5 火曜日を探します。その月に火曜日が 4 回しかない場合、自動化は有効な日付を完全に発見できず、その月全体を「静かにスキップ」してしまいます。

私はテスト済みの修正を持っており、チームが確認したい場合は PR を作成中です。これはロジックを「第 N 週の曜日」から「正確な暦日」に変更するものです。


以下は、私のテストとデバッグからのスクリーンショットです:

2 つのインスタンス、一つは修正なし、もう一つは私のロジック修正を適用したもの

両方に全く同じ自動化を作成します(修正版は右側):

「次の自動化はいつトリガーされますか:」と表示されるバナーの違いを確認してください。5 日のズレが生じています。修正前のバージョンは、5 月 15 日ではなく、第 3 水曜日(5 月 20 日)にズレています。

例えば、実際の日付ではなく「第 4 木曜日」を探している場合、月が完全にスキップされる可能性があります。

rails コンソールでも同じ結果を確認できます

修正前:

修正後:

PR はこちら:

追記: このバグは、月次実行に設定された recurring トリガーを使用するあらゆる自動化スクリプトに影響しているようです。:grimacing:

空のバナーが表示される現象も再現できます。例えば、開始日を 2026 年 4 月 29 日に設定すると、5 月の第 5 水曜日が見つからないため(存在しないため)、自動化はここでトリガーされません(修正前は左、修正後は右):

上記のように、週内の第 N 日が見つからない場合、バグは rails 内で NoMethodError をスローするようです。そのため、次のトリガーのバナーが空になり、実行が失敗します:

「いいね!」 2

@j.jaffeux 急いでこれを確認してもらえませんか?:eyes:

「いいね!」 1

デバッグ中に、既存の動作が意図的なものかもしれない(仕様テストが「ずれる日」で設定されていたため)と一瞬思ったことを付け加えておきます。しかし、この自動化を設定する管理者は、おそらく「月のN日目」ではなく「カレンダー上の月日」を期待していると考えられます。また、月のN日目が見つからない場合に自動化が月をスキップするのは問題です。

編集:翌月の正確な日付が見つからない場合の最終日の対応(例:1月31日 → 2月28日)と、うるう年への対応を含むエッジケースの修正と仕様テストを追加しました。

「いいね!」 2

@Lilly さん、こんにちは

ご調査いただき、誠にありがとうございます。ご対応いただいた修正がマージされ、月日の問題が解決するかどうかは現時点では分かりませんが、毎月トリガーを個別に更新すれば問題なく動作するのではないかと推測しております。よろしいでしょうか?

つまり、毎月特定の日にトリガーを明示的に更新すれば、その日に発火するはずです。私の理解が正しければ、問題はシステムが自ら日付を選択しようとした際に発生していました。ご対応いただければその点が解消されることを願っております。バッチボットの件で苦労されたようでしたが、無事に解決することを願っております。引き続きご支援いただき、ありがとうございます!

皆様、ありがとうございました!<3

申し訳ありませんが、私のプルリクエストはまだマージされておらず、チームメンバーによる最終レビューを待っている状態です。現時点では、トリガーを異なる日付に更新して試してみてください。設定する際は、表示される「次のトリガー」メッセージに正しい次回の月次実行日が表示されることを確認してください。

「いいね!」 1