감시 대상 단어가 포함된 모든 게시물은 자동으로 숨겨집니다 — score_to_hide_post는 0.0입니다

Discourse 포럼에서 심각한 문제를 겪고 있습니다.

최근, 감시 대상 단어(watched words)를 포함하여 플래그가 트리거되는 모든 게시물이 자동으로 숨겨지는 것을 발견했습니다.
이러한 게시물이 다시 표시되려면 관리자가 수동으로 숨김을 해제해야 합니다.

조사를 해본 결과, 제 사이트의 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 값이 정상적인 임계값으로 자동으로 복원됩니다.

민감도가 낮을수록 게시물을 숨기는 데 필요한 플래그 점수가 적다는 점을 유의하세요. 바로 이것이 게시물이 즉시 숨겨지는 이유입니다.

이것이 내부적으로 어떻게 매핑되는지에 대한 참고 자료:

제안해 주셔서 감사합니다! 관리 패널에서 Hide Post Sensitivity 사이트 설정을 조정해 보았는데, 이 설정에는 Disabled, Low, Medium, High 네 가지 옵션이 있습니다.
그러나 Disabled만 제대로 동작했습니다. Low, Medium, High 중 어떤 옵션을 선택하든 score_to_hide_post 값은 0으로 유지됩니다.
이러한 현상이 발생하는 이유를 아시나요?

score_to_hide_post에 대해 질문이 있습니다.

score_to_hide_post가 reviewables 기반으로 동적으로 계산된다는 점은 알고 있지만, 정상적인 상황에서 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이 된다면 이는 분명히 버그임을 의미합니다.