Files
wecom_it_smart_desk/docs/03-测试文档
Simon 0042519f66 fix(security): P0-NEW12 调试端点代码层根因(debug.py 集中 + app_env 优先)
【触发】
2026-08-12 09:00 早班巡检:jumpserver-V2 容器内 `python urllib` 绕开 nginx 直测
FastAPI(backend:8000):
  - /test-ping 200 pong
  - /test-error 200 "服务器内部错误"
  - /version 200 1.1.0(含 git hash)
  - /openapi.json 404(P0-NEW11 已闭环)
真实风险:公网 404 全部依赖 nginx 边缘层兜底;若 nginx 配置被误改 /
失效 / 容器间网络可达 backend:8000,攻击者可拿到 3 个调试端点。

【修复(v1.0 + v1.1 二次修复)】
1. 新建 src/backend/app/api/debug.py 集中 3 个调试端点(/api/debug/ping
   /error /version),加双重门控:
   - 模块级:main.py `if _is_dev_mode():` 块内 include_router(debug_router)
   - 端点级:每个端点内部 _is_dev_mode() 二次校验(防 fail-open)
2. 删除 main.py 散落的 /test-ping /test-error /version
3. debug.py 的 _is_dev_mode() 委托 main.py:48 单一真源(避免三处定义漂移)
4. 【v1.1 二次修复】_is_dev_mode() / _dev_mode_enabled() 改为 app_env 优先:
   - 优先级 1: app_env=="production" → 永远 False(即使 DEV_MODE=true)
   - 优先级 2: 非 production → 看 DEV_MODE / settings.dev_mode
   同步修复 main.py + dev_auth.py(两个独立实现不能漏一处)
5. tests/conftest.py enable_dev_mode fixture 同步设 APP_ENV=development
   (避免 dev 测试 case 因 app_env 默认 production 而 fail)

【验证(公网 + 容器内)】
- 公网 12 端点:3 旧端点 404 + 3 新端点 404 + 3 dev 403(nginx IP 白名单)+
  1 health 200 + 3 P0-NEW11 404 
- 容器内直连 backend:8000 6 端点:100% 4xx (用户原话真实风险场景)
- 回归测试 10 passed + 1 skipped(psutil 缺包)

【部署】
jumpserver-V2 PSFTP + sudo cp + chown admin:admin + 清理 __pycache__ +
docker restart wecom_it_backend
  v1 部署:10:48
  v2 部署:10:55(app_env 优先修复后)

【关联】
- 缺陷单:docs/03-测试文档/05-缺陷单/BUG-安全-005-调试端点无门控-001.md
- 看板:项目状态看板 v1.9.7-DRAFT P0-NEW12  已修复
- 工作日志:.workbuddy/memory/2026-08-12.md
- MEMORY 铁律:.workbuddy/memory/MEMORY.md「调试端点铁律」5 条
2026-08-12 11:01:14 +08:00
..

测试质量文档分类索引

版本: v2.0 | 生效日期: 2026-08-05 | 维护人: Duckula

本目录包含 IT 智能服务台项目的所有测试相关文档。按类型分类,便于查阅和维护。

历史版本v1.02026-07-14)已归档为 README.v1.archive.md


📁 文档分类结构

