Algunas insignias de aniversario se otorgan un día y un año después de la última insignia de aniversario

Un usuario notó que el comportamiento de la insignia de aniversario es extraño. Otorga la insignia de aniversario un día después de que se otorgó la última insignia de aniversario. No estoy seguro si esto es intencional.

4 Me gusta

Es un error, pero creo que este es uno de esos que son bienvenidos por PR (solicitud de extracción), nuestro diseño es:

  1. Una vez al día salimos a buscar nuevas personas a las que otorgarles insignias de aniversario.
  2. Solo consideramos a las personas que no recibieron una insignia de aniversario en el año anterior.

El problema es… que esto solo se ejecuta una vez al día a una hora arbitraria, lo que significa que el trabajo siempre se ejecuta tarde, a veces con 1 hora de retraso, a veces con 23 horas de retraso.

Dado que solo otorgamos insignias una vez al día, necesitaríamos cambiar nuestra lógica para:

  1. Buscar candidatos.
  2. Establecer la created_at: en el desplazamiento correcto en lugar de usar end_date.

No es una solución imposible, pero es delicada.

2 Me gusta

He abierto una PR (¡mi primera!) para esto aquí: FIX: Ensure subsequent Anniversary badges are granted on a user's anniversary date by magni- · Pull Request #28979 · discourse/discourse · GitHub

2 Me gusta