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.
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.
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.
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.
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):
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).
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:
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.
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…
De qualquer forma, fiz uma pequena investigação mais aprofundada
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
edição: o bug parece estar afetando qualquer script de automação que use o gatilho recurring configurado para executar todo mês.
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:
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.
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!
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.