Automação recorrente acionada mensalmente não está funcionando conforme o esperado

Olá!

Tenho enfrentado um problema com uma automação que deveria ser acionada no início do mês; no entanto, mesmo estando habilitada, ela não está sendo disparada automaticamente. Não consigo encontrar nenhum log ou maneira de depurar o motivo pelo qual ela não está rodando sozinha quando deveria. Alguém aqui sabe como posso resolver esse problema, por favor?

Como você pode ver abaixo, a automação deve “Agendar um PM com os resultados do Data Explorer” automaticamente todo mês. Se eu clicar em “disparar agora”, funciona como esperado: os usuários adicionados à lista recebem o resultado do Data Explorer, bem como um CSV; no entanto, o acionamento automático não está funcionando.

Agradeceria muito qualquer feedback ou sugestão que possa me ajudar a resolver isso. Obrigado!

1 curtida

Você confirmou a data exata agendada e a configuração do fuso horário e, se disponível, ativou o botão Executar Tarefas Perdidas?

1 curtida

Você realizou algum teste para garantir que todos os critérios estão sendo atendidos naturalmente (além de disparar agora)?

Ou seja, defina o agendamento para ocorrer diariamente e envie para um grupo de teste. Se funcionar corretamente, altere para mensal e envie para seu grupo real.

Além disso, acredito que seu público-alvo precise ter a consulta do Explorador de Dados compartilhada com eles.

1 curtida

Oi

Obrigado pela ajuda.. @kairo162 @putty

Sim.. mas o problema não é que não está rodando na data/hora agendada, o problema é que não está rodando de jeito nenhum.

Onde posso encontrar esse botão, por favor?

Deveria enviar uma MP direta para dois usuários. Os usuários têm a consulta compartilhada com eles. Obrigado pela sugestão de testar tentando diferentes agendamentos. Vou tentar experimentar usando um grupo de teste também.

2 curtidas

A principal diferença que notei é que sua interface não mostra quando a automação deve ser acionada a seguir.

Acho que eu começaria configurando uma nova automação com as mesmas configurações e verificando se ela recebe uma ‘próxima data de acionamento’ após ativá-la.

1 curtida

Eu uso exatamente este script de automação em vários lugares sem problemas. Aqui está minha configuração em um deles — mudei a recorrência para 5 minutos em vez de uma semana para este teste, mas ele dispara semanalmente como esperado quando configurado assim):

PM (tech-admin é um grupo)

Tente acionar a automação e depois verifique seus logs em yoursite/logs

1 curtida

Vejo isso:

Talvez tente remover o emoji de controles do nome do script e do título da consulta do explorador de dados. Isso pode estar quebrando o payload (embora eu ache que deveriam estar OK).

1 curtida

Olá @Moin @Lilly

Obrigado pela ajuda! Tenho medo de que o mistério ainda não tenha sido resolvido… eis o porquê:

Antes da ‘data de acionamento’, era exatamente assim que aparecia, com a mensagem ‘Próxima automação será acionada em: [data/hora]’; no entanto, após essa data/hora passar sem que fosse executada com sucesso, a mensagem não é mais exibida. Durante os testes, alterei o tempo para 1 minuto e a mensagem de acionamento reapareceu. Em um mês anterior, quando não foi acionada, atualizei o temporizador e apareceu a mensagem de que seria acionada na primeira hora do mês seguinte (mas não foi).

Na verdade, funcionou e foi acionado em alguns meses, mas não em outros, então não está claro o motivo, mas agora parece que não ativa mais automaticamente, nunca. Qual é a versão do Discourse que você está usando? A minha é 2026.5.0-latest…

Infelizmente, mesmo quando aciono, nada aparece em /logs. (Tenho todas as opções selecionadas).

Acho que não é esse o problema, pois mudei o acionador para 1 minuto e ele foi enviado:

Estou na mesma e atualizo semanalmente, no mínimo.

2 curtidas

Ok, obrigado! Gostaria de tentar criar uma automação de teste que dispare mensalmente, por favor?

Tenho a sensação de que o problema está no gatilho ‘mensal’, pois quando o altero para um gatilho de 1 minuto, funciona.

1 curtida

Ok, configurei para um mês, então disparei e funcionou. Mas esperar um mês para testar não é realmente útil aqui. Vou tentar definir a data de início em alguns minutos.

edit: o mensal parece estar funcionando para mim

Se está funcionando para você, talvez o erro afete apenas alguns usuários?

Ok, então o Moin e eu estávamos conversando sobre esse caso hoje, e ela mencionou que talvez houvesse um bug ao usar “mensal”, já que o comprimento de um mês varia? Claro que ela estava certa — em parte… :stuck_out_tongue:

