这是针对 RSS 轮询可能需要 20 分钟或更长时间才能处理一个订阅源 以及 #43645 的后续讨论,该 PR 通过将轮询作业切换到 post.previously_new_record? 来停止将未更改的项目计为已导入(poll_feed.rb#L132)。
该修复留下了状态的另一半问题:一个已经导入且未更改的项目现在会在每次轮询时被报告为“Updated the existing topic”(更新了现有主题),因为无论 TopicEmbed.import 是否修改了任何内容,它都会返回其现有的帖子,而状态逻辑是 previously_new_record? ? :imported : :updated。
我们在 2026.7.3 ESR 版本中看到了相同的标签(在该版本中是由旧检查加上 rss_polling_use_pubdate 引起的),并且通过阅读 6ba633db 处的 main 分支代码,它似乎仍然存在;我尚未运行 main 分支以确认。
复现步骤
- 添加一个订阅源并轮询一次,以便其项目被导入。
- 在订阅源未发生变化的情况下再次轮询。
- 打开该订阅源的“Recent polls”(最近轮询)。
实际结果: 每个项目都显示“Updated the existing topic”(更新了现有主题)。
预期结果: 未更改的项目应报告为未更改(或跳过),只有当帖子确实被修改时,才显示“Updated”(已更新)。
TopicEmbed.import 已经计算了是否有变化(topic_embed.rb#L140-L153 中的 content_changed、title_changed、tags_changed);将该结果暴露给轮询作业将使状态准确。