Automazione ricorrente attivata mensilmente non eseguita come previsto

Ciao!

Sto riscontrando un problema con un’automazione che dovrebbe attivarsi all’inizio del mese; tuttavia, anche se è abilitata, non viene attivata automaticamente. Non riesco a trovare alcun registro o un modo per eseguire il debug del motivo per cui non viene eseguita autonomamente quando dovrebbe. Qualcuno di voi sa come risolvere questo problema, per favore?

Come potete vedere di seguito, l’automazione dovrebbe ‘Programmare una riunione con i risultati di Data Explorer’ automaticamente ogni mese. Se faccio clic su “Attiva ora”, funziona come previsto: gli utenti aggiunti all’elenco ricevono il risultato di Data Explorer nonché un file CSV; tuttavia, l’attivazione automatica non viene eseguita.

Apprezzerei qualsiasi feedback o suggerimento che possa aiutarmi a risolvere il problema. Grazie!

1 Mi Piace

Hai confermato la data esatta programmata e l’impostazione del fuso orario e, se disponibile, hai attivato il pulsante Esegui lavori mancati?

1 Mi Piace

Hai effettuato dei test per assicurarti che tutti i criteri siano soddisfatti in modo naturale (a parte trigger now)?

Cioè, imposta l’orario per accadere ogni giorno e vai a un gruppo fittizio. Se funziona correttamente, passa poi a mensile per il tuo gruppo effettivo.

Inoltre, credo che il tuo pubblico di destinazione debba avere la query dell’esploratore di dati condivisa con loro.

1 Mi Piace

Ciao

Grazie per l’aiuto.. @kairo162 @putty

Sì.. ma il problema non è che non viene eseguito alla data/ora prevista, il problema è che non viene eseguito affatto.

Dove posso trovare questo pulsante, per favore?

Dovrebbe inviare un messaggio privato diretto a due utenti. Gli utenti hanno la query condivisa con loro. Grazie per il suggerimento di testare provando orari diversi. Proverò a sperimentare anche usando un gruppo di prova.

2 Mi Piace

La principale differenza che noto è che la tua interfaccia non mostra quando l’automazione dovrebbe essere attivata la prossima volta.

Penso che inizierei configurando una nuova automazione con le stesse impostazioni e verificando se, dopo averla abilitata, venga visualizzata una “data di prossima attivazione”.

1 Mi Piace

Utilizzo esattamente questo script di automazione in più punti senza problemi. Ecco la mia configurazione in uno di essi: ho modificato la ricorrenza in 5 minuti invece di una settimana per questo test, ma viene attivato settimanalmente come previsto quando è impostato così:

PM (tech-admin è un gruppo)

Prova ad attivare l’automazione e poi controlla i tuoi log in yoursite/logs

1 Mi Piace

Vedo questo:

Forse prova a rimuovere l’emoji delle manopole di controllo dal nome dello script e dal titolo della query dell’esploratore dati. Potrebbe essere quello a rompere il payload (anche se penso che dovrebbero essere ok).

1 Mi Piace

Ciao @Moin @Lilly

Grazie per l’aiuto! Temo che il mistero non sia ancora risolto… ecco perché:

Prima della ‘data di attivazione’, era esattamente così che appariva, con il messaggio ‘La prossima automazione si attiverà alle: [data/ora]’; tuttavia, dopo che quella data/ora è passata senza che venisse eseguita con successo, il messaggio non viene più mostrato. Durante i test, ho modificato l’orario in 1 minuto e il messaggio di attivazione è ricomparso. In un mese precedente, quando non si è attivata, ho aggiornato il timer e ha mostrato il messaggio che si sarebbe attivata alla prima ora del mese successivo (ma non è successo).

In realtà ha funzionato ed è stato attivato in alcuni mesi, mentre in altri no, quindi non è chiaro il motivo, ma ora sembra non attivarsi più automaticamente. Che versione di Discourse state utilizzando? La mia è 2026.5.0-latest…

Purtroppo, anche quando attivo manualmente, non appare nulla in /logs. (Ho selezionato tutte le opzioni).

Non credo sia questo il problema perché ho modificato l’attivazione a 1 minuto ed è stata inviata:

Anche io sono sulla stessa versione e aggiorno almeno una volta a settimana.

2 Mi Piace

Ok, grazie! Vorresti provare a creare un’automazione di test che si attivi mensilmente?

Ho il presentimento che il problema sia legato all’attivazione ‘mensile’, perché quando la modifico in un’attivazione di 1 minuto, funziona.

1 Mi Piace

Ok, l’ho impostata su mensile, l’ho attivata e ha funzionato. Ma aspettare un mese per fare i test non è molto utile in questo caso. Tra pochi minuti proverò a impostare la data di inizio.

modifica: sembra che l’impostazione mensile funzioni per me

Se funziona per te, forse l’errore riguarda solo alcuni utenti?

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

Comunque, ho fatto un po’ di ricerche :detective:

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

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:

2 Mi Piace

@j.jaffeux, dai un’occhiata veloce a questo :eyes?

1 Mi Piace

Voglio solo notare che, durante il debug, mi è venuto in mente che il comportamento esistente potrebbe essere intenzionale (considerando che i test di specifica erano configurati con giorni scorrevoli). Tuttavia, sostengo che gli amministratori che configurano questa automazione si aspettano probabilmente di lavorare con il mese del calendario e non con l’N-esimo giorno del mese. Inoltre, il salto di mesi per un’automazione quando non riesce a trovare l’N-esimo giorno del mese è problematico.

Modifica: ho appena aggiunto una correzione per un caso limite e i test di specifica per quando non è possibile trovare una corrispondenza esatta della data per il mese successivo; in tal caso, si passa all’ultimo giorno del mese (ad esempio: 31 gennaio → 28 febbraio). Ho anche considerato gli anni bisestili.

2 Mi Piace

Ciao @Lilly

Grazie mille per esserti occupata di questa questione. Non so se la tua correzione sia stata unita al codice principale e se risolverà il problema relativo alle date dei mesi. Tuttavia, suppongo che, se aggiorno l’attivatore per ogni mese, dovrebbe funzionare, giusto?

In altre parole, dovrei aggiornare specificamente l’attivatore per quel giorno specifico di ogni mese e poi si attiverà. Se ho capito bene, il problema si presentava quando il sistema cercava di scegliere il giorno in autonomia. Speriamo che la tua correzione risolva il problema… ho visto che il bot batch ti ha creato qualche difficoltà, ma spero che tutto vada per il meglio. Grazie ancora per il tuo aiuto!

Grazie a tutti! <3

Mi dispiace, la mia pull request non è ancora stata unita ed è in attesa di una revisione finale da parte di un membro del team. Per ora, puoi provare ad aggiornare il trigger con una data diversa; assicurati solo che, quando lo configuri, il messaggio «prossimo trigger» che appare indichi correttamente la data di esecuzione mensile successiva.

1 Mi Piace