ウォッチワードを含む投稿はすべて自動的に非表示になります — score_to_hide_post は 0.0 です

Discourse フォーラムで深刻な問題が発生しました。

最近、フラグをトリガーする監視対象の単語を含むすべての投稿が自動的に非表示になることに気づきました。
これらの投稿は、管理者が手動で非表示を解除しないと再度表示されません。

調査したところ、サイトの score_to_hide_post の値が現在 0.0 であることがわかりました。
私が運営している別の Discourse インスタンスでは、この値は約 8.3 で、これは正常な値のように思われます。

この 0.0 という値のため、監視対象の単語からの単一のフラグであっても、投稿はすぐに非表示になります。

最近、設定を変更した覚えはありません。なぜ score_to_hide_post が 0.0 になったのでしょうか?
通常のしきい値(8.3 のような)に復元するにはどうすればよいですか?そうすれば、投稿がすぐに非表示にならなくなります。

score_to_hide_post が 0.0 であるため、新規ユーザーからの単一のフラグでも投稿が即座に非表示になることがわかり、状況は非常に深刻です。どうすればよいでしょうか?

この問題は、投稿の感度を隠すサイト設定を調整することで解決できます。これをまたはなどの適切なレベルに設定すると、内部の score_to_hide_post 値が自動的に健全な閾値に戻ります。

感度が低いほど、投稿を隠すために必要なフラグスコアが低くなることに注意してください。そのため、投稿がすぐに非表示になっていました。

これが内部でどのようにマッピングされるかの参照:

「いいね!」 1

提案ありがとうございます!管理パネルの Hide Post Sensitivity サイト設定を調整してみました。この設定には、無効、低、中、高の4つのオプションがあります。

しかし、無効にした場合のみ機能することがわかりました。低、中、高のいずれを選択しても、score_to_hide_post の値は 0 のままです。

この原因についてご存知ですか?

こんにちは、score_to_hide_post に関して質問があります。

score_to_hide_post はレビュー対象に基づいて動的に計算されると理解していますが、通常の状況で 0 と計算されることはありますか?

もし 0 と表示されている場合、それはシステムの問題を示していますか?

私の知る限り、Hide Post Sensitivity が「Low、Medium、または High」に設定された標準的な操作では、しきい値は正の数であるはずです。感度が「Disabled」ではないときに score_to_hide_post = 0 が表示される場合は、システムの設定ミスを示しています。考えられる原因は次のとおりです。

  • PluginStore の値が破損しているか、欠落している
  • SiteSettings の問題(例: reviewable_default_visibility の設定ミス)

reviewable_default_visibility 設定は、デフォルト値の low のままです。問題が発生した後、サイトの再構築を試みましたが、問題は解決しませんでした。この問題が最初にどのように発生したのか、そして修正できるかどうかを理解したいと思います。

コードを注意深く調べたところ、score_to_hide_post は次の 3 つの方法によって決定されることがわかりました。

def self.sensitivity_score_value(sensitivity, scale)
  return Float::MAX if sensitivity == 0

  ratio = sensitivity / sensitivities[:low].to_f
  high =
    (PluginStore.get("reviewables", "priority_#{priorities[:high]}") || typical_sensitivity).to_f

  # これは到達するのが難しいようにしたい
  ((high.to_f * ratio) * scale).truncate(2)
end

def self.sensitivity_score(sensitivity, scale: 1.0)
  # スコアがデフォルトの可視性よりも低い場合は、そのレベルまで引き上げます。
  # そうしないと、投稿が非表示になり、モデレーターがまったく見ることができないという混乱した状況になります!
  [sensitivity_score_value(sensitivity, scale), min_score_for_priority].max
end

def self.score_required_to_hide_post
  sensitivity_score(SiteSetting.hide_post_sensitivity)
end

つまり、言い換えると、
score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)

ここで、

  • high.to_f は予期せず 0 になる可能性があります(通常は正の値であるはずです)。
  • ratio = sensitivity / sensitivities[:low].to_f
  • sensitivity は設定(たとえば 3、6、または 9)から取得されます。
  • sensitivities[:low] = 9
  • scale = 1.0

これは、score_to_hide_post0 になることは決してないことを意味するため、0 になった場合は明らかに バグ を示しています。