De qualquer forma, fiz uma pequena investigação mais aprofundada :detective:

Na verdade, não consegui encontrar o script de automação para o schedule pm with data-explorer results na pasta plugins/automation/lib/discourse_automation/scripts do core, então ele deve estar escondido em outro lugar.

Mas analisei a lógica aqui para recorrência (presumivelmente, esse script a utiliza) em plugins/automation/lib/discourse_automation/triggers/recurring.rb:

Acredito que o código subjacente para automações mensais recorrentes esteja calculando o Nº dia da semana em vez da data real do calendário, e há uma incompatibilidade lógica com Calendar day — ao injetar BYDAY=#{count}#{byday} na RRule, a automação força um alinhamento com o dia da semana, quando deveria usar BYMONTHDAY em vez de BYDAY.

Então, se você configurar uma automação para começar em 15 de abril (que, por acaso, é a 3ª quarta-feira de abril), o sistema interpreta a regra como: executar na 3ª quarta-feira de todo mês.

Quando chega maio, a 3ª quarta-feira é 20 de maio, o que faz com que o agendamento desvie em 5 dias.

Além disso, se você configurar uma automação no dia 30 ou 31 de um mês (por exemplo, a “5ª terça-feira”), o sistema procurará pela 5ª terça-feira no mês seguinte. Se aquele mês tiver apenas 4 terças-feiras, a automação falhará completamente em encontrar uma data válida e pulará silenciosamente todo o mês.

Tenho uma correção testada e estou abrindo um PR caso a equipe queira dar uma olhada. Ele altera a lógica de Nº dia da semana para Data exata do calendário.


Aqui estão algumas capturas de tela dos meus testes e depurações:

2 instâncias, uma sem correção e outra com minha correção de lógica

Crie a mesma automação exata em ambas (a versão corrigida está à direita):

Veja as diferenças nos banners que dizem “Próxima automação será acionada em:” com um desvio de 5 dias — a versão sem correção está desviando para a terça-feira (20 de maio), em vez de 15 de maio.

Por exemplo, meses poderiam ser totalmente pulados se estivesse procurando pela 4ª quinta-feira em vez de uma data real.

Também é possível testar o mesmo resultado no console do Rails

Sem correção:

Com correção:

PR aqui:

edição: o bug parece estar afetando qualquer script de automação que use o gatilho recurring configurado para executar todo mês. :grimacing:

Consigo reproduzir o banner vazio às vezes também. Por exemplo, se alguém definir a data de início para 29 de abril de 2026, então não será possível encontrar a 5ª quarta-feira para maio, porque ela não existe — a automação falhará ao ser acionada aqui: (sem correção à esquerda, com correção à direita)

Parece que o bug lança um NoMethodError no Rails quando não consegue encontrar o Nº dia da semana como acima; por isso, o banner de próximo acionamento fica vazio e a execução falha:

2 curtidas

@j.jaffeux, pode dar uma olhada rápida nisso :eyes:?

1 curtida

Só observando que, em certo momento durante a depuração, veio à minha mente que o comportamento existente pode ser intencional (dado que os testes de especificação foram configurados com dias variáveis). No entanto, argumentaria que os administradores que configuram essa automação provavelmente esperam o dia do mês no calendário, e não o N-ésimo dia do mês. Além disso, a omissão de meses em uma automação quando não é possível encontrar o N-ésimo dia do mês é problemática.

Edição: acabei de adicionar uma correção para um caso limite e testes de especificação para quando não é possível encontrar uma correspondência exata de data para o próximo mês; nesse caso, o sistema vai para o último dia do mês (ou seja, 31 de janeiro → 28 de fevereiro). Também foi considerada a questão do ano bissexto.

2 curtidas

Olá @Lilly,

Muito obrigado por investigar isso. Não sei se sua correção foi mesclada e se resolverá o problema da data do mês. No entanto, presumo que, se eu atualizar o gatilho para cada mês, deve funcionar, certo?

Em outras palavras, eu precisaria atualizar especificamente o gatilho para aquele dia específico de cada mês e, em seguida, ele será acionado. Se entendi corretamente, o problema ocorria quando ele tentava escolher o dia sozinho. Espero que sua correção resolva isso… vi que o bot de lote estava te dando um desafio, mas espero que tudo corra bem. Mais uma vez, obrigado pela sua ajuda!

Obrigado a todos! <3

Desculpe, meu PR ainda não foi mesclado e está aguardando uma revisão final de um membro da equipe. Por enquanto, você pode tentar atualizar o gatilho com uma data diferente; apenas certifique-se de que, ao configurá-lo, a mensagem “próximo gatilho” que aparecer indique a próxima data mensal correta de execução.

1 curtida