所有包含已关注词语的帖子都会被自动隐藏 — 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(隐藏帖子敏感度)站点设置,该设置有四个选项:Disabled(禁用)、Low(低)、Medium(中)和 High(高)。
但是,我发现只有 Disabled(禁用)选项有效。无论我选择 Low(低)、Medium(中)还是 High(高),score_to_hide_post 的值都保持为 0。
您知道这是为什么吗?

您好,我有一个关于 score_to_hide_post 的问题。

我明白 score_to_hide_post 是根据可复审项动态计算的,但在正常情况下,它有可能计算为 0 吗?

如果显示为 0,这是否表明系统存在问题?

据我所知,在标准操作中,当“隐藏帖子敏感度”设置为“低、中或高”时,阈值应为正数。如果在敏感度未设置为“禁用”时看到 score_to_hide_post = 0,则表示系统配置错误。可能的原因包括:

  • PluginStore 中的值损坏或丢失
  • 您的 SiteSettings 存在问题(例如,reviewable_default_visibility 配置错误)

reviewable_default_visibility 设置仍为默认值 low。问题发生后,我甚至尝试重建了站点,但没有解决问题。我想了解这个问题最初是如何出现的以及是否可以修复。

我已经仔细研究了代码,发现 score_to_hide_post 由以下三种方法确定:

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

  # We want this to be hard to reach
  ((high.to_f * ratio) * scale).truncate(2)
end

def self.sensitivity_score(sensitivity, scale: 1.0)
  # If the score is less than the default visibility, bring it up to that level.
  # Otherwise we have the confusing situation where a post might be hidden and
  # moderators would never see it!
  [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_post 永远不应该为 0,因此如果它变为 0,则清楚地表明存在错误