多次重复的总结邮件条目

这里是发送给一个闲置测试用户帐户的另一个示例:

  • 最后上线时间 2024-09-12
  • 摘要频率:每日
  • “在摘要邮件中包含新用户的内容”:已勾选
  • 没有相关标签被静音

热门话题:

“人工智能——越大越好?” – 重复 3 次。该话题有 3 个标签,0 条回复,0 个点赞。
“社会工程学挑战” – 重复 2 次。该话题有 2 个标签,1 条回复,0 个点赞。

为您推荐:

“新标签请求” – 未重复。该话题有 0 个标签,0 条回复,0 个点赞。

1 个赞

在最新的摘要中,我的一则帐户收到的摘要中,没有重复的主题,但下面的评论(“热门帖子”)却有重复。有五个栏位,其中两个是重复的(三个独特帖子),都来自同一个主题。

编辑:我正在查看发送给不同测试/管理员帐户的一些历史摘要:

  • 上一个摘要在“热门帖子”中也有两个重复项,也来自同一个主题。
  • 再往前一个摘要有一个重复的主题,但没有重复的“热门帖子”。“为你推荐”中有一个重复项。
  • 再往前一个摘要没有任何重复项。
1 个赞

@j127,了解您摘要主题有多少标签会很有趣。在我最近的样本中,重复与主题上的标签数量相对应。这可能只是巧合——也可能不是。

3 个赞

我已经在我的本地 Discourse 站点上重现了该问题,方法是在 digest suppress tags 站点设置中添加一个标签,然后创建一个带有多个标签的主题。

以下代码是导致该问题的原因:discourse/app/models/topic.rb at main · discourse/discourse · GitHub

    if SiteSetting.digest_suppress_tags.present?
      tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
      if tag_ids.present?
        topics =
          topics.joins("LEFT JOIN topic_tags tg ON topics.id = tg.topic_id").where(
            "tg.tag_id NOT IN (?) OR tg.tag_id IS NULL",
            tag_ids,
          )
      end
    end

编辑:我认为这里不需要 LEFT JOIN。连接的 topic_tags 表中的列似乎在方法后面没有被使用。修复可能很简单:

if SiteSetting.digest_suppress_tags.present?
tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
  if tag_ids.present?
  topics =
    topics.where.not(id: TopicTag.where(tag_id: tag_ids).select(:topic_id))
  end
end

我将把它留给 Discourse 团队来确定最佳方法。for_digest 方法运行了很多次,需要高效。

4 个赞

是的,所有重复的帖子都有两个标签。

2 个赞

@simon – 非常感谢您对此进行调查!:smiley: 我确信这需要筛选大量信息。我期待 Discourse 团队回来并根据您的分析采取行动。

1 个赞

确认一下,删除我在 digest suppress tags 中的标签已将摘要恢复正常。(我暂时依赖 digest suppress categories。)

4 个赞

@simon 说得对 :+1: 那确实是那个 bug

7 个赞

好消息!:smiley:

我不太清楚合并的提交何时可以在 beta 测试频道中获得。如果我使用的是 3.4.0.beta3-dev (53f9c81790) 并且它没有请求 GUI 更新,命令行更新会获取此更改吗?

即使不提示,您仍然可以拉取 UI,它会拉取新的提交。但执行 CLI 重建也可以拉取它们。

2 个赞

此主题已在 3 天后自动关闭。不允许回复。