Files
tankwar_proj/.codebuddy/plan/content-security/task-item.md
T
jakciehan d263c7bf48 Merge feature/add_skin into master: resolve all conflicts
- 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
2026-05-12 07:05:20 +08:00

5.9 KiB
Raw Blame History

实施计划 — 用户生成内容(UGC)安全审核系统

  • 1. 搭建服务器端审核服务核心架构

    • 创建 server/services/wechatTokenManager.js:实现微信 Access Token 自动获取与刷新(2小时有效期,提前5分钟刷新),获取失败时指数退避重试(2s/4s/8s),全部失败标记服务不可用
    • 创建 server/services/contentSecurityService.js:实现统一审核方法 checkTextContent(openid, content, scene)checkImageContent(imageBuffer),封装 msgSecCheckimgSecCheck 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-textPOST /api/content/check-imageGET /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名以上不同用户举报时自动隐藏,标记待人工复核
    • 实现内容重置逻辑:内容被下线或删除时,昵称恢复为"玩家+随机数",签名/描述清空
    • 添加举报 APIPOST /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字符)
    • 签名提交调用 msgSecCheckscene=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