Некоторые значки юбилея вручаются через день и через год после последнего значка юбилея

Итак, пользователь заметил странное поведение значка юбилея. Значок юбилея выдается через один день после того, как был выдан предыдущий значок юбилея, ровно через год. Не уверен, что это задумано.

4 лайка

Это баг, но я думаю, что это как раз тот случай, когда мы приветствуем pull-запросы. Наша логика работы такова:

  1. Раз в день мы ищем новых людей, которым можно выдать юбилейные значки.
  2. Мы рассматриваем только тех, кто не получал юбилейный значок в течение предыдущего года.

Проблема в том, что это выполняется раз в сутки в произвольное время, поэтому задача всегда запускается с задержкой: иногда на час, а иногда на 23 часа.

Учитывая, что значки выдаются раз в день, нам нужно изменить логику следующим образом:

  1. Найти кандидатов.
  2. Установить created_at с правильным смещением вместо использования end_date.

Исправление вполне выполнимо, но требует аккуратности.

2 лайка

Я открыл PR (мой первый!) по этому вопросу здесь: FIX: Ensure subsequent Anniversary badges are granted on a user's anniversary date by magni- · Pull Request #28979 · discourse/discourse · GitHub

2 лайка