d263c7bf48
- GameGlobal.js: keep upstream SERVER_URL with /ws suffix - en.js/zh.js: merge both settings.nickname and settings.profile keys - SettingsScene.js: keep both nickname row and profile button - server/index.js: merge express app + content security proxy with noServer WebSocket mode and path validation - Add .gitignore for node_modules and .codebuddy
5.9 KiB
5.9 KiB
实施计划 — 用户生成内容(UGC)安全审核系统
-
1. 搭建服务器端审核服务核心架构
- 创建
server/services/wechatTokenManager.js:实现微信 Access Token 自动获取与刷新(2小时有效期,提前5分钟刷新),获取失败时指数退避重试(2s/4s/8s),全部失败标记服务不可用 - 创建
server/services/contentSecurityService.js:实现统一审核方法checkTextContent(openid, content, scene)和checkImageContent(imageBuffer),封装msgSecCheck和imgSecCheckAPI 调用,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
- 实现头像上传流程:客户端选择图片后先校验大小(≤1MB),上传至服务器调用
-
10. 端到端集成测试与日志验证
- 编写服务器端审核服务单元测试:Token管理、msgSecCheck/imgSecCheck 调用与超时、频率限制、违规记录与禁言处罚
- 编写客户端 ContentSecurityManager 单元测试:本地敏感词过滤、词库缓存与更新、兜底词库降级
- 端到端测试:昵称修改→聊天消息→签名修改→头像上传→举报→自动下线→禁言处罚全流程验证
- 验证审核日志脱敏存储(仅保留前3后3字符)和日志保留策略
- 需求:9.5、7.1、1.1、2.1、3.1、8.3