Есть ли способ заставить Discourse пересчитать все «Топ-темы» в профиле пользователя после импорта и/или обновить счётчик ссылок в теме?
Странно, но «Топ-ответы» работают корректно.
Есть ли способ заставить Discourse пересчитать все «Топ-темы» в профиле пользователя после импорта и/или обновить счётчик ссылок в теме?
Странно, но «Топ-ответы» работают корректно.
Я полагаю, что статистика рассчитывается автоматически каждые 24 часа. Вам не нужно ничего делать, кроме как ждать.
Похоже, это не так: у нас уже несколько недель работает тест импорта. Некоторые вещи исправились сами, другие — нет. Самый яркий пример — «Топ-темы». Ещё одна проблема — количество ссылок в темах. В остальном на всём сайте всё выглядит правильно.
Хм, глядя на код, у нас есть две задачи — TopRefreshToday (запускается каждый час) и TopRefreshOlder (запускается каждые 24 часа). Обе вызывают методы отсюда](discourse/app/models/top_topic.rb at main · discourse/discourse · GitHub), которые при необходимости можно запустить вручную из консоли Rails.
Не могли бы вы проверить /sidekiq/scheduler, чтобы убедиться, что эти две задачи выполняются?
Предполагаю, что вся необходимая информация для расчёта топовых тем была перенесена вместе с импортом?
В данном случае эти задачи выполняются без проблем. Проблема, судя по всему, в том, что поле like_count в таблице topics не заполнено. Есть ли хороший способ пересчитать значение для этого поля, или это нужно делать во время импорта? Если это действительно нужно делать во время импорта, то как должен работать расчёт? Это сумма всех лайков со всех постов в теме?
Я нашёл способ с использованием консоли Rails, который, похоже, пересчитывает это поле:
Topic.visible.map(&:update_statistics)
Проблема этого решения в том, что при наших количествах тем и постов я оценил, что выполнение этой команды займёт около двух месяцев.
Похоже, вы можете восстановить like_count с помощью метода update_action_counts:
Так что, возможно, что-то вроде:
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
Это, похоже, сработало очень хорошо для @Ghan и меня, большое спасибо ![]()