Relatório do Painel - Políticas Não Aceitas

Este é um relatório de painel em SQL para políticas não aceitas.

:discourse: Este relatório requer que o plugin Discourse Policy esteja habilitado.

Este relatório de painel identifica tópicos com políticas que não foram aceitas por determinados usuários. Este relatório ajuda os administradores a garantir que os usuários cumpram as políticas de postagem, identificar quem não aceitou as políticas exigidas, impor as regras do fórum, gerenciar atualizações de políticas e confirmar que os usuários concordam com as diretrizes.

SELECT distinct t.id AS topic_id, gu.user_id AS user_id
    FROM post_policies pp
    JOIN post_policy_groups pg on pg.post_policy_id = pp.id
    JOIN posts p ON p.id = pp.post_id AND p.deleted_at is null
    JOIN topics t ON t.id = p.topic_id AND t.deleted_at is null
    JOIN group_users gu ON gu.group_id = pg.group_id
    LEFT JOIN policy_users pu ON
        pu.user_id = gu.user_id AND
        pu.post_policy_id = pp.id AND
        pu.accepted_at IS NOT NULL AND
        pu.revoked_at IS NULL AND
        (pu.expired_at IS NULL OR pu.expired_at < pu.accepted_at) AND
        ((pu.version IS NULL AND pp.version IS NULL) OR
        (pp.version IS NOT NULL AND pu.version IS NOT NULL AND pu.version = pp.version))
WHERE pu.id IS NULL

Explicação da Consulta SQL

Esta consulta executa as seguintes operações:

  • Junta as tabelas post_policies, post_policy_groups, posts, topics e group_users para criar uma lista de tópicos e usuários que estão sujeitos a políticas de postagem com base na associação de seus grupos.
  • Usa um LEFT JOIN com a tabela policy_users para encontrar instâncias em que um usuário não aceitou a política (pu.id IS NULL), garantindo que apenas aceitações de políticas atuais e relevantes sejam consideradas (não revogadas, não expiradas e correspondendo à versão atual da política).
  • Seleciona pares distintos de topic_id e user_id, indicando tópicos com políticas que não foram aceitas por determinados usuários.

Exemplo de Resultados

Tópico Usuário
Tópico de Política 1 usuário_1
Tópico de Política 1 usuário_2
Tópico de Política 2 usuário_1