Relatório de Eficiência no Tratamento de Flags de Moderador

Esta é uma consulta SQL do Explorador de Dados projetada para fornecer insights sobre a eficiência e a capacidade de resposta dos moderadores do fórum no tratamento de sinalizações levantadas por usuários em postagens.

Este relatório mostra uma contagem do número de sinalizações tratadas e o tempo médio para resolver sinalizações por cada moderador em um site, em um intervalo de datas especificado.

Compreender a rapidez e a eficácia com que os moderadores respondem às sinalizações pode ajudar os administradores a garantir que o fórum permaneça um espaço seguro e acolhedor para todos os usuários.

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

WITH period_actions AS (
    SELECT pa.id,
           pa.post_action_type_id,
           pa.created_at,
           pa.agreed_at,
           pa.disagreed_at,
           pa.deferred_at,
           pa.agreed_by_id,
           pa.disagreed_by_id,
           pa.deferred_by_id,
           pa.post_id,
           pa.user_id,
           COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) AS responded_at,
           EXTRACT(EPOCH FROM (COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) - pa.created_at)) / 60 AS time_to_resolution_minutes -- tempo para resolução em minutos
    FROM post_actions pa
    WHERE pa.post_action_type_id IN (3,4,6,7,8) -- Tipos de sinalização
      AND pa.created_at >= :start_date
      AND pa.created_at <= :end_date
),
moderator_actions AS (
    SELECT pa.id,
           pa.post_id,
           pa.created_at,
           pa.responded_at,
           pa.time_to_resolution_minutes,
           COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) AS moderator_id
    FROM period_actions pa
    WHERE COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) IS NOT NULL
),
moderator_stats AS (
    SELECT
        m.moderator_id,
        u.username AS moderator_username,
        COUNT(m.id) AS handled_flags,
        AVG(m.time_to_resolution_minutes) AS avg_resolution_time_minutes
    FROM moderator_actions m
    JOIN users u ON u.id = m.moderator_id
    GROUP BY m.moderator_id, u.username
)
SELECT
    ms.moderator_username,
    ms.handled_flags,
    ROUND(ms.avg_resolution_time_minutes::numeric, 2) AS avg_resolution_time_minutes
FROM moderator_stats ms
ORDER BY ms.handled_flags DESC, ms.avg_resolution_time_minutes ASC

Explicação da Consulta SQL

Parâmetros

A consulta usa dois parâmetros para definir o intervalo de datas para o qual os dados são analisados:

  • :start_date: A data de início do período que você deseja analisar, no formato AAAA-MM-DD.
  • :end_date: A data de término do período que você deseja analisar, também no formato AAAA-MM-DD.

CTEs Explicadas

  • period_actions: Esta CTE seleciona sinalizações levantadas dentro do período de tempo especificado, focando em tipos específicos de sinalização. Ela calcula o tempo levado para resolver cada sinalização (em minutos) desde o momento em que foi criada até ser aprovada, rejeitada ou adiada por um moderador.
  • moderator_actions: Esta CTE filtra as ações de period_actions para incluir apenas aquelas que foram respondidas por um moderador. Ela identifica o moderador responsável por cada ação.
  • moderator_stats: Esta CTE agrega os dados de moderator_actions, calculando o número total de sinalizações tratadas por cada moderador e o tempo médio de resolução (em minutos) para as sinalizações que eles trataram.

Resultados

A saída final da consulta fornece uma lista de moderadores classificados pelo número de sinalizações que eles trataram, com uma classificação secundária por seu tempo médio de resolução (em ordem crescente). Para cada moderador, o relatório mostra:

  • moderator_username: O nome de usuário do moderador.
  • handled_flags: O número total de sinalizações tratadas pelo moderador dentro do período de tempo especificado.
  • avg_resolution_time_minutes: O tempo médio levado pelo moderador para resolver uma sinalização, arredondado para duas casas decimais.

Resultados de Exemplo

moderator_username handled_flags avg_resolution_time_minutes
Moderador1 343 39.41
Moderador2 70 30.51
Moderador3 63 42.21