一部のアニバーサリーバッジは、最後のアニバーサリーバッジの1日後と1年後に付与される

ユーザーがアニバーサリーバッジの動作がおかしいと指摘しました。最後の記念バッジが付与された1年後の1日後に記念バッジが付与されるとのことです。これが意図した動作なのかどうか分かりません。

「いいね!」 4

これはバグですが、PR歓迎のバグだと思います。私たちの設計は次のとおりです。

  1. 毎日、記念バッジを付与する新しいユーザーを探します。
  2. 過去1年間に記念バッジを受け取らなかったユーザーのみを対象とします。

問題は…これは1日1回、任意の時間にしか実行されないため、ジョブは常に遅延します。時には1時間遅延し、時には23時間遅延します。

バッジは1日1回しか付与されないため、ロジックを変更する必要があります。

  1. 候補者を探す
  2. end_date の代わりに created_at: を正しいオフセットで設定する

決して不可能な修正ではありませんが、面倒です。

「いいね!」 2

こちらにPR(初です!)を開きました: FIX: Ensure subsequent Anniversary badges are granted on a user's anniversary date by magni- · Pull Request #28979 · discourse/discourse · GitHub

「いいね!」 2