Files
argon-theme/.kiro/steering/username-comment-detection.md
nanhaoluo 2e73a1e209 docs: 更新用户名-评论联合检测文档
- 添加立即同步执行说明
- 添加管理员查看原用户名功能说明
- 添加前台删除评论功能说明
- 更新相关函数列表
2026-01-22 18:43:00 +08:00

180 lines
5.8 KiB
Markdown
Raw Permalink 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. 执行时机
- **立即同步执行**:评论发布后立即执行 AI 检测
- 不再延迟,确保检测结果及时生效
- 发送邮件通知也在检测完成后立即执行
### 3. 处理规则
#### 情况1评论内容不合规
- 按照后台设置的自动处理方式执行:
- 移入回收站trash
- 标记为待审核hold
- 仅标记不改变状态mark
- 如果留了邮箱,发送垃圾评论通知邮件
#### 情况2评论内容正常但用户名不合规
- **未留邮箱**:直接移入回收站
- 记录元数据:`_argon_username_invalid_no_email`
- 原因:无法通知用户,直接拒绝
- **留了邮箱**:自动修改用户名并发送通知
- 生成格式:`用户-XXXXXXXX`8位唯一标识码
- 标识码基于:原用户名 + 邮箱 + IP + User Agent
- 保存原始用户名到元数据:`_argon_original_username`
- 发送用户名变更通知邮件
- **管理员可见原用户名**:显示为 `用户-XXXXXXXX (原用户名: xxx)`
#### 情况3评论和用户名都正常
- 正常发布,记录检测结果
## 管理员功能
### 1. 查看原用户名
- 管理员在前台查看评论时,可以看到原始用户名
- 显示格式:`用户-A3B7K9M2 (原用户名: 违规昵称)`
- 普通用户只能看到:`用户-A3B7K9M2`
### 2. 前台删除评论
- 管理员在前台可以直接删除评论
- 删除按钮使用红色 `btn-outline-danger` 样式
- 删除前弹出确认对话框
- 删除后评论淡出并移除
- 完整的成功/失败提示
## 唯一标识码生成规则
```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()`: 发送用户名变更通知
- `argon_display_original_username()`: 为管理员显示原用户名
- `frontend_delete_comment()`: 前台删除评论
### 文件位置
- 检测逻辑:`functions.php` (第 7320-7900 行)
- 邮件模板:`email-templates/username-change-notify.php`
- 前端 JS`argontheme.js` (deleteComment 函数)
## 使用建议
1. **提示词优化**:根据实际情况在后台调整 AI 提示词
2. **白名单管理**:将信任的用户邮箱/IP 加入白名单
3. **检测模式**
- 全量检测:所有评论都检测(推荐新站)
- 抽查模式:根据用户历史动态调整概率(推荐成熟站点)
4. **邮件模板**:可自定义邮件样式和内容
## 更新日志
### 2026-01-22
- ✅ 实现用户名-评论联合检测
- ✅ 用户名不合规且未留邮箱时直接移入回收站
- ✅ 用户名不合规但留了邮箱时自动修改并通知
- ✅ 创建用户名变更通知邮件模板
- ✅ 生成唯一8位标识码
- ✅ 兼容旧版 API 响应格式
- ✅ 改为立即同步执行检测
- ✅ 管理员可查看原用户名
- ✅ 添加前台删除评论功能