Files
argon-theme/.kiro/steering/username-comment-detection.md
nanhaoluo adf3852a74 feat: 完善用户名-评论联合检测功能
- 改为立即同步执行 AI 检测,不再延迟
- 管理员可看到原用户名:用户-XXXXXXXX (原用户名: xxx)
- 添加前台删除评论功能(仅管理员可见)
- 删除按钮使用红色 outline-danger 样式
- 删除前弹出确认对话框
- 删除后淡出动画并移除评论元素
- 完整的成功/失败提示
2026-01-22 18:41:44 +08:00

154 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
inclusion: manual
---
# AI 评论用户名-内容联合检测机制
## 功能概述
AI 评论检测系统已升级为用户名-评论内容联合检测机制,同时检查评论者的用户名和评论内容是否合规。
## 检测逻辑
### 1. 联合检测
- AI 模型同时判断用户名和评论内容的合规性
- 返回四个字段:
- `content_spam`: 评论内容是否为垃圾评论
- `content_reason`: 内容判断理由25字以内
- `username_invalid`: 用户名是否不合规
- `username_reason`: 用户名判断理由25字以内
### 2. 处理规则
#### 情况1评论内容不合规
- 按照后台设置的自动处理方式执行:
- 移入回收站trash
- 标记为待审核hold
- 仅标记不改变状态mark
- 如果留了邮箱,发送垃圾评论通知邮件
#### 情况2评论内容正常但用户名不合规
- **未留邮箱**:直接移入回收站
- 记录元数据:`_argon_username_invalid_no_email`
- 原因:无法通知用户,直接拒绝
- **留了邮箱**:自动修改用户名并发送通知
- 生成格式:`用户-XXXXXXXX`8位唯一标识码
- 标识码基于:原用户名 + 邮箱 + IP + User Agent
- 保存原始用户名到元数据:`_argon_original_username`
- 发送用户名变更通知邮件
#### 情况3评论和用户名都正常
- 正常发布,记录检测结果
## 唯一标识码生成规则
```php
// 格式:用户-XXXXXXXX
// 字符集0-9, A-Z排除 I 和 O 避免混淆)
// 长度8位
// 算法:基于 MD5(原用户名 + 邮箱 + IP + UA + 时间戳)
```
示例:
- `用户-A3B7K9M2`
- `用户-5N8Q4R6T`
## 邮件通知
### 用户名变更通知邮件
当用户名被修改时,系统会发送邮件通知,包含:
- 原用户名(删除线显示)
- 新用户名(高亮显示)
- AI 判断理由
- 评论链接
- 检测信息AI 模型、识别码、检测时间)
邮件模板位置:`email-templates/username-change-notify.php`
## 评论元数据
系统会保存以下元数据:
### 检测结果
- `_argon_spam_detection_result`: 完整检测结果
```php
[
'is_spam' => bool,
'reason' => string,
'username_invalid' => bool,
'username_reason' => string,
'original_username' => string, // 仅用户名变更时
'new_username' => string, // 仅用户名变更时
'action' => string, // 处理方式
'reason_detail' => string // 详细原因
]
```
### 用户名变更相关
- `_argon_original_username`: 原始用户名
- `_argon_username_changed`: 标记用户名已变更
- `_argon_username_invalid_no_email`: 标记用户名不合规且未留邮箱
### 检测信息
- `_argon_spam_detection_time`: 检测时间戳
- `_argon_spam_detection_code`: 8位识别码
## AI 提示词
默认提示词(可在后台自定义):
```
你是一个专业的内容审核助手。请分别判断以下评论的用户名和内容是否合规。
不合规内容包括但不限于:广告推广、反动言论、错误政治观点、时政敏感内容、违法信息、色情暴力、恶意攻击等。
不合规用户名包括但不限于:广告推广、色情暴力、政治敏感、恶意攻击、侮辱性词汇等。
请仅返回 JSON 格式:
{
"content_spam": true/false,
"content_reason": "内容判断理由(25字以内)",
"username_invalid": true/false,
"username_reason": "用户名判断理由(25字以内)"
}
如果内容正常content_reason 填写 "正常"。如果用户名正常username_reason 填写 "正常"。
```
## 兼容性
- 兼容旧版 API 响应格式(`is_spam` + `reason`
- 自动转换为新格式
- max_tokens 增加到 150 以支持更详细的响应
## 相关函数
### 核心函数
- `argon_detect_spam_comment($comment_id)`: 执行联合检测
- `argon_generate_unique_username()`: 生成唯一用户名
- `argon_async_spam_detection_handler()`: 异步检测处理
- `argon_send_username_change_notify_email()`: 发送用户名变更通知
### 文件位置
- 检测逻辑:`functions.php` (第 7320-7850 行)
- 邮件模板:`email-templates/username-change-notify.php`
## 使用建议
1. **提示词优化**:根据实际情况在后台调整 AI 提示词
2. **白名单管理**:将信任的用户邮箱/IP 加入白名单
3. **检测模式**
- 全量检测:所有评论都检测(推荐新站)
- 抽查模式:根据用户历史动态调整概率(推荐成熟站点)
4. **邮件模板**:可自定义邮件样式和内容
## 更新日志
### 2026-01-22
- ✅ 实现用户名-评论联合检测
- ✅ 用户名不合规且未留邮箱时直接移入回收站
- ✅ 用户名不合规但留了邮箱时自动修改并通知
- ✅ 创建用户名变更通知邮件模板
- ✅ 生成唯一8位标识码
- ✅ 兼容旧版 API 响应格式