Gostaria de solicitar uma ou duas configurações de site onde possamos definir uma “janela de tempo” e “dias de resumo” quando as tarefas de resumo forem enfileiradas.
O motivo para essa solicitação é que, para a maioria dos sites, incluindo o nosso, temos uma área geográfica dominante de usuários; por exemplo, o nosso é os EUA, outros podem ser Coreia, Brasil, Alemanha, Austrália ou qualquer região do planeta.
O envio de e-mails de resumo seria mais eficiente se pudesse ser feito durante o horário comercial normal e dias úteis (para a base principal de usuários). Muitos sites pagam por serviços de envio em massa como MailGun ou SendGrid para enviar e-mails de resumo; e, portanto, fazer com que esses e-mails de resumo cheguem à caixa de entrada dos membros “por volta das” 10h de segunda-feira é muito melhor do que chegar às 3h de sábado.
Essas tarefas são enfileiradas, e ter uma ou duas variáveis de configuração como “janela de tempo para enfileiramento de resumo” e “dias permitidos para enfileiramento de resumo” tornaria o dinheiro gasto no envio de e-mails de resumo mais eficiente.
Pesquisei no repositório principal no GitHub e não encontrei nenhuma maneira de definir esses parâmetros importantes. Será que os perdi?
Por padrão, o Discourse enviará o resumo no mesmo horário em que o usuário completa um período de 7 dias de inatividade, o que significa que o e-mail será alinhado a uma janela em que o usuário esteve ativo no site. Isso é ótimo, pois se adaptará automaticamente a cada usuário e fuso horário.
Um problema muito comum ocorre durante importações, quando administradores esquecem de desativar os resumos para usuários importados ou esquecem de importar o horário da última atividade nos dados importados, fazendo com que tudo seja definido para meia-noite.
LOL. Você acertou em cheio no nosso problema! Nossos usuários importados tinham a última atividade definida no momento em que foram importados para o Discourse a partir do nosso site legado vB.
No nosso caso, os scripts do Discourse que usamos não faziam isso; e não podemos “esquecer” de fazer algo sobre o que não tínhamos a mínima ideia desde o início, LOL.
Como dizem, a retrospectiva é sempre 20/20.
Não acho que a maioria dos usuários que estão migrando para o Discourse pela primeira vez a partir de um fórum legado possa “esquecer” algo “antes de saber os detalhes de como os resumos do Discourse funcionam”
Não é algo grave. Mas, como você mesmo disse:
Daí, o recurso que estou solicitando ajudaria a mitigar o problema para fóruns migrados, aquelas “almas sem suporte” que estão por aí no ciberespaço e geralmente estão “sozinhas” quando migram um fórum para o Discourse
Já que, suponho, esse “problema comum” não será resolvido, você poderia, por favor, postar um link para o código no repositório onde eu possa escrever um plugin para corrigir esse problema para nós, almas perdidas da migração, que “esquecemos de fazer algo” antes de “sabermos que precisávamos fazer isso”?
Ou talvez nem precise disso. Em vez de um monkey patch, vou escrever um script em Ruby para simplesmente alterar o horário da “última atividade” dos usuários migrados para um horário dentro do expediente normal (basta adicionar 10 horas à meia-noite e pronto!)
Acabei de atualizar todos esses usuários legados para que suas datas/horas de last_seen_at fiquem alinhadas às 10h (EST).
Com base na minha leitura da sua resposta, isso colocará os e-mails de resumo na fila para por volta desse horário da manhã, às 10h.
Correto?
Atualização:
Hmm. Parece que não funcionou. Após definir as datas/horas de last_seen_at para as 10h (EST), o sidekiq está enfileirando os resumos agora, logo após a meia-noite (EST); e os logs de envio de e-mail do painel de administração também mostram que os resumos estão sendo enviados agora.
Essa “alinhamento mágico da última atividade” com o horário de envio dos resumos não parece estar funcionando como descrito no meu caso.