# 测试用例 - 分配模式 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) 管理员账号已登录
2) 前端 dist 已部署 v1.2 版本 | | 测试步骤 | 1. 浏览器访问 `/itadmin/dashboard`
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 切换条(位于页面标题下方)
2. 检查两个 Tab:「坐席列表」「分配策略」 | | 预期结果 | 两个 Tab 标签可见;「坐席列表」Tab 默认 active(底部 accent 色高亮 + 文字变 accent 色) | | 测试结果 | ⬜ 待测试 | ### TC-TAB-002 | 字段 | 内容 | |------|------| | 用例名称 | 点 Tab 2「分配策略」切换显示 | | 前置条件 | 1) 进入 `/itadmin/agents`,默认 Tab 1 | | 测试步骤 | 1. 点击「分配策略」Tab | | 预期结果 | 1) Tab 2 高亮
2) 6 张模式卡片全部显示
3) Tab 1 内容(坐席表格)消失 | | 测试结果 | ⬜ 待测试 | ### TC-TAB-003 | 字段 | 内容 | |------|------| | 用例名称 | 点 Tab 1「坐席列表」回切 | | 前置条件 | 1) 已在 Tab 2 状态 | | 测试步骤 | 1. 点击「坐席列表」Tab | | 预期结果 | 1) Tab 1 高亮
2) 坐席表格重新显示
3) Tab 2 内容消失 | | 测试结果 | ⬜ 待测试 | ### TC-TAB-004 | 字段 | 内容 | |------|------| | 用例名称 | Tab 切换无网络多余请求 | | 前置条件 | 1) 打开 DevTools Network 面板
2) 进入 `/itadmin/agents`(Tab 1 已加载) | | 测试步骤 | 1. 点击 Tab 2
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 色(高亮)
2) 单选圆点 selected 状态
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. 点击「轮询分配」卡片
2. 检查是否触发 `selectMode` | | 预期结果 | 弹出 ElMessage.warning「轮询分配暂未开放,阶段二解锁」;不发起 PUT 请求 | | 测试结果 | ⬜ 待测试 | ### TC-LOCK-003 | 字段 | 内容 | |------|------| | 用例名称 | 锁定文案 4 类正确 | | 前置条件 | 1) 进入 Tab 2 | | 测试步骤 | 1. 逐张锁定卡片检查 `.mode-lock-text` | | 预期结果 | 轮询/最少活跃:「坐席人数不足3人,暂不需要」
加权:「坐席人数不足5人,暂不需要」
技能匹配:「需坐席≥5人 + 技能标签体系成熟」
优先队列:「需坐席≥5人 + 紧急度评分上线」 | | 测试结果 | ⬜ 待测试 | ### TC-LOCK-004 | 字段 | 内容 | |------|------| | 用例名称 | 锁定文案含锁图标 | | 前置条件 | 1) 进入 Tab 2 | | 测试步骤 | 1. 逐张锁定卡片检查 `.mode-lock-text` 内 `` | | 预期结果 | 5 张锁定卡片均含锁图标 | | 测试结果 | ⬜ 待测试 | --- ## 六、Tab 2 引导条用例 ### TC-GUIDE-001 | 字段 | 内容 | |------|------| | 用例名称 | 引导条显示 | | 前置条件 | 1) 进入 Tab 2 | | 测试步骤 | 1. 检查页面标题下方描述区 | | 预期结果 | 显示「当前坐席 N 人足以承担...」(N 为 agentStore.agents.length) | | 测试结果 | ⬜ 待测试 | ### TC-GUIDE-002 | 字段 | 内容 | |------|------| | 用例名称 | 引导条信息图标 | | 前置条件 | 1) 进入 Tab 2 | | 测试步骤 | 1. 检查引导条文本前的 `` | | 预期结果 | 信息图标显示,颜色为 accent | | 测试结果 | ⬜ 待测试 | ### TC-GUIDE-003 | 字段 | 内容 | |------|------| | 用例名称 | 引导条坐席人数动态更新 | | 前置条件 | 1) 数据库坐席数为 1 | | 测试步骤 | 1. 进入 Tab 2
2. 检查显示的坐席人数 | | 预期结果 | 显示「1 人」与数据库一致 | | 测试结果 | ⬜ 待测试 | --- ## 七、API 兼容性用例 ### TC-API-001 | 字段 | 内容 | |------|------| | 用例名称 | `GET /api/admin/assignment-mode` 返回 200 | | 前置条件 | 1) 后端服务运行
2) admin token 已注入 | | 测试步骤 | 1. `curl -H 'X-Forwarded-For: 10.240.1.100' -H 'Authorization: Bearer ' 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(仍合法)
2. 再发 GET 验证 | | 预期结果 | PUT 200,GET 返回 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
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. 点「强制解绑」
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`
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/`
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` |