D’accord, alors Moin et moi avons discuté de ce cas aujourd’hui, et elle a soulevé l’idée qu’il pourrait y avoir un bug avec l’utilisation de l’option mensuelle, car la durée d’un mois varie ? Bien sûr, elle avait raison – en quelque sorte… ![]()
Quoi qu’il en soit, j’ai fait un peu plus d’investigations ![]()
Je n’ai pas pu trouver le script d’automatisation pour schedule pm with data-explorer results dans le dossier plugins/automation/lib/discourse_automation/scripts de core, il est donc caché ailleurs.
Cependant, j’ai examiné la logique ici pour les déclencheurs récurrents (ce script l’utilise probablement) dans plugins/automation/lib/discourse_automation/triggers/recurring.rb :
Je pense que le code sous-jacent pour les automatisations mensuelles récurrentes calcule le Nᵉ jour de la semaine au lieu de la date calendaire réelle, et il y a un décalage logique avec Calendar day – en injectant BYDAY=#{count}#{byday} dans l’RRule, l’automatisation force un alignement sur le jour de la semaine, alors qu’il faudrait utiliser BYMONTHDAY à la place de BYDAY.
Ainsi, si vous définissez une automatisation pour démarrer le 15 avril (qui tombe un mercredi, le 3ᵉ de ce mois), le système interprète la règle comme : exécuter le 3ᵉ mercredi de chaque mois.
Quand mai arrive, le 3ᵉ mercredi est le 20 mai, ce qui fait dériver le calendrier de 5 jours.
De plus, si vous définissez une automatisation le 30 ou le 31 d’un mois (par exemple, le « 5ᵉ mardi »), le système cherchera le 5ᵉ mardi du mois suivant. Si ce mois n’a que 4 mardis, l’automatisation échouera complètement à trouver une date valide et sautera silencieusement tout le mois.
J’ai une correction testée et je prépare une PR si l’équipe souhaite la consulter. Elle modifie la logique du Nᵉ jour de la semaine vers la date calendaire exacte.
Voici quelques captures d’écran de mes tests et débogages :
2 instances, l’une sans correction et l’autre avec ma correction logique
Créez la même automatisation dans les deux (la version corrigée est à droite) :
Observez les différences dans les bannières indiquant « La prochaine automatisation se déclenchera à : » avec un décalage de 5 jours – la version non corrigée dérive vers le troisième mercredi (20 mai), au lieu du 15 mai.
Par exemple, des mois pourraient être complètement sautés si le système cherchait le 4ᵉ jeudi au lieu d’une date réelle.
On peut aussi tester le même résultat dans la console Rails
Non corrigé :
Avec correction :
PR ici :
edit : le bug semble affecter tout script d’automatisation utilisant le déclencheur recurring configuré pour s’exécuter chaque mois. ![]()
Je peux aussi reproduire la bannière vide parfois, par exemple si l’on définit la date de début au 29 avril 2026, alors il ne peut pas trouver le 5ᵉ mercredi pour mai car il n’existe pas – l’automatisation échouera à se déclencher ici : (non corrigé à gauche, corrigé à droite)
Il semble que le bug lance une NoMethodError dans Rails lorsqu’il ne peut pas trouver le Nᵉ jour de la semaine comme ci-dessus ; d’où la bannière de prochain déclenchement vide et l’échec de l’exécution :






