Files
wecom_it_smart_desk/docs/03-测试文档/03-功能测试用例/TC-集成-002-分配模式Tab收编.md
T
Simon 44e77dcb0e chore(docs): docs/ 目录全面重新编号 + 重组
**重构前**(旧编号 02-11):
- docs/02-产品需求/      → 00 产品规划/PRD
- docs/03-技术架构/      → 01-05 子目录散落
- docs/04-原型设计/      → 01-02 产品设计(HTML 原型)
- docs/05-原型设计/      → screens/
- docs/06-测试素材/      → 02-E2E / 03-功能 / 04-版本测试
- docs/07-项目管理/      → 任务说明书/日报/计划
- docs/08-安全审计/      → 审计报告
- docs/09-堡垒运维/      → toolbox / deploy
- docs/10-项目管理/      → 任务说明书(重复)
- docs/11-历史归档/      → deploy-nas-archived

**重构后**(新编号 00-07,语义化):
- docs/00-产品开发流程与文档管理规范.md
- docs/00-版本迭代总览.md
- docs/01-产品文档/      (PRD/原型/认证/会话/AI 服务/坐席/集成)
- docs/02-技术文档/      (技术方案/架构图/重构记录/前端改造/实现配置)
- docs/03-测试文档/      (E2E/功能用例/版本报告/缺陷单)
- docs/04-运维文档/      (部署运维/运维指南)
- docs/05-运营文档/      (品牌推广/用户手册)
- docs/06-安全审计/      (审计报告)
- docs/07-项目管理/      (任务说明书/日报/计划/看板)

**净收益**:
- 目录编号与产品文档管理规范对齐(按文档阶段 01-07 编号)
- 消除 02-产品需求 与 10-项目管理 的编号重叠
- 子目录按文档类型分组(如 01-产品文档/00-产品规划、01-产品文档/01-认证与登录)
- 把运维/安全/项目管理从 0X 散落改为 04/06/07

合计 494 文件 + 78495 行 / - 14076 行
2026-08-03 18:46:55 +08:00

