サマリーで解決済み件数が正しく表示されない

皆さん、こんにちは。

Discourse インスタンスを更新した後、プロフィール概要を見ると、解決済みの件数が正しくないようです。例:

最近、いくつかの変更があったことに気づきました。その中には、重大なバグも含まれています。

正しい件数は明らかにまだ利用可能なので、新しいテーブルにデータを移行する際に何か問題が発生した可能性があります。

「いいね!」 1

ご連絡ありがとうございます。確認いたします。

「いいね!」 1

Discourse では、削除済みのトピックや投稿を含めていたため、ソリューションのカウントに不一致がありました。

移行前は次のように表示していました。

ジョンには 27 件のソリューションがあります。これは、彼の投稿が 27 回ソリューションとしてマークされたためです。

これは UserActions テーブルに保存されています。

移行後、次のようにカウントするようになりました。

ジョンには 20 件のソリューションがあります。これは、彼の投稿がソリューションとなっているトピックが 20 件存在するためです。

これは SolvedTopics テーブルに保存されており、既存の削除されていないトピックへの直接リンクがあります。

ここで微妙な違いがあります。最初のシナリオでは、ソリューションの投稿またはそのトピックが存在するかどうかを確認する検証がありませんでした。

どちらの数値がより適切か、チームに確認します。個人的には、まだ存在するトピックのソリューションをカウントすることに傾いています。

「いいね!」 3

これは問題の原因ではないと確信しています。なぜなら、それは場合によっては、より多くの数字ではなく、より少ない数字を引き起こすだけだからです。正しいですか?もう一つ例があります。
-\u003e 間違い: Profile - SGS - Garuda Linux Forum
-\u003e 正しい:
The image displays a user profile section showing that the user joined on April 15, 2020, has read 600 hours of content, and posted 4 hours ago, with a current streak of 5 consecutive days. (Captioned by AI)

このカウントメカニズムが解決済み投稿数を2倍以上に増やすことは不可能だと思われます。それに加えて(もちろん未確認ですが)、前の例で削除された投稿数がこれほど多かったとは非常に疑わしいです。

ありがとうございます!

うーん、確かに485と90は離れすぎですね。

バグを見つけたと思います(ただし、上記で言及した不一致に関する記述は依然として当てはまります)–

以前の実装では、Johnのサマリーにおける解決済み投稿数は、「誰かがJohnの投稿を解決済みとしてマークした回数」でカウントされていました。

  def solved_count
    UserAction.where(user: @user).where(action_type: UserAction::SOLVED).count
  end

新しい実装では、Johnのユーザーサマリーにおける解決済み投稿数は、「Johnが解決済みとして投稿をマークした回数」です。

  def solved_count
    DiscourseSolved::SolvedTopic.where(accepter: @user).count
  end

これが大きな違いを説明しています。「解決済み数」の定義が「あなたが回答した回数」から「あなたが解決済みとして受け入れた回数」に変更されました。

バグを修正します。レポートをありがとうございました!

プロフィールポップアップとユーザーサマリーで使用されている異なるカウント方法も更新します。

「いいね!」 4

Props to @ondrej for also mentioning Solution badge not working? to me. It looks like some discrepancies were already happening before this migration. Good thing is that we’ll be migrating to a more consistent number across Discourse and our plugins.

「いいね!」 4

素晴らしい、どうもありがとうございます! :slight_smile:

「いいね!」 4

これは修正され、標準化されました - FIX: Standardise the definition of what a solution is by nattsw · Pull Request #352 · discourse/discourse-solved · GitHub

「いいね!」 4

このトピックは2日後に自動的に閉じられました。返信はもう受け付けられません。