Relatório do Painel - Notificar Moderadores

Este é um relatório de painel em versão SQL para Notificar Moderadores.

Este relatório de painel fornece uma contagem diária de mensagens privadas enviadas a moderadores com um tipo de notificação notify_moderators. Essa informação ajuda os administradores a entender os períodos de alta demanda pela atenção dos moderadores e pode indicar quando os usuários estão enfrentando problemas que exigem assistência de moderação.

-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16

SELECT
  DATE(created_at) AS day,
  COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
  AND subtype = 'notify_moderators'
  AND created_at BETWEEN :start_date AND :end_date
  AND deleted_at IS NULL
  AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day

Explicação da Consulta SQL

A consulta funciona extraindo dados da tabela topics – especificamente, aqueles que se qualificam como mensagens privadas para moderadores dentro de um determinado período. Vamos detalhar:

  • Parâmetros de Data:
    • A consulta aceita dois parâmetros, :start_date e :end_date, que definem o intervalo de datas para o relatório. Ambos os parâmetros de data aceitam o formato de data AAAA-MM-DD.
  • Seleção e Contagem:
    • DATE(created_at) converte o carimbo de data/hora created_at em um formato de data e o rotula como day. Isso permite agrupar e contar mensagens pelo dia em que foram criadas.
    • COUNT(1) é usado para contar o número de entradas para cada dia, rotulando essa contagem como notifications_count.
  • Critérios de Filtragem:
    • A consulta filtra apenas as entradas onde o archetype é 'private_message', garantindo que estamos olhando apenas para mensagens e não para outros tipos de tópicos.
    • O subtype é restrito a 'notify_moderators', isolando casos em que os usuários notificam ou solicitam assistência de moderadores.
    • Verifica se o carimbo de data/hora created_at da mensagem está entre :start_date e :end_date especificados.
    • Mensagens que foram excluídas (deleted_at IS NULL) são excluídas da contagem para garantir que o relatório reflita apenas comunicações ativas.
    • Finalmente, garante que as mensagens estejam associadas a um usuário válido, confirmando user_id > 0.
  • Agrupamento e Ordenação:
    • A consulta usa GROUP BY DATE(created_at) para agregar os resultados por cada dia dentro do intervalo de datas especificado.
    • Em seguida, ordena os resultados cronologicamente com ORDER BY day, tornando o relatório fácil de ler e interpretar.

Resultados de Exemplo

day notifications_count
2023-12-17 3
2023-12-18 1
2023-12-21 1
2023-12-23 2
2023-12-26 1
4 curtidas