Todas las publicaciones que contengan palabras vigiladas se ocultan automáticamente: score_to_hide_post es 0.0

He encontrado un problema grave con mi foro de Discourse.

Recientemente descubrí que todas las publicaciones que contienen palabras vigiladas que activan una señal de alerta se ocultan automáticamente.
Estas publicaciones deben ser desocultadas manualmente por un administrador para que vuelvan a ser visibles.

Tras investigar un poco, noté que el valor score_to_hide_post de mi sitio está actualmente en 0.0.
En otra instancia de Discourse que administro, este valor ronda los 8.3, lo que parece normal.

Debido a este valor de 0.0, cualquier señal de alerta, incluso una sola de una palabra vigilada, oculta inmediatamente la publicación.

No he realizado ningún cambio en la configuración recientemente. ¿Por qué score_to_hide_post se ha convertido en 0.0?
¿Cómo puedo restaurarlo a un umbral normal (como 8.3) para que las publicaciones no se oculten de inmediato?

Descubrí que, dado que score_to_hide_post es 0.0, incluso una sola señalización de un usuario nuevo ocultará inmediatamente la publicación, lo que hace que la situación sea bastante grave. ¿Qué debo hacer?

Puedes solucionar esto ajustando la configuración del sitio Ocultar sensibilidad de publicaciones. Establécela en un nivel adecuado como Medio o Alto, esto actualizará automáticamente el valor interno score_to_hide_post a un umbral saludable.

Solo ten en cuenta que cuanto menor sea la sensibilidad, menor será la puntuación de bandera requerida para ocultar una publicación, razón por la cual las publicaciones se ocultaban de inmediato.

Referencia de cómo esto se mapea internamente:

1 me gusta

¡Gracias por la sugerencia! Intenté ajustar la configuración del sitio Hide Post Sensitivity en el panel de administración, que tiene cuatro opciones: Desactivado, Bajo, Medio y Alto.
Sin embargo, descubrí que solo Desactivado funciona. Sin importar si elijo Bajo, Medio o Alto, el valor de score_to_hide_post permanece en 0.
¿Sabes por qué sucede esto?

Hola, tengo una pregunta sobre score_to_hide_post.

Entiendo que score_to_hide_post se calcula dinámicamente en función de los elementos revisables, pero ¿es posible que alguna vez se calcule como 0 en circunstancias normales?

Si muestra 0, ¿indica un problema del sistema?

Según mi conocimiento, en la operación estándar con la Sensibilidad de Ocultar Publicación establecida en “Baja, Media o Alta”, el umbral debe ser un número positivo. Si ve score_to_hide_post = 0 cuando la sensibilidad NO está “Deshabilitada”, esto indica una configuración errónea del sistema. Las causas posibles incluyen:

  • Valores corruptos o faltantes en el PluginStore
  • Problemas con su SiteSettings (por ejemplo, reviewable_default_visibility mal configurado)

La configuración reviewable_default_visibility todavía está en su valor predeterminado, bajo. Después de que ocurrió el problema, incluso intenté reconstruir el sitio, pero no resolvió el problema. Me gustaría entender cómo apareció este problema en primer lugar y si se puede solucionar.

He estudiado el código detenidamente y he descubierto que score_to_hide_post se determina mediante los siguientes tres métodos:

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

  # Queremos que esto sea difícil de alcanzar
  ((high.to_f * ratio) * scale).truncate(2)
end

def self.sensitivity_score(sensitivity, scale: 1.0)
  # Si la puntuación es inferior a la visibilidad predeterminada, auméntela a ese nivel.
  # De lo contrario, tendremos la confusa situación en la que una publicación podría ocultarse y
  # ¡los moderadores nunca la verían!
  [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

En otras palabras,
score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)

donde

  • high.to_f puede ser inesperadamente 0 (normalmente debería ser un valor positivo),
  • ratio = sensitivity / sensitivities[:low].to_f,
  • sensitivity proviene de la configuración (por ejemplo, 3, 6 o 9),
  • sensitivities[:low] = 9,
  • scale = 1.0.

Eso significa que score_to_hide_post nunca debería ser 0, por lo que si se convierte en 0, esto indica claramente un error.