# RSS 轮询：#43645 之后，未更改的订阅项被报告为「已更新现有主题」

**URL:** https://meta.discourse.org/t/rss-polling-unchanged-feed-items-are-reported-as-updated-the-existing-topic-after-43645/413280
**Category:** Bug
**Tags:** rss-polling
**Created:** [2026年九月24日 21:03 UTC](https://meta.discourse.org/t/rss-polling-unchanged-feed-items-are-reported-as-updated-the-existing-topic-after-43645/413280 "2026-09-24T21:03:17Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Sailor](https://avatars.discourse-cdn.com/v4/letter/s/a587f6/32.png) [@Sailor](https://meta.discourse.org/u/Sailor)
#### Post date: [2026年九月24日 21:03 UTC](https://meta.discourse.org/t/rss-polling-unchanged-feed-items-are-reported-as-updated-the-existing-topic-after-43645/413280/1 "2026-09-24T21:03:17Z")

</div>

这是针对 [RSS 轮询可能需要 20 分钟或更长时间才能处理一个订阅源](https://meta.discourse.org/t/rss-polling-may-take-20-minutes-and-more-to-process-a-feed/412322) 以及 [#43645](https://github.com/discourse/discourse/pull/43645) 的后续讨论，该 PR 通过将轮询作业切换到 `post.previously_new_record?` 来停止将未更改的项目计为已导入（[poll\_feed.rb#L132](https://github.com/discourse/discourse/blob/6ba633dbf56576959ff3d578048ca9698de153ff/plugins/discourse-rss-polling/app/jobs/jobs/discourse_rss_polling/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` 分支以确认。

**复现步骤**

1. 添加一个订阅源并轮询一次，以便其项目被导入。
2. 在订阅源未发生变化的情况下再次轮询。
3. 打开该订阅源的“Recent polls”（最近轮询）。

**实际结果：** 每个项目都显示“Updated the existing topic”（更新了现有主题）。

**预期结果：** 未更改的项目应报告为未更改（或跳过），只有当帖子确实被修改时，才显示“Updated”（已更新）。

`TopicEmbed.import` 已经计算了是否有变化（[topic\_embed.rb#L140-L153](https://github.com/discourse/discourse/blob/6ba633dbf56576959ff3d578048ca9698de153ff/app/models/topic_embed.rb#L140-L153) 中的 `content_changed`、`title_changed`、`tags_changed`）；将该结果暴露给轮询作业将使状态准确。
