Ok, quindi oggi Moin e io stavamo parlando di questo caso, e lei ha sollevato il possibile problema di un bug legato all’uso di “mensile”, dato che la durata di un mese varia? Ovviamente aveva ragione… in un certo senso… ![]()
Comunque, ho fatto un po’ di ricerche ![]()
Non sono riuscito a trovare lo script di automazione per schedule pm with data-explorer results nella cartella plugins/automation/lib/discourse_automation/scripts di core, quindi deve essere nascosto da qualche altra parte.
Tuttavia, ho esaminato la logica qui per le ricorrenze (presumibilmente quello script la utilizza) in plugins/automation/lib/discourse_automation/triggers/recurring.rb:
Penso che il codice sottostante per le automazioni mensili ricorrenti stia calcolando il N-esimo giorno della settimana invece della data effettiva del calendario, e che ci sia un disallineamento logico con Calendar day - che, iniettando BYDAY=#{count}#{byday} nell’RRule, l’automazione forza un allineamento basato sul giorno della settimana, mentre dovrebbe usare BYMONTHDAY invece di BYDAY.
Quindi, se imposti un’automazione per iniziare il 15 aprile (che casualmente è il mercoledì 3° di aprile), il sistema interpreta la regola come: esegui il 3° mercoledì di ogni mese.
Quando arriva maggio, il 3° mercoledì è il 20 maggio, il che fa sì che la programmazione si sposti di 5 giorni.
Inoltre, se imposti un’automazione il 30 o il 31 di un mese (ad esempio, il “5° martedì”), il sistema cercherà il 5° martedì nel mese successivo. Se quel mese ha solo 4 martedì, l’automazione non riuscirà completamente a trovare una data valida e salterà silenziosamente l’intero mese.
Ho una correzione testata e sto creando una PR se il team vuole darci un’occhiata. Cambia la logica dal N-esimo giorno della settimana alla data esatta del calendario.
Ecco alcuni screenshot dai miei test e debug:
2 istanze, una senza correzione e l’altra con la mia correzione logica
Crea la stessa automazione in entrambe (la versione corretta è a destra):
Guarda le differenze nei banner che dicono “La prossima automazione si attiverà alle:” con uno scostamento di 5 giorni - la versione non corretta si sposta verso il mercoledì 3° (20 maggio), invece del 15 maggio.
Ad esempio, i mesi potrebbero essere completamente saltati se si cercasse il 4° giovedì invece di una data effettiva.
Puoi anche verificare lo stesso risultato nella console di rails
Non corretto:
Con correzione:
PR qui:
Edit: il bug sembra colpire qualsiasi script di automazione che utilizza il trigger recurring impostato per essere eseguito ogni mese. ![]()
Posso riprodurre anche il banner vuoto a volte, ad esempio se si imposta la data di inizio per il 29 aprile 2026, allora non riesce a trovare il 5° mercoledì per maggio perché non esiste - l’automazione fallirà qui: (non corretto a sinistra, corretto a destra)
Sembra che il bug lanci un NoMethodError in rails quando non riesce a trovare il N-esimo giorno della settimana come sopra; da qui il banner vuoto per la prossima attivazione e l’esecuzione fallita:






