# 实施计划 — 用户生成内容（UGC）安全审核系统

- [ ] 1. 搭建服务器端审核服务核心架构
   - 创建 `server/services/wechatTokenManager.js`：实现微信 Access Token 自动获取与刷新（2小时有效期，提前5分钟刷新），获取失败时指数退避重试（2s/4s/8s），全部失败标记服务不可用
   - 创建 `server/services/contentSecurityService.js`：实现统一审核方法 `checkTextContent(openid, content, scene)` 和 `checkImageContent(imageBuffer)`，封装 `msgSecCheck` 和 `imgSecCheck` API 调用，3秒超时处理，频率限制排队（5000次/分钟）
   - 创建 `server/services/auditLogger.js`：实现审核日志记录（请求时间、用户ID、内容脱敏摘要、审核结果），日志保留180天，Access Token 不得明文记录
   - _需求：9.1、9.2、9.3、9.4、9.5、9.6_

- [ ] 2. 实现服务器端 HTTP API 与敏感词库接口
   - 在 `server/index.js` 中新增 HTTP 服务（Express），提供内容审核相关 API 路由：`POST /api/content/check-text`、`POST /api/content/check-image`、`GET /api/content/sensitive-words`
   - 实现敏感词库拉取接口，从服务端返回最新敏感词列表供客户端缓存
   - 各审核 API 内部调用 `contentSecurityService` 进行审核，审核不可用时拒绝请求并返回明确错误码
   - _需求：2.1、2.4、3.1、3.4、1.4_

- [ ] 3. 实现违规记录与处罚机制
   - 创建 `server/services/violationService.js`：实现违规日志记录（用户ID、违规内容、违规类型、时间戳），累计违规次数统计
   - 实现禁言处罚逻辑：3次→24小时禁言，5次→7天禁言，10次→永久禁言；禁言期满自动解除并重置当前处罚级别计数
   - 在审核 API 中集成违规记录：`msgSecCheck`/`imgSecCheck` 违规时自动调用 violationService 记录并触发处罚
   - 添加禁言状态查询接口 `GET /api/user/mute-status`，返回是否禁言及剩余时间
   - _需求：7.1、7.2、7.3、7.4、7.5、7.6、7.7_

- [ ] 4. 实现举报功能与违规内容自动下线
   - 创建 `server/services/reportService.js`：实现举报提交（被举报内容、举报原因、举报人信息），举报人信息保密存储
   - 实现自动下线逻辑：同一条内容被3名以上不同用户举报时自动隐藏，标记待人工复核
   - 实现内容重置逻辑：内容被下线或删除时，昵称恢复为"玩家+随机数"，签名/描述清空
   - 添加举报 API：`POST /api/content/report`，举报原因枚举（政治有害/色情低俗/赌博诈骗/其他）
   - _需求：8.1、8.2、8.3、8.4、8.5_

- [ ] 5. 实现客户端 ContentSecurityManager
   - 创建 `js/managers/ContentSecurityManager.js`：实现本地敏感词过滤方法 `checkLocalText(content)`，50ms 内完成匹配
   - 实现敏感词库远程拉取与本地缓存（24小时有效期），拉取失败使用内置兜底词库（硬编码基础违规词汇）
   - 实现增量词库更新方法，不阻塞正在进行的审核操作
   - 在 `GameGlobal.js` 中初始化并挂载 `contentSecurityManager` 实例
   - _需求：1.1、1.2、1.3、1.4、1.5、10.1、10.2、10.3、10.4、10.5、10.6_

- [ ] 6. 集成昵称设置与修改审核流程
   - 在昵称设置/修改 UI 中添加本地敏感词实时校验，违规时输入框下方提示"内容包含违规信息，请修改"，提交按钮置灰
   - 添加昵称长度前端校验：2~20字符，不满足时即时提示
   - 昵称提交时调用服务器 `POST /api/content/check-text`（scene=1），审核未通过提示"昵称包含违规内容，请重新输入"
   - 禁言状态下尝试修改昵称时提示"由于违规行为，您暂无法修改个人信息"
   - _需求：5.1、5.2、5.3、5.4、5.5、5.6、7.6_

- [ ] 7. 集成聊天室消息实时审核流程
   - 在聊天发送流程中添加本地敏感词校验，违规时阻止发送并提示
   - 聊天消息提交至服务器后，服务器先调用 `msgSecCheck`（scene=2）审核，通过后再广播；未通过仅向发送者返回"消息发送失败：内容违规"
   - 客户端实现"发送中..."状态显示，审核通过后切换为已发送；超时3秒显示"发送超时"并允许重试
   - 禁言用户发送消息时提示"您已被禁言，剩余时间：X小时X分钟"
   - _需求：4.1、4.2、4.3、4.4、4.5、7.5_

- [ ] 8. 集成个人资料签名与空间描述审核流程
   - 在签名/描述编辑 UI 中添加本地敏感词实时校验与长度限制（签名≤50字符，描述≤200字符）
   - 签名提交调用 `msgSecCheck`（scene=3），描述提交调用 `msgSecCheck`（scene=4），审核未通过提示"内容包含违规信息，请修改"
   - 禁言状态下尝试修改签名/描述时提示"由于违规行为，您暂无法修改个人信息"
   - _需求：6.1、6.2、6.3、6.4、6.5、7.6_

- [ ] 9. 集成头像上传图片审核与举报 UI
   - 实现头像上传流程：客户端选择图片后先校验大小（≤1MB），上传至服务器调用 `imgSecCheck` 审核，违规提示"图片内容违规，请更换"
   - 实现举报 UI：聊天消息和个人资料旁添加举报按钮，点击弹出举报原因选择界面（政治有害/色情低俗/赌博诈骗/其他）
   - 举报提交调用 `POST /api/content/report`，成功后提示"举报已提交"
   - _需求：3.1、3.2、3.3、3.4、3.5、8.1、8.2_

- [ ] 10. 端到端集成测试与日志验证
   - 编写服务器端审核服务单元测试：Token管理、msgSecCheck/imgSecCheck 调用与超时、频率限制、违规记录与禁言处罚
   - 编写客户端 ContentSecurityManager 单元测试：本地敏感词过滤、词库缓存与更新、兜底词库降级
   - 端到端测试：昵称修改→聊天消息→签名修改→头像上传→举报→自动下线→禁言处罚全流程验证
   - 验证审核日志脱敏存储（仅保留前3后3字符）和日志保留策略
   - _需求：9.5、7.1、1.1、2.1、3.1、8.3_
