Tópicos principais não funcionando após importação

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 :slight_smile: