Этот SQL-запрос предоставляет статистику по флагам спама, сгенерированным автоматизацией: Discourse AI - AI triage. Он вычисляет общее количество флагов, количество одобренных и отклоненных флагов, а также соответствующие проценты. Этот отчет полезен для понимания эффективности автоматического обнаружения спама на вашем форуме.
-- [params]
-- date :start_date = 2025-01-01
-- date :end_date = 2025-05-30
SELECT
COUNT(*) AS total_flags,
COUNT(*) FILTER (WHERE r.status = 1) AS approved_flags,
COUNT(*) FILTER (WHERE r.status = 2) AS rejected_flags,
ROUND(100.0 * COUNT(*) FILTER (WHERE r.status = 1) / COUNT(*), 2) AS approved_percentage,
ROUND(100.0 * COUNT(*) FILTER (WHERE r.status = 2) / COUNT(*), 2) AS rejected_percentage
FROM
reviewables r
JOIN
post_actions pa ON pa.post_id = r.target_id AND r.target_type = 'Post'
WHERE
pa.post_action_type_id = 8 -- ID для спама (Пометить как спам и скрыть пост)
AND r.created_at BETWEEN :start_date AND :end_date
AND r.status IN (1, 2) -- Принятые и отклоненные флаги
AND r.created_by_id = -1 -- ID системного пользователя
Объяснение SQL-запроса
- Параметры: Параметры
:start_dateи:end_dateв форматеГГГГ-ММ-ДДсо значениями по умолчанию. - Соединение (JOIN): Связывает таблицу
reviewablesс таблицейpost_actions, чтобы учитывать только флаги спама, прошедшие процесс проверки. - Фильтрация:
post_action_type_id = 8: Ограничивает выборку только флагами спама.- Фильтрация по диапазону дат с использованием указанных параметров.
status IN (1, 2): Включает только флаги, которые были разрешены (одобрены или отклонены).created_by_id = -1: Включает только флаги, созданные системным пользователем (AI triage).
- Агрегация:
total_flags: Общее количество флагов спама, созданных системой.approved_flags: Количество флагов, одобренных сотрудниками (status = 1).rejected_flags: Количество флагов, отклоненных сотрудниками (status = 2).approved_percentage: Процент одобренных флагов.rejected_percentage: Процент отклоненных флагов.
Пример результатов
| total_flags | approved_flags | rejected_flags | approved_percentage | rejected_percentage |
|---|---|---|---|---|
| 152 | 128 | 24 | 84.21 | 15.79 |