docs/03-测试文档/
├── 00-测试规范/                                       # 测试方法论、流程、规范
│   ├── 测试方法论指南.md                              # v1.02026-07-14
│   └── 测试套件全景.md                                # v1.02026-08-05 新建)⭐
│
├── 01-综合报告/                                       # 合并汇总类报告
│   └── QA_COMPREHENSIVE_REPORT.md
│
├── 02-E2E测试/                                        # 端到端测试
│   ├── E2E-CHECKLIST-v0.7.0.md                       # v0.7.0 验收清单(扫码登录+MFA)
│   ├── 方案A-消息发送延时-E2E验证报告-20260708.md
│   └── e2e-screenshots/                              # 截图证据
│
├── 03-功能测试用例/                                   # 按需求/功能分类
│   ├── TC-REQ-认证-统一认证与登录-v1.0.md
│   ├── TC-REQ-通用-005-选项选择持久化-v1.0.md
│   ├── TC-REQ-AI-004-AI回复来源标识.md
│   ├── TC-REQ-用户-007-自助诊断面板优化.md
│   ├── TC-通用-004-敏感词检测.md                     # 含 §10 鉴权章节(BUG-通用-004
│   ├── TC-通用-002-快速回复规则后台管理.md
│   ├── TC-坐席-007-分诊排查系统.md
│   ├── TC-用户-006-智能推荐重构.md
│   ├── TC-用户-005-头像菜单退出.md
│   ├── TC-用户-008-H5结束会话失败回归-v1.0.md
│   ├── TC-集成-002-分配模式Tab收编.md
│   ├── TESTING_CALL_AGENT.md
│   ├── 测试/Token多IP异常检测测试用例.md
│   └── 会话存档功能-测试用例.md
│
├── 04-版本测试报告/                                   # 按日期/版本分类
│   ├── Tier0-测试报告-20260708.md
│   ├── Tier1-测试报告-20260708.md
│   ├── P0串联+P2可视化-测试报告-20260708.md
│   ├── OTP绑定-测试报告-20260708.md
│   ├── RBAC-BugFix-测试报告-20260707.md
│   ├── 看板验真-测试报告-20260707.md
│   └── 知识迭代Bug修复报告-20260711.md
│
├── 05-缺陷单/                                         # P0/P1/P2 缺陷归档
│   ├── README.md                                       # 缺陷单索引
│   ├── BUG-通用-004-敏感词API无鉴权-001.md            # 本次修复
│   ├── BUG-通用-快速回复规则-路由目标筛选500-002.md
│   ├── BUG-通用-用户角色分配表格看不清-001.md
│   ├── BUG-AI-打印机安装路由错误-001.md
│   ├── BUG-坐席-002-选项汇总标签缺失-001.md
│   ├── BUG-坐席-图片预览刷新-001.md
│   ├── BUG-用户-H5请求超时-002.md
│   ├── BUG-用户-H5结束会话失败-003.md
│   └── BUG-用户-坐席离线未限制呼叫人工-001.md
│
├── README.md                                          # 本文件(v2.0
└── README.v1.archive.md                               # 旧版归档

