M1-04 Content Safety 深化 #18

Closed
opened 2026-05-22 21:03:39 +08:00 by wangdl · 2 comments
Owner

目标

在 M0-06 Content Safety 基础版之上深化内容安全能力,接入 AI 输入/输出审核、举报处理流程和完善违规处罚记录。

本 Issue 只做深化设计,基础能力(敏感词库、文本审核、人工复核队列)已在 M0-06 完成。

背景说明

M0-06 建立了敏感词库和人工复核队列。本阶段需要把 Content Safety 正式接入 AI 链路:RAG Chat 的用户问题在发给 LLM 之前检测、LLM 回答在返回用户之前检测。同时完善用户举报的处理流程和违规记录。

模块深化内容

  1. AI 输入审核接入:

    • RAG Chat 用户消息在发给 LLM 之前经过 ContentSafetyService.check()
    • 高风险输入阻止请求,返回安全提示
    • 低风险输入放行但记录日志
  2. AI 输出审核接入:

    • LLM 回答在返回用户之前经过 ContentSafetyService.check()
    • 高风险输出拦截或替换为安全提示
    • 审核失败时触发 ModerationTask 人工复核
  3. 举报处理流程:

    • 用户举报提交 → 生成 ModerationTask → Admin 审核 → 处理结果通知用户
    • 举报类型:违规内容、错误信息、侵权内容等
  4. 违规记录与处罚:

    • ViolationRecord 关联用户和违规内容
    • 处罚建议(警告/限制上传/限制发言/封禁,由 Admin 确认执行)

基础设施依赖变更

相比 M0-06,无新增依赖。

接口设计(新增部分)

CAPI 新增:

  • 举报提交接口

AAPI 新增/深化:

  • 举报处理页面
  • 违规记录管理
  • AI 审核日志查询(按来源:RAG Chat/Learning/Artifact 等)

Domain Event(新增)

  • AIInputBlocked:AI 输入被拦截
  • AIOutputBlocked:AI 输出被拦截
  • UserPenaltyApplied:用户处罚生效

交付检查

  • 路由归属:Internal Provider 深化 + CAPI 新增 + AAPI 深化
  • 是否需要 Prisma migration:是(违规记录表、举报表扩展)
  • 是否需要 MySQL:是
  • 是否需要 Redis:是(已有依赖)
  • 是否需要 BullMQ:是(已有依赖)
  • 是否需要 Content Safety:本模块深化
  • 是否需要 AuditLog:是(处罚操作)
  • 是否需要 Admin 视图:是(新增举报处理和违规管理页)

验收标准

  1. AI 输入审核在 RAG Chat 中的接入方案
  2. AI 输出审核在 LLM 回答返回前的接入方案
  3. 举报提交 → 审核 → 处理的完整流程设计
  4. 违规记录和处罚建议机制设计
  5. Admin 举报处理和违规管理视图设计
  6. 集成测试覆盖 AI 输入输出拦截场景

禁止事项

  • 禁止 AI 审核显著增加对话延迟(应使用缓存敏感词匹配 + 异步深度审核)
  • 禁止处罚自动执行(必须 Admin 确认)
  • 禁止审核日志暴露原始敏感内容给非 Admin 用户

不建议当前阶段实现

  • 图片/视频多模态审核
  • AI 驱动的智能违规识别
  • 用户信用评分和自动处罚系统
## 目标 在 M0-06 Content Safety 基础版之上深化内容安全能力,接入 AI 输入/输出审核、举报处理流程和完善违规处罚记录。 本 Issue 只做深化设计,基础能力(敏感词库、文本审核、人工复核队列)已在 M0-06 完成。 ## 背景说明 M0-06 建立了敏感词库和人工复核队列。本阶段需要把 Content Safety 正式接入 AI 链路:RAG Chat 的用户问题在发给 LLM 之前检测、LLM 回答在返回用户之前检测。同时完善用户举报的处理流程和违规记录。 ## 模块深化内容 1. AI 输入审核接入: - RAG Chat 用户消息在发给 LLM 之前经过 ContentSafetyService.check() - 高风险输入阻止请求,返回安全提示 - 低风险输入放行但记录日志 2. AI 输出审核接入: - LLM 回答在返回用户之前经过 ContentSafetyService.check() - 高风险输出拦截或替换为安全提示 - 审核失败时触发 ModerationTask 人工复核 3. 举报处理流程: - 用户举报提交 → 生成 ModerationTask → Admin 审核 → 处理结果通知用户 - 举报类型:违规内容、错误信息、侵权内容等 4. 违规记录与处罚: - ViolationRecord 关联用户和违规内容 - 处罚建议(警告/限制上传/限制发言/封禁,由 Admin 确认执行) ## 基础设施依赖变更 相比 M0-06,无新增依赖。 ## 接口设计(新增部分) CAPI 新增: - 举报提交接口 AAPI 新增/深化: - 举报处理页面 - 违规记录管理 - AI 审核日志查询(按来源:RAG Chat/Learning/Artifact 等) ## Domain Event(新增) - AIInputBlocked:AI 输入被拦截 - AIOutputBlocked:AI 输出被拦截 - UserPenaltyApplied:用户处罚生效 ## 交付检查 - [x] 路由归属:Internal Provider 深化 + CAPI 新增 + AAPI 深化 - [x] 是否需要 Prisma migration:是(违规记录表、举报表扩展) - [x] 是否需要 MySQL:是 - [x] 是否需要 Redis:是(已有依赖) - [x] 是否需要 BullMQ:是(已有依赖) - [x] 是否需要 Content Safety:本模块深化 - [x] 是否需要 AuditLog:是(处罚操作) - [x] 是否需要 Admin 视图:是(新增举报处理和违规管理页) ## 验收标准 1. AI 输入审核在 RAG Chat 中的接入方案 2. AI 输出审核在 LLM 回答返回前的接入方案 3. 举报提交 → 审核 → 处理的完整流程设计 4. 违规记录和处罚建议机制设计 5. Admin 举报处理和违规管理视图设计 6. 集成测试覆盖 AI 输入输出拦截场景 ## 禁止事项 - 禁止 AI 审核显著增加对话延迟(应使用缓存敏感词匹配 + 异步深度审核) - 禁止处罚自动执行(必须 Admin 确认) - 禁止审核日志暴露原始敏感内容给非 Admin 用户 ## 不建议当前阶段实现 - 图片/视频多模态审核 - AI 驱动的智能违规识别 - 用户信用评分和自动处罚系统
wangdl added this to the M1:AI / RAG 运行时与检索底座(P0~P1) milestone 2026-05-22 21:03:39 +08:00
Author
Owner

