要約メールのエントリが複数回繰り返される件

こちらは、アイドル状態のテストユーザーアカウントに送信された別のものです。

  • 最終ログイン 2024-09-12
  • ダイジェスト頻度:毎日
  • 「サマリーメールに新規ユーザーからのコンテンツを含める」:チェック済み
  • 関連タグはミュートされていません

人気トピック:

「A.I. - 大きい方が良いのか?」 – 3回繰り返されています。トピックには3つのタグ、0件の返信、0件のいいねがあります。
「ソーシャルエンジニアリングチャレンジ」 – 2回繰り返されています。トピックには2つのタグ、1件の返信、0件のいいねがあります。

あなたへのおすすめ:

「新しいタグのリクエスト」 – 繰り返されていません。トピックには0個のタグ、0件の返信、0件のいいねがあります。

「いいね!」 1

最新のダイジェストで、私のいずれかのアカウントが受信したトピックは重複していませんでしたが、その下のコメント(「人気の投稿」)は重複していました。5つのスロットがあり、2つの重複(3つのユニークな投稿)がありましたが、どちらも同じトピックからのものでした。

編集:テスト/管理アカウントに送信された過去のダイジェストを確認しています。

  • 前回のダイジェストにも「人気の投稿」に2つの重複があり、それも同じトピックからのものでした。
  • その前のダイジェストには重複トピックがありましたが、「人気の投稿」には重複はありませんでした。「あなたへのおすすめ」に重複がありました。
  • その前のダイジェストには重複はありませんでした。
「いいね!」 1

@j127、ダイジェストトピックにいくつのタグがあったか知りたいです。私の最近のサンプルでは、重複はトピックのタグの数に対応しています。偶然かもしれませんが、そうでないかもしれません。

「いいね!」 3

digest suppress tags のサイト設定にタグを追加し、複数のタグを持つトピックを作成することで、ローカルの Discourse サイトで問題を再現することができました。

以下のコードが問題の原因です: 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つのタグが付いていました。

「いいね!」 2

@simon – この件を調べていただき、本当にありがとうございます!:smiley: 大変な作業だったことと思います。Discourseチームが戻ってきて、あなたの分析に基づいて対応してくれるのを楽しみにしています。

「いいね!」 1

digest suppress tags に設定していたタグを削除したことで、サマリーが元に戻ったことを確認しました。(それまでの間は digest suppress categories を利用しています。)

「いいね!」 4

@simon は正しかったです :+1: それがまさにバグでした

「いいね!」 7

素晴らしいニュースです!:smiley:

マージされたコミットがベータチャンネルでいつ利用可能になるのか、よくわかりません。3.4.0.beta3-dev (53f9c81790) を使用していて、GUIのアップデートが要求されていない場合、コマンドラインアップデートでこの変更を取得できますか?

UIはプロンプトなしで取り込むことができ、新しいコミットも取り込まれます。しかし、CLIで再構築しても取り込むことができます。

「いいね!」 2

このトピックは3日後に自動的に閉じられました。新しい返信はもう許可されていません。