Files

365 lines
13 KiB
Markdown
Raw Permalink Normal View History

# 测试用例 - 分配模式 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` |