这是因为 discourse_reactions_like_sync_enabled 设置为 false。这是在从2024 年 5 月的迁移中故意为之,以避免干扰现有数据。
当此设置禁用时,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 记录存在的反应是预期行为。