此 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参数采用YYYY-MM-DD格式,并带有默认值。 - 连接: 将
reviewables表与post_actions表连接起来,以确保仅计算经过审核流程的垃圾邮件标记。 - 过滤:
post_action_type_id = 8: 仅限于垃圾邮件标记。- 使用指定参数的日期范围过滤。
status IN (1, 2): 仅包括已解决(已批准或已拒绝)的标记。created_by_id = -1: 仅包括由系统用户(AI 自动分类)创建的标记。
- 聚合:
total_flags: 系统创建的垃圾邮件标记总数。approved_flags: 管理员批准的标记数量(状态 = 1)。rejected_flags: 管理员拒绝的标记数量(状态 = 2)。approved_percentage: 已批准标记的百分比。rejected_percentage: 已拒绝标记的百分比。
示例结果
| total_flags | approved_flags | rejected_flags | approved_percentage | rejected_percentage |
|---|---|---|---|---|
| 152 | 128 | 24 | 84.21 | 15.79 |