# 实施计划 — 用户生成内容(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_