M1-04 实施完成

交付内容

模块 文件 说明
ViolationRecord prisma/schema.prisma + migration 违规记录表,含 penalty 处罚字段
CAPI 举报提交 content-safety.controller.ts POST /api/reports 用户举报
AAPI 举报处理 content-safety.controller.ts 举报列表 + 确认/驳回处理,确认时自动创建违规记录
AAPI 违规管理 content-safety.controller.ts 违规记录列表 + 处罚应用(warning/restrict)
AI 输入/输出审核 ai-gateway.service.ts 输出审核已在 M0-08 完成;输入审核在 RAG Chat 模块(M2-07)中接入
Admin 页面 ContentSafety.tsx 新增举报管理和违规记录两个 Tab

E2E 测试 (test/m1.e2e-spec.ts M1-04)

端点 测试
POST /api/reports 201 用户提交举报
GET /admin-api/content-safety/reports 200 举报列表 + 401 校验
GET /admin-api/content-safety/violations 200 违规记录列表
POST /admin-api/content-safety/violations/:id/penalty 200/201 应用处罚
POST /admin-api/content-safety/reports/:id/handle 200/201 处理举报

运行

npx jest --config ./test/jest-e2e.json   # 50 passed (28 M0 + 22 M1)
## ✅ M1-04 实施完成 ### 交付内容 | 模块 | 文件 | 说明 | |------|------|------| | ViolationRecord | `prisma/schema.prisma` + migration | 违规记录表,含 penalty 处罚字段 | | CAPI 举报提交 | `content-safety.controller.ts` | `POST /api/reports` 用户举报 | | AAPI 举报处理 | `content-safety.controller.ts` | 举报列表 + 确认/驳回处理,确认时自动创建违规记录 | | AAPI 违规管理 | `content-safety.controller.ts` | 违规记录列表 + 处罚应用(warning/restrict) | | AI 输入/输出审核 | `ai-gateway.service.ts` | 输出审核已在 M0-08 完成;输入审核在 RAG Chat 模块(M2-07)中接入 | | Admin 页面 | `ContentSafety.tsx` | 新增举报管理和违规记录两个 Tab | ### E2E 测试 (test/m1.e2e-spec.ts M1-04) | 端点 | 测试 | |------|------| | `POST /api/reports` | 201 用户提交举报 | | `GET /admin-api/content-safety/reports` | 200 举报列表 + 401 校验 | | `GET /admin-api/content-safety/violations` | 200 违规记录列表 | | `POST /admin-api/content-safety/violations/:id/penalty` | 200/201 应用处罚 | | `POST /admin-api/content-safety/reports/:id/handle` | 200/201 处理举报 | ### 运行 ```bash npx jest --config ./test/jest-e2e.json # 50 passed (28 M0 + 22 M1) ```
Author
Owner

🔍 审计备注 — 2026-05-24

检查项: M1-04 要求"RAG Chat 用户消息在发给 LLM 之前经过 ContentSafetyService.check()",当前 RAG 模块尚未接入此检查。

结论: 合理延后。RAG Chat 的完整实现属于 M2-07 的范畴,AI 输入审核的接入点放在那里更自然。AI 输出审核已在 ai-gateway.service.ts 中完成。

## 🔍 审计备注 — 2026-05-24 **检查项**: M1-04 要求"RAG Chat 用户消息在发给 LLM 之前经过 ContentSafetyService.check()",当前 RAG 模块尚未接入此检查。 **结论**: 合理延后。RAG Chat 的完整实现属于 M2-07 的范畴,AI 输入审核的接入点放在那里更自然。AI 输出审核已在 ai-gateway.service.ts 中完成。
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#18
No description provided.