Это связано с тем, что параметр discourse_reactions_like_sync_enabled установлен в значение false. Такое решение было принято намеренно при миграции в мае 2024 года, чтобы не нарушить существующие данные.
Когда этот параметр отключён, синхронизатор ReactionLikeSynchronizer не запускается. Этот синхронизатор отвечает за:
- Создание записей
PostAction(лайки) для реакций - Обновление
posts.like_countс учётом реакций
При отсутствии работы синхронизации:
- Реакции существуют в таблице
discourse_reactions_reaction_users - Но соответствующие записи
PostActionотсутствуют - А значение
posts.like_countостаётся равным 0
Ваша догадка о временных рамках абсолютно верна — у постов 2023/начала 2024 года реакции были добавлены в период, когда синхронизация не работала, поэтому их like_count никогда не обновлялся. Старая логика сериализатора затем полностью исключала действие «лайк», если одновременно выполнялись условия count = 0 И can_act = false (окно отмены действия истекло).
Предлагаемое исправление не устраняет расхождение в самих данных — оно лишь обеспечивает корректное отображение реакций в интерфейсе, даже если данные PostAction/like_count не синхронизированы. На сайтах, где discourse_reactions_like_sync_enabled = false, наличие реакций независимо от записей PostAction является ожидаемым поведением.