365 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试用例 - 分配模式 Tab 收编(管理后台 v1.2)
> **REQ编号**: REQ-集成-002-v1.2
> **版本**: v1.0
> **日期**: 2026-07-28
> **作者**: 宋献
> **关联文档**:
> - PRD`docs/01-产品文档/08-集成生态/PRD-REQ-集成-002-管理后台-v1.0.md`v1.2
> - 技术方案:`docs/02-技术文档/技术方案-REQ-集成-002-管理后台v1.2-分配模式Tab收编.md`
> - 原型图:`docs/01-产品文档/08-集成生态/原型-REQ-集成-000-管理后台-v1.0.html`
> - 任务说明书:`docs/07-项目管理/任务说明书/任务说明书-REQ-集成-002-分配模式Tab收编.md`
---
## 一、用例汇总
| 类别 | 用例数 | 通过 | 失败 | 阻塞 |
|------|--------|------|------|------|
| 路由层(菜单消失 + 路径行为) | 3 | 0 | 0 | 0 |
| Tab 切换(坐席管理页内) | 4 | 0 | 0 | 0 |
| 6 张模式卡片渲染 | 5 | 0 | 0 | 0 |
| 锁定态与解锁文案 | 4 | 0 | 0 | 0 |
| Tab 2 引导条 | 3 | 0 | 0 | 0 |
| API 兼容性 | 3 | 0 | 0 | 0 |
| 回归(坐席管理原有功能) | 6 | 0 | 0 | 0 |
| 构建/部署 | 3 | 0 | 0 | 0 |
| **总计** | **31** | **0** | **0** | **0** |
---
## 二、路由层用例
### TC-INT-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 左侧导航无「分配模式」菜单项 |
| 前置条件 | 1) 管理员账号已登录<br>2) 前端 dist 已部署 v1.2 版本 |
| 测试步骤 | 1. 浏览器访问 `/itadmin/dashboard`<br>2. 检查左侧导航「🟪 知识与 AI」组菜单项 |
| 预期结果 | 「知识与 AI」组共 7 项(快速回复规则 / 排查流程图 / 代答排除 / 知识迭代管理 / RAGFlow 文档导入 / 拓扑预览 / 知识库建议);无「分配模式」项 |
| 测试结果 | ⬜ 待测试 |
### TC-INT-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 访问 `/admin/assignment-mode` 路径行为 |
| 前置条件 | 1) 管理员账号已登录 |
| 测试步骤 | 1. 浏览器直接访问 `/itadmin/assignment-mode` |
| 预期结果 | 命中 Vue Router catch-all → 自动跳 `/itadmin/agents`(坐席管理 Tab 1 默认) |
| 测试结果 | ⬜ 待测试 |
### TC-INT-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 访问 `/admin/agents` 默认显示 Tab 1 |
| 前置条件 | 1) 管理员账号已登录 |
| 测试步骤 | 1. 浏览器访问 `/itadmin/agents` |
| 预期结果 | 默认进入「坐席列表」Tab(v-model 默认值),看到状态筛选 + 坐席表格 + 添加坐席按钮 |
| 测试结果 | ⬜ 待测试 |
---
## 三、Tab 切换用例
### TC-TAB-001
| 字段 | 内容 |
|------|------|
| 用例名称 | Tab 切换条样式 |
| 前置条件 | 1) 进入 `/itadmin/agents` |
| 测试步骤 | 1. 检查 Tab 切换条(位于页面标题下方)<br>2. 检查两个 Tab:「坐席列表」「分配策略」 |
| 预期结果 | 两个 Tab 标签可见;「坐席列表」Tab 默认 active(底部 accent 色高亮 + 文字变 accent 色) |
| 测试结果 | ⬜ 待测试 |
### TC-TAB-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 点 Tab 2「分配策略」切换显示 |
| 前置条件 | 1) 进入 `/itadmin/agents`,默认 Tab 1 |
| 测试步骤 | 1. 点击「分配策略」Tab |
| 预期结果 | 1) Tab 2 高亮<br>2) 6 张模式卡片全部显示<br>3) Tab 1 内容(坐席表格)消失 |
| 测试结果 | ⬜ 待测试 |
### TC-TAB-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 点 Tab 1「坐席列表」回切 |
| 前置条件 | 1) 已在 Tab 2 状态 |
| 测试步骤 | 1. 点击「坐席列表」Tab |
| 预期结果 | 1) Tab 1 高亮<br>2) 坐席表格重新显示<br>3) Tab 2 内容消失 |
| 测试结果 | ⬜ 待测试 |
### TC-TAB-004
| 字段 | 内容 |
|------|------|
| 用例名称 | Tab 切换无网络多余请求 |
| 前置条件 | 1) 打开 DevTools Network 面板<br>2) 进入 `/itadmin/agents`Tab 1 已加载) |
| 测试步骤 | 1. 点击 Tab 2<br>2. 观察 Network 请求 |
| 预期结果 | 无重复调用 `/api/admin/agents``/api/admin/assignment-mode`(一次性加载复用) |
| 测试结果 | ⬜ 待测试 |
---
## 四、6 张模式卡片渲染用例
### TC-CARD-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 6 张卡片全部渲染 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 统计 `.mode-card` 元素数量 |
| 预期结果 | 6 张(手动接单 / 轮询分配 / 最少活跃优先 / 加权比例分配 / 技能匹配分配 / 优先队列) |
| 测试结果 | ⬜ 待测试 |
### TC-CARD-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 「手动接单」当前启用态 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查「手动接单」卡片 |
| 预期结果 | 1) 边框为 accent 色(高亮)<br>2) 单选圆点 selected 状态<br>3) 右上「当前启用」tag |
| 测试结果 | ⬜ 待测试 |
### TC-CARD-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 卡片描述文案完整 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 逐张卡片检查 `.mode-desc` 元素 |
| 预期结果 | 6 张卡片均显示对应描述(手动/轮询/最少活跃/加权/技能匹配/优先队列) |
| 测试结果 | ⬜ 待测试 |
### TC-CARD-004
| 字段 | 内容 |
|------|------|
| 用例名称 | 「轮询分配」「最少活跃优先」P2 阶段标签 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查轮询分配 / 最少活跃优先 卡片右上 tag |
| 预期结果 | 显示蓝色「P2」tag(info 类型) |
| 测试结果 | ⬜ 待测试 |
### TC-CARD-005
| 字段 | 内容 |
|------|------|
| 用例名称 | 「加权/技能匹配/优先队列」P3 阶段标签 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查加权比例分配 / 技能匹配分配 / 优先队列 卡片右上 tag |
| 预期结果 | 显示灰色「P3」tag(背景为 bg-tertiary,文字 text-muted |
| 测试结果 | ⬜ 待测试 |
---
## 五、锁定态与解锁文案用例
### TC-LOCK-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 5 张锁定卡片 opacity 减半 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查轮询/最少活跃/加权/技能匹配/优先队列 5 张卡片 |
| 预期结果 | `.mode-card.mode-locked` 样式:opacity: 0.5(视觉变灰) |
| 测试结果 | ⬜ 待测试 |
### TC-LOCK-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 锁定卡片不响应点击 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 点击「轮询分配」卡片<br>2. 检查是否触发 `selectMode` |
| 预期结果 | 弹出 ElMessage.warning「轮询分配暂未开放,阶段二解锁」;不发起 PUT 请求 |
| 测试结果 | ⬜ 待测试 |
### TC-LOCK-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 锁定文案 4 类正确 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 逐张锁定卡片检查 `.mode-lock-text` |
| 预期结果 | 轮询/最少活跃:「坐席人数不足3人,暂不需要」<br>加权:「坐席人数不足5人,暂不需要」<br>技能匹配:「需坐席≥5人 + 技能标签体系成熟」<br>优先队列:「需坐席≥5人 + 紧急度评分上线」 |
| 测试结果 | ⬜ 待测试 |
### TC-LOCK-004
| 字段 | 内容 |
|------|------|
| 用例名称 | 锁定文案含锁图标 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 逐张锁定卡片检查 `.mode-lock-text``<i class="fas fa-lock">` |
| 预期结果 | 5 张锁定卡片均含锁图标 |
| 测试结果 | ⬜ 待测试 |
---
## 六、Tab 2 引导条用例
### TC-GUIDE-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 引导条显示 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查页面标题下方描述区 |
| 预期结果 | 显示「当前坐席 N 人足以承担...」(N 为 agentStore.agents.length |
| 测试结果 | ⬜ 待测试 |
### TC-GUIDE-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 引导条信息图标 |
| 前置条件 | 1) 进入 Tab 2 |
| 测试步骤 | 1. 检查引导条文本前的 `<i class="fas fa-info-circle">` |
| 预期结果 | 信息图标显示,颜色为 accent |
| 测试结果 | ⬜ 待测试 |
### TC-GUIDE-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 引导条坐席人数动态更新 |
| 前置条件 | 1) 数据库坐席数为 1 |
| 测试步骤 | 1. 进入 Tab 2<br>2. 检查显示的坐席人数 |
| 预期结果 | 显示「1 人」与数据库一致 |
| 测试结果 | ⬜ 待测试 |
---
## 七、API 兼容性用例
### TC-API-001
| 字段 | 内容 |
|------|------|
| 用例名称 | `GET /api/admin/assignment-mode` 返回 200 |
| 前置条件 | 1) 后端服务运行<br>2) admin token 已注入 |
| 测试步骤 | 1. `curl -H 'X-Forwarded-For: 10.240.1.100' -H 'Authorization: Bearer <token>' http://10.90.5.110:8000/api/admin/assignment-mode` |
| 预期结果 | HTTP 200,响应含 `current_mode` + `modes` 字段 |
| 测试结果 | ⬜ 待测试 |
### TC-API-002
| 字段 | 内容 |
|------|------|
| 用例名称 | `PUT /api/admin/assignment-mode` 仍能切换模式 |
| 前置条件 | 1) 当前 mode = manual |
| 测试步骤 | 1. 发送 PUT 请求将 mode 改为 manual(仍合法)<br>2. 再发 GET 验证 |
| 预期结果 | PUT 200GET 返回 current_mode = manual |
| 测试结果 | ⬜ 待测试 |
### TC-API-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 未授权调用仍 1002 |
| 前置条件 | 1) 未携带 admin token |
| 测试步骤 | 1. `curl http://10.90.5.110:8000/api/admin/assignment-mode` |
| 预期结果 | HTTP 401 或 code 1002(未授权) |
| 测试结果 | ⬜ 待测试 |
---
## 八、回归用例(坐席管理原有功能)
### TC-REG-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 坐席表格正常加载 |
| 前置条件 | 1) 进入 `/itadmin/agents` Tab 1 |
| 测试步骤 | 1. 检查表格行数 |
| 预期结果 | 显示数据库所有坐席(宋献 / 王丽 / 张伟 等) |
| 测试结果 | ⬜ 待测试 |
### TC-REG-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 状态筛选仍正常 |
| 前置条件 | 1) Tab 1 |
| 测试步骤 | 1. 点击「在线」tab<br>2. 检查表格行 |
| 预期结果 | 仅显示 status=online 的坐席 |
| 测试结果 | ⬜ 待测试 |
### TC-REG-003
| 字段 | 内容 |
|------|------|
| 用例名称 | 添加坐席对话框仍正常打开 |
| 前置条件 | 1) Tab 1 |
| 测试步骤 | 1. 点击「添加坐席」按钮 |
| 预期结果 | 弹出添加对话框(含企微用户ID/姓名/角色/技能标签/最大负载字段) |
| 测试结果 | ⬜ 待测试 |
### TC-REG-004
| 字段 | 内容 |
|------|------|
| 用例名称 | 编辑坐席对话框仍正常打开 |
| 前置条件 | 1) Tab 1 |
| 测试步骤 | 1. 点击某坐席「编辑」按钮 |
| 预期结果 | 弹出编辑对话框(含角色/技能标签/最大负载/OTP 二次验证) |
| 测试结果 | ⬜ 待测试 |
### TC-REG-005
| 字段 | 内容 |
|------|------|
| 用例名称 | OTP 强制解绑功能仍正常 |
| 前置条件 | 1) 编辑某已绑定 OTP 的坐席 |
| 测试步骤 | 1. 点「强制解绑」<br>2. 确认对话框点确定 |
| 预期结果 | OTP 解除 + 列表刷新 |
| 测试结果 | ⬜ 待测试 |
### TC-REG-006
| 字段 | 内容 |
|------|------|
| 用例名称 | 重置密码对话框仍正常 |
| 前置条件 | 1) Tab 1 |
| 测试步骤 | 1. 点击某坐席「重置密码」 |
| 预期结果 | 弹出重置密码对话框(含新密码/确认密码字段) |
| 测试结果 | ⬜ 待测试 |
---
## 九、构建/部署用例
### TC-BUILD-001
| 字段 | 内容 |
|------|------|
| 用例名称 | `npm run build` 通过 |
| 前置条件 | 1) ASCII 路径 `D:\dev\wecom\src\frontend-admin\` |
| 测试步骤 | 1. `npm run build`<br>2. 检查输出 |
| 预期结果 | 编译成功(无 TS 报错),生成 dist 目录 |
| 测试结果 | ⬜ 待测试 |
### TC-BUILD-002
| 字段 | 内容 |
|------|------|
| 用例名称 | 产物含 v1.2 字符串 |
| 前置条件 | 1) build 成功 |
| 测试步骤 | 1. `grep -E "agents-assignment|agents-list" dist/assets/Agents-*.js` |
| 预期结果 | 命中 ≥2 次(Tab name + ref |
| 测试结果 | ⬜ 待测试 |
### TC-DEPLOY-001
| 字段 | 内容 |
|------|------|
| 用例名称 | 部署后 `/itadmin/` 返回 200 |
| 前置条件 | 1) dist 已上传到 `/opt/wecom-it-desk/frontend-admin/dist/`<br>2) nginx 已 restart |
| 测试步骤 | 1. `curl -I http://10.90.5.110/itadmin/` |
| 预期结果 | HTTP 200 |
| 测试结果 | ⬜ 待测试 |
---
## 十、缺陷登记
| 编号 | 描述 | 严重度 | 状态 | 阻塞用例 |
|------|------|--------|------|----------|
| — | (暂无) | — | — | — |
---
## 十一、变更记录
| 版本 | 日期 | 变更内容 | 变更人 |
|------|------|----------|--------|
| v1.0 | 2026-07-28 | 初版(配套 PRD v1.2 + 技术方案) | 宋献 |
---
## 十二、关联文档
| 类型 | 路径 |
|------|------|
| PRD | `docs/01-产品文档/08-集成生态/PRD-REQ-集成-002-管理后台-v1.0.md` |
| 原型图 | `docs/01-产品文档/08-集成生态/原型-REQ-集成-000-管理后台-v1.0.html` |
| 技术方案 | `docs/02-技术文档/技术方案-REQ-集成-002-管理后台v1.2-分配模式Tab收编.md` |
| 任务说明书 | `docs/07-项目管理/任务说明书/任务说明书-REQ-集成-002-分配模式Tab收编.md` |