--- 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 响应格式 - ✅ 改为立即同步执行检测 - ✅ 管理员可查看原用户名 - ✅ 添加前台删除评论功能