Existe alguma maneira de fazer o Discourse recalcular todos os Tópicos Principais no perfil de um usuário após uma importação e/ou contagem de links em um tópico?
Curiosamente, as Respostas Principais estão funcionando corretamente.
Existe alguma maneira de fazer o Discourse recalcular todos os Tópicos Principais no perfil de um usuário após uma importação e/ou contagem de links em um tópico?
Curiosamente, as Respostas Principais estão funcionando corretamente.
Acredito que as estatísticas sejam calculadas automaticamente a cada 24 horas. Você não precisa fazer nada além de esperar.
Isso não parece ser o caso. Temos um teste de importação em execução há algumas semanas; algumas coisas se autocorrigiram, outras não. O tópico ‘Top Topics’ é o maior exemplo disso. A quantidade de links nos tópicos é outro. Fora isso, parece estar correto em todo o site.
Hmm, analisando o código, temos dois jobs — TopRefreshToday (acionado a cada hora) e TopRefreshOlder (acionado a cada 24 horas). Ambos chamam métodos de aqui, que você deve conseguir executar manualmente no console do Rails, se necessário.
Você pode verificar /sidekiq/scheduler para ver se os dois jobs estão sendo executados?
Estou assumindo que todas as informações relevantes para calcular os tópicos principais foram importadas junto com a importação?
Neste caso, esses jobs estão rodando perfeitamente. O problema parece ser que o campo like_count na tabela de tópicos não está preenchido. Existe uma boa maneira de recalcular o valor desse campo, ou isso precisa ser feito durante a importação? Se precisar ser feito durante a importação, como o cálculo deve funcionar? É uma soma de todos os likes de todos os posts no tópico?
Eu encontrei uma maneira usando o console do Rails que parece recalcular esse campo:
Topic.visible.map(&:update_statistics)
O problema com essa solução é que, para a quantidade de tópicos e posts que temos, eu estimava que levaria cerca de dois meses para que esse comando fosse concluído.
Parece que você pode regenerar o like_count usando o método update_action_counts:
Então, talvez algo assim:
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
Isso parece ter funcionado muito bem para o @Ghan e para mim, muito obrigado ![]()