Encontrei um problema sério com meu fórum Discourse.
Recentemente, descobri que todas as postagens contendo palavras monitoradas que acionam uma bandeira são automaticamente ocultadas.
Essas postagens devem ser manualmente desocultadas por um administrador para se tornarem visíveis novamente.
Após alguma investigação, notei que o valor score_to_hide_post do meu site está atualmente em 0.0.
Em outra instância do Discourse que administro, esse valor está em torno de 8.3, o que parece normal.
Por causa desse valor 0.0, qualquer bandeira — mesmo uma única de uma palavra monitorada — oculta imediatamente a postagem.
Não fiz nenhuma alteração de configuração recentemente. Por que score_to_hide_post se tornaria 0.0?
Como posso restaurá-lo para um limite normal (como 8.3) para que as postagens não sejam ocultadas imediatamente?
Descobri que, como score_to_hide_post é 0.0, até mesmo uma única sinalização de um novo usuário ocultará imediatamente a postagem, o que torna a situação bastante séria. O que devo fazer?
Você pode corrigir isso ajustando a configuração do site Ocultar Sensibilidade de Postagem. Defina-a para um nível adequado, como Médio ou Alto — isso atualizará automaticamente o valor interno score_to_hide_post de volta para um limite saudável.\n\nApenas observe que quanto menor a sensibilidade, menor a pontuação de sinalização necessária para ocultar uma postagem — é por isso que as postagens estavam sendo ocultadas imediatamente.\n\nReferência de como isso é mapeado internamente:\ndiscourse/app/models/reviewable.rb at main · discourse/discourse · GitHub
1 curtida
Obrigado pela sugestão! Tentei ajustar a configuração do site Hide Post Sensitivity no painel de administração, que tem quatro opções: Desativado, Baixo, Médio e Alto.
No entanto, descobri que apenas Desativado funciona. Não importa se escolho Baixo, Médio ou Alto, o valor de score_to_hide_post permanece 0.
Você sabe por que isso acontece?
Olá, tenho uma pergunta sobre score_to_hide_post.
Entendo que score_to_hide_post é calculado dinamicamente com base em revisáveis, mas é possível que ele seja calculado como 0 em circunstâncias normais?
Se ele estiver mostrando 0, isso indica um problema no sistema?
AFIK, em operação padrão com a Sensibilidade de Ocultar Publicação definida como “Baixa, Média ou Alta”, o limite deve ser um número positivo. Se você vir score_to_hide_post = 0 quando a sensibilidade NÃO estiver “Desativada”, isso indica uma configuração incorreta do sistema. Causas possíveis incluem:
- Valores corrompidos ou ausentes no PluginStore
- Problemas com suas SiteSettings (por exemplo,
reviewable_default_visibility mal configurado)
A configuração reviewable_default_visibility ainda está em seu valor padrão, baixo. Após a ocorrência do problema, cheguei a tentar reconstruir o site, mas isso não resolveu o problema. Gostaria de entender como esse problema surgiu em primeiro lugar e se ele pode ser corrigido.
Estudei o código cuidadosamente e descobri que score_to_hide_post é determinado pelos seguintes três 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 isso seja difícil de alcançar
((high.to_f * ratio) * scale).truncate(2)
end
def self.sensitivity_score(sensitivity, scale: 1.0)
# Se a pontuação for menor que a visibilidade padrão, aumente-a para esse nível.
# Caso contrário, teremos a situação confusa em que uma postagem pode ser ocultada e
# os moderadores nunca a verão!
[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
Em outras palavras,
score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)
onde
high.to_f pode inesperadamente ser 0 (normalmente deveria ser um valor positivo),
ratio = sensitivity / sensitivities[:low].to_f,
sensitivity vem da configuração (por exemplo, 3, 6 ou 9),
sensitivities[:low] = 9,
scale = 1.0.
Isso significa que score_to_hide_post nunca deve ser 0, portanto, se ele se tornar 0, isso indica claramente um bug.