📋 测试统计汇总(v2.0 / 2026-08-05

指标 数值 说明
测试文档总数 39 13 TC + 7 TR + 9 BUG + 4 索引/README + 1 测试方法论 + 1 测试套件全景 + 4 综合
测试文件总数 78 src/backend/tests/ 下(含子目录)
测试用例总数 1403 pytest 收集,含 3 个 collection 错误文件
通过率 93.4% 1311 passed / 88 failed / 4 xfailed(最近一次基线 2026-08-05
TC 13 按需求/功能分类
TR 7 按版本/日期分类
BUG 单 9 P0/P1/P2 归档
自动化生成 scripts/test_inventory.py(手动重跑 + CI 钩子待补)

📈 与 v1.0 (2026-07-14) 对比

  • 测试文档:12 → 39+225%
  • 测试用例:200+ → 1403+602%
  • 通过率:~95% → 93.4%-1.6pp新增覆盖已暴露的 88 个 collection 错误

📚 文档清单总览

分类 文档名称 测试范围 状态
测试规范 00-测试规范/测试方法论指南.md 测试策略、流程、CI/CD 生效中
测试规范 00-测试规范/测试套件全景.md pytest 套件全景(78 文件 / 1403 用例) v1.02026-08-05
综合报告 01-综合报告/QA_COMPREHENSIVE_REPORT.md P2/P3 + WebSocket + 坐席 v5.3 通过
E2E 测试 02-E2E测试/E2E-CHECKLIST-v0.7.0.md 扫码登录 + MFA + P0/P1 合规 通过
E2E 测试 02-E2E测试/方案A-消息发送延时-E2E验证报告-20260708.md WS 打字机 + 发送即时性 通过
TC 03-功能测试用例/TC-REQ-认证-统一认证与登录-v1.0.md 企微免密 + 账号密码 + MFA 📋 待执行
TC 03-功能测试用例/TC-REQ-通用-005-选项选择持久化-v1.0.md 选项选择持久化
TC 03-功能测试用例/TC-REQ-AI-004-AI回复来源标识.md AI 回复来源标识
TC 03-功能测试用例/TC-REQ-用户-007-自助诊断面板优化.md 自助诊断面板
TC 03-功能测试用例/TC-通用-004-敏感词检测.md 敏感词(中台) + §10 鉴权
TC 03-功能测试用例/TC-通用-002-快速回复规则后台管理.md 快速回复规则
TC 03-功能测试用例/TC-坐席-007-分诊排查系统.md 分诊排查
TC 03-功能测试用例/TC-用户-006-智能推荐重构.md 智能推荐重构
TC 03-功能测试用例/TC-用户-005-头像菜单退出.md 头像菜单退出
TC 03-功能测试用例/TC-用户-008-H5结束会话失败回归-v1.0.md 结束会话失败回归
TC 03-功能测试用例/TC-集成-002-分配模式Tab收编.md 分配模式 Tab 收编
TC 03-功能测试用例/TESTING_CALL_AGENT.md 呼叫坐席(3 次 AI 回复后出现按钮)
TC 03-功能测试用例/Token多IP异常检测测试用例.md Token 多 IP 异常
TC 03-功能测试用例/会话存档功能-测试用例.md 会话存档
TR 04-版本测试报告/OTP绑定-测试报告-20260708.md 首次绑定 + 重置流程
TR 04-版本测试报告/Tier0-测试报告-20260708.md 知识库迭代基础设施
TR 04-版本测试报告/Tier1-测试报告-20260708.md API 层 + 前端组件
TR 04-版本测试报告/P0串联+P2可视化-测试报告-20260708.md 会话关闭建议 + 知识图谱
TR 04-版本测试报告/RBAC-BugFix-测试报告-20260707.md admin_users 装饰器修复
TR 04-版本测试报告/看板验真-测试报告-20260707.md 5 项存量功能验证 ⚠️ 3/5 通过
TR 04-版本测试报告/知识迭代Bug修复报告-20260711.md POST /suggestions + Neo4j MERGE
BUG 单 05-缺陷单/README.md 缺陷单索引
BUG 单 05-缺陷单/BUG-通用-004-敏感词API无鉴权-001.md 13 端点裸奔 P0(本次修复) 🔄 已修复待关闭
BUG 单 05-缺陷单/BUG-通用-快速回复规则-路由目标筛选500-002.md 快速回复路由 500
BUG 单 05-缺陷单/BUG-通用-用户角色分配表格看不清-001.md 用户角色表格
BUG 单 05-缺陷单/BUG-AI-打印机安装路由错误-001.md AI 路由
BUG 单 05-缺陷单/BUG-坐席-002-选项汇总标签缺失-001.md 标签缺失
BUG 单 05-缺陷单/BUG-坐席-图片预览刷新-001.md 图片预览
BUG 单 05-缺陷单/BUG-用户-H5请求超时-002.md H5 请求超时
BUG 单 05-缺陷单/BUG-用户-H5结束会话失败-003.md H5 结束会话失败
BUG 单 05-缺陷单/BUG-用户-坐席离线未限制呼叫人工-001.md 坐席离线未限制

🏷️ 按主题分类(v2.0

身份认证 & 安全

  • 00-测试规范/测试套件全景.md — pytest 鉴权专项 13 文件 / 212 用例
  • E2E-CHECKLIST-v0.7.0.md — 扫码登录、MFA 绑定与验证
  • TC-REQ-认证-统一认证与登录-v1.0.md — 企微免密、账号密码、OTP
  • OTP绑定-测试报告-20260708.md — 首次绑定、管理员重置
  • RBAC-BugFix-测试报告-20260707.md — 权限装饰器修复
  • BUG-通用-004-敏感词API无鉴权-001.md — 13 端点鉴权补漏(本次)

消息 & WebSocket

  • 方案A-消息发送延时-E2E验证报告-20260708.md — 发送即时返回 + WS 流式
  • QA_COMPREHENSIVE_REPORT.md — WebSocket 实时推送功能

知识库 & AI

  • Tier0-测试报告-20260708.md — Neo4j、审批状态机、置信门控
  • Tier1-测试报告-20260708.md — Vision、RAGFlow、审批队列、知识迭代
  • 知识迭代Bug修复报告-20260711.md — POST 端点、Neo4j MERGE、过期检查

业务功能

  • TESTING_CALL_AGENT.md — 呼叫坐席功能
  • P0串联+P2可视化-测试报告-20260708.md — 会话关闭建议、知识图谱可视化
  • 看板验真-测试报告-20260707.md — 排队、AI Wingman、知识库、RBAC、敏感词

自动化 / pytest 套件

  • 00-测试规范/测试套件全景.md — 78 文件 / 1403 用例 / 13 主题分类

⚠️ 已知遗留问题

问题 位置 状态
test_approval_detect_intent.py collection 错 src/backend/tests/ 预存在(_call_dify_approval_intent 函数 v1.x 治理中移除)
test_byod.py collection 错 src/backend/tests/ 预存在(_keyword_prefilter 函数 v1.x 治理中移除)
test_quick_rules.py collection 错 src/backend/tests/ 预存在
test_routing_service.py 部分用例失败 src/backend/tests/ 88 个 failed 全部与此 3 类相关(已分批 ignore)

🚀 快速上手

# 1. 跑全部有效套件(跳过 3 个预损坏)
cd src/backend
python -m pytest tests/ -q \
  --ignore=tests/test_approval_detect_intent.py \
  --ignore=tests/test_byod.py \
  --ignore=tests/test_quick_rules.py

# 2. 跑本次新增的鉴权回归(最关键)
python -m pytest tests/test_sensitive_words_auth.py -v

# 3. 重新生成测试套件全景
python ../../scripts/test_inventory.py --baseline 1311/88/4

🔗 关联文档


最后更新:2026-08-05 | 整理人:Duckula v2.0