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.

1 curtida

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.

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 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 — até certo ponto… :stuck_out_tongue:

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

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

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

Acredito que o código subjacente para automações recorrentes mensais está 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} no RRule, a automação força um alinhamento por 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 o agendamento desviar 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á a 5ª terça-feira no mês seguinte. Se esse mês tiver apenas 4 terças-feiras, a automação não conseguirá encontrar uma data válida e pulará silenciosamente o mês inteiro.

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 a Data exata do calendário.


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

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

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

Veja as diferenças nas faixas 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 completamente 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:

1 curtida

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