L'automatisation récurrente déclenchée mensuellement ne fonctionne pas comme prévu

Bonjour !

Je rencontre un problème avec une automatisation censée se déclencher au début du mois ; pourtant, même si elle est activée, elle ne se lance pas automatiquement. Je ne trouve aucun journal d’activité ni de moyen de déboguer pour comprendre pourquoi elle ne s’exécute pas d’elle-même alors qu’elle devrait le faire. Quelqu’un parmi vous sait-il comment résoudre ce problème, s’il vous plaît ?

Comme vous pouvez le voir ci-dessous, l’automatisation est censée « Planifier une réunion de suivi avec les résultats de l’Explorateur de données » automatiquement chaque mois. Si je clique sur « Déclencher maintenant », cela fonctionne comme prévu : les utilisateurs ajoutés à la liste reçoivent les résultats de l’Explorateur de données ainsi qu’un fichier CSV ; cependant, le déclenchement automatique ne s’exécute pas.

Je vous serais reconnaissant de bien vouloir me faire part de tout retour ou suggestion qui pourrait m’aider à résoudre ce problème. Merci !

1 « J'aime »

Avez-vous confirmé la date exacte prévue et le paramètre de fuseau horaire, et, si disponible, avez-vous activé le bouton Exécuter les tâches manquées ?

1 « J'aime »

Avez-vous effectué des tests pour vous assurer que tous les critères sont respectés naturellement (à l’exception de trigger now) ?

Par exemple, définissez le délai pour qu’il se produise quotidiennement et dirigez-le vers un groupe fictif. Si cela fonctionne correctement, passez ensuite à un rythme mensuel vers votre groupe réel.

De plus, je pense que votre public cible doit avoir accès au requête de l’explorateur de données partagée.

1 « J'aime »

Bonjour,

Merci pour votre aide.. @kairo162 @putty

Oui.. mais le problème n’est pas qu’il ne s’exécute pas à la date/heure prévue, le problème est qu’il ne s’exécute pas du tout.

Où puis-je trouver ce bouton, s’il vous plaît ?

C’est censé envoyer un MP direct à deux utilisateurs. Les utilisateurs ont la requête partagée avec eux. Merci pour la suggestion de tester en essayant différents timings. Je vais essayer d’expérimenter avec un groupe fictif également.

2 « J'aime »

La principale différence que je remarque, c’est que votre interface n’affiche pas quand l’automatisation est censée se déclencher ensuite.

Je commencerais par configurer une nouvelle automatisation avec les mêmes paramètres et vérifier si elle obtient une « date de prochain déclenchement » après l’avoir activée.

1 « J'aime »

J’utilise exactement ce script d’automatisation à plusieurs endroits sans problème. Voici ma configuration pour l’un d’eux — j’ai modifié la récurrence à 5 minutes au lieu d’une semaine pour ce test, mais elle se déclenche bien chaque semaine comme prévu lorsque ce paramètre est défini :

MP (tech-admin est un groupe)

Essayez de déclencher l’automatisation, puis consultez vos journaux à l’adresse yoursite/logs.

1 « J'aime »

Je vois ceci :

Peut-être essayer de retirer l’émoji des boutons de contrôle du nom du script et du titre de la requête de l’explorateur de données. Cela pourrait casser le payload (bien que je pense qu’ils devraient aller).

1 « J'aime »

Bonjour @Moin @Lilly,

Merci pour votre aide ! Je crains que le mystère ne soit toujours pas résolu… voici pourquoi :

Avant la « date de déclenchement », c’était exactement ainsi que cela apparaissait avec le message « La prochaine automation se déclenchera à : [date/heure] » ; cependant, une fois cette date/heure passée sans exécution réussie, le message n’apparaît plus. Lors des tests, j’ai modifié le timing à 1 minute et le message de déclenchement est réapparu. Le mois précédent, lorsqu’il ne s’est pas déclenché, j’ai mis à jour le minuteur et le message indiquant qu’il se déclencherait à la première heure du mois suivant est apparu (mais il ne s’est pas déclenché).

En fait, cela a fonctionné et s’est déclenché certains mois, mais pas d’autres, donc la raison n’est pas claire, mais maintenant, il semble ne plus jamais s’activer automatiquement. Quelle est la version de Discourse que vous utilisez ? La mienne est 2026.5.0-latest…

Malheureusement, même lorsque je déclenche, rien n’apparaît dans /logs. (J’ai sélectionné toutes les options).

Je ne pense pas que ce soit le problème, car j’ai modifié le déclencheur à 1 minute et cela a été envoyé :

Je suis sur la même version et je mets à jour au moins une fois par semaine.

2 « J'aime »

D’accord, merci ! Souhaitez-vous essayer de créer une automatisation de test qui se déclenche mensuellement ?

J’ai l’impression que le problème vient du déclencheur « mensuel », car lorsque je le remplace par un déclencheur toutes les 1 minute, cela fonctionne.

1 « J'aime »

Ok, je l’ai réglé sur un mois, puis je l’ai déclenché et cela a fonctionné. Mais attendre un mois pour tester n’est pas vraiment utile ici. Je vais essayer de définir la date de début dans quelques minutes.

édit : le mode mensuel semble fonctionner pour moi

Si cela fonctionne pour vous, peut-être que l’erreur ne concerne que certains utilisateurs ?

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… :stuck_out_tongue:

Quoi qu’il en soit, j’ai fait un peu plus d’investigations :detective:

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. :grimacing:

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 :

2 « J'aime »

@j.jaffeux, tu pourrais jeter un coup d’œil rapide à ça :eyes: ?

1 « J'aime »

Je note simplement qu’il m’est venu à l’esprit, à un moment pendant le débogage, que le comportement actuel pourrait être intentionnel (étant donné que les tests de spécification étaient configurés avec des jours décalés). Cependant, je soutiendrais que les administrateurs qui configurent cette automatisation s’attendent probablement à une date correspondant au mois calendaire et non au Nᵉ jour du mois. De plus, le saut de mois pour une automatisation lorsqu’elle ne peut pas trouver le Nᵉ jour du mois pose problème.

Édité : j’ai ajouté une correction pour un cas limite ainsi que des tests de spécification pour le cas où une correspondance de date exacte pour le mois suivant n’est pas trouvée ; dans ce cas, on passe au dernier jour du mois (par exemple : 31 janvier → 28 février). J’ai également pris en compte les années bissextiles.

2 « J'aime »

Bonjour @Lilly

Merci beaucoup pour votre enquête. Je ne sais pas si votre correctif a été fusionné et s’il résoudra le problème des dates de mois. Cependant, je suppose que si je mets à jour le déclencheur pour chaque mois, cela devrait fonctionner, n’est-ce pas ?

Autrement dit, je devrais mettre à jour spécifiquement le déclencheur pour ce jour précis chaque mois, et il se déclenchera alors. Si j’ai bien compris, le problème survenait lorsqu’il voulait choisir le jour de lui-même. J’espère que votre correctif résoudra cela… j’ai vu que le bot de lot vous posait des défis, mais j’espère que tout se passera bien. Merci encore pour votre aide !

Merci à tous ! <3

Désolé, ma PR n’a pas encore été fusionnée et attend l’examen final d’un membre de l’équipe. Pour l’instant, vous pouvez essayer de mettre à jour le déclencheur avec une date différente. Assurez-vous simplement que, lors de la configuration, le message « prochain déclencheur » qui s’affiche indique la bonne date de prochain exécution mensuelle.

1 « J'aime »