ブログコメントの返信数が1つずれています

最近、ブログのコメントをホストするために Discourse インスタンスを設定しました。誰かが最初のコメントを投稿すると、埋め込まれたコメントに「2 件の返信」と表示されます。ご質問いただく前に申し上げますが、これは初期投稿が返信としてカウントされているためではありません。その問題は以前に修正済みです。むしろ、問題の原因は自動的なリスト通知のようです。

Screen Shot 2021-04-28 at 9.40.24 AM

すべてのブログ投稿のコメントトピックは「非表示(unlisted)」から開始されます。そのため、最初のコメントを投稿するとトピックが「非表示」から「表示(listed)」に切り替わり、その行為自体が返信としてカウントされてしまうのです。

したがって、修正としては、メッセージの返信数をカウントする際に小さなアクション(small actions)を除外する、こちらのプルリクエストに近いアプローチが適切だと考えられます。トピックのリスト化は post_type 3 に該当し、これは small_action です。

余談ですが、トピック一覧表示時にも返信数が正しくない場合があります。ただし、返信数と実際の返信を同時に確認していないため、それほど目立ちません。トピック自体を確認すれば、リスト化通知がカウントに含まれていることに気づくのは容易です。しかし、ブログの最初の数件のコメントを見ると、数値と実際の返信が同じ場所で表示されるため、明らかに何かがおかしいことがわかります(幸いなことに、リスト化通知は表示されません)。

「いいね!」 2

埋め込みトピック一覧に表示される返信数は、Discourse のトピック一覧で返信数を設定するのと同じコードから導き出されています。そのため、両方の問題を対応する必要があるかもしれません。Discourse のトピック一覧でモデレーターによるアクション投稿を返信数に含めるのが意図されたものかどうかはわかりません。しかし、埋め込みトピックの返信数にモデレーターによるアクション投稿を含めるのは明らかに誤りです。特に、すべての埋め込みトピックへの最初の返信が現在はモデレーター投稿となっているためです。

トピック一覧でモデレーター投稿が返信数にどのように含まれているかの例を見るには、このトピック一覧をご覧ください:https://meta.discourse.org/?status=closed。トピックが閉じられた際に作成される投稿は常に返信としてカウントされます。おそらく、通常の投稿のみをカウントすべきでしょう。

「いいね!」 4

参考までに、私は「Listed」という返信を削除しています。私の理解では、ブログコメントの場合、これらはノイズに過ぎません。なぜなら、すべてのトピックが非表示になるか、または通知が表示されるからです。もしそれらをカウントする理由があるなら、ブログコメントから自動的に削除する方がよいかもしれません。(現時点ではこのためのパッチを持っていないため、実装が難しいかどうかはわかりません。)

「いいね!」 1

トピックの表示/非表示/閉鎖が「返信」としてカウントされるのは奇妙です。

「いいね!」 1

はい、小さなアクション投稿が返信としてカウントされるのは不自然ですね。これに関連する別のバグもあります。埋め込みトピックの最初の返信が小さなアクション投稿の場合、埋め込みHTMLが破損し、関連するDiscourseトピックへのリンクが表示されなくなります。現在、これらの2つの問題の修正に取り組んでいます。

「いいね!」 2

以下の PR で修正しました。

「いいね!」 5