Files
wecom_it_smart_desk/docs/07-项目管理/任务说明书/任务说明书-REQ-集成-002-分配模式Tab收编.v1.0.archive.md
T

156 lines
7.9 KiB
Markdown
Raw Normal View History

# 任务说明书 — 管理后台分配模式 Tab 收编
> **版本**: v1.0 | **日期**: 2026-07-28
> **状态**: 待执行
---
## 📋 基本信息
| 项目 | 内容 |
|------|------|
| **任务名称** | 管理后台分配模式 Tab 收编(v1.2) |
| **关联需求编号** | REQ-集成-002-v1.2 |
| **优先级** | 🟡 P2 |
| **类型** | UI 改造(页面结构) |
| **状态** | 待执行 |
| **负责人** | 待指派 |
| **创建日期** | 2026-07-28 |
| **预计完成日期** | 2026-07-29 |
| **涉及端** | 仅前端(管理后台 frontend-admin |
---
## 📥 输入项来源
### 产品需求
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/01-产品文档/08-集成生态/PRD-REQ-集成-002-管理后台-v1.0.md` | §5.1 页面树 / §5.2 导航分组 / §5.3 页面映射 / §9.2 占位表 / §12 变更日志(v1.2) | v1.2 已完成 PRD 改造,删除「分配模式」菜单项与独立页,合并入坐席管理 Tab |
| 同上 §12 v1.2 关键变更说明 | — | 决策依据、影响范围已记录 |
### 技术方案
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/02-技术文档/技术方案-REQ-集成-002-管理后台v1.2-分配模式Tab收编.md` | §3 前端改造详细设计 | 本任务的核心实施依据 |
### 原型设计
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/01-产品文档/08-集成生态/原型-REQ-集成-000-管理后台-v1.0.html` | 坐席管理页(`#page-agents`| Tab 1 坐席列表 / Tab 2 分配策略(含 6 模式卡片)|
### 需了解的现有代码
| 模块/文件 | 说明 | 需了解的内容 |
|-----------|------|-------------|
| `src/frontend-admin/src/views/Agents.vue` | 坐席管理页(改造目标)| 现有 `<AgentTable>` 引用、3 个 `el-dialog`(编辑/添加/重置密码)、`agentStore` 用法、`skillTagOptions``statusTabs` |
| `src/frontend-admin/src/views/AssignmentMode.vue` | 旧分配模式页(迁移来源)| `modes` 数组、`currentMode``selectMode` 函数、`getModeDescription`/`getLockReason``getAssignmentMode`/`apiUpdateMode` 调用 |
| `src/frontend-admin/src/router/index.ts` | 路由表(删路由项)| 现有 `/admin/assignment-mode` 路由配置位置 |
| `src/frontend-admin/src/api/admin.ts` | API 封装(**不动**| `getAssignmentMode`/`updateAssignmentMode` 已有导出 |
| `src/frontend-admin/src/types/index.ts` | 类型定义(**不动**| `AssignmentMode` 类型、`SKILL_TAGS` 常量 |
| `src/frontend-admin/src/stores/agent.ts` | 坐席 Store(提供人数)| `loadAgents` 方法、`agents` 列表 |
---
## 📤 输出成果要求
### 交付物清单
| # | 交付物 | 类型 | 说明 |
|---|--------|------|------|
| 1 | `src/frontend-admin/src/views/Agents.vue` | 代码(修改) | 顶层加 `<el-tabs v-model="activeTab">`,原内容迁入 Tab 1,新增 Tab 2「分配策略」 |
| 2 | `src/frontend-admin/src/views/AssignmentMode.vue` | 代码(保留+注释) | 文件保留,顶部加注释「v1.2 起停用,仅供未来回滚」 |
| 3 | `src/frontend-admin/src/router/index.ts` | 代码(修改) | 删除 `/admin/assignment-mode` 路由项 |
| 4 | `docs/03-测试文档/03-功能测试用例/TC-集成-002-分配模式Tab收编.md` | 测试用例(新建,可选)| Tab 切换 + 6 卡片渲染 + 锁定态 + API 兼容(按技术方案 §6 验证清单编写) |
### 验收要点
1. **菜单项消失**:左侧导航「知识与 AI」组无「分配模式」入口,原型图与代码保持一致。
2. **Tab 切换正常**:默认进 Tab 1(坐席列表),点 Tab 2 显示 6 张模式卡片。
3. **6 卡片完整**:「手动接单」高亮 + 「当前启用」tag;其余 5 张 `opacity:0.5` + 锁图标 + 解锁条件文案。
4. **引导条准确**:Tab 2 顶部显示当前坐席人数(取自 `agentStore.agents.length`)。
5. **API 兼容**:浏览器 Network 面板中 `GET /admin/assignment-mode` 返回 200。
6. **构建通过**`npm run build` 无 TS 报错、无 lint 报错。
7. **现有功能回归**:坐席列表的添加/编辑/删除/OTP 解绑/密码重置全部不受影响。
---
## 🔧 验证方式
| 类型 | 方式 |
|------|------|
| **路由层** | 浏览器地址栏访问 `/admin/assignment-mode` → 404 或重定向到 `/admin/agents`;访问 `/admin/agents` 正常显示 |
| **UI 层** | 浏览器(Chrome DevTools 深色主题)打开 `/admin/agents`,目视确认 Tab 切换 + 6 卡片渲染 + 锁定态 |
| **API 层** | 浏览器 Network 面板 / `curl -H 'X-Forwarded-For: 10.240.1.100' http://10.90.5.110:8000/admin/assignment-mode` 返回 200 + 期望 JSON |
| **回归** | 坐席管理原有功能(添加/编辑/删除/OTP/密码重置)逐一手动验证一次 |
| **构建** | `npm run build` 成功 + `dist/assets/*.css` 的 hash 变化(确认源码改了,不是缓存) |
| **部署** | `Compress-Archive` + `v2_ops.py upload` + 服务器解压 + `docker restart wecom_it_nginx`(按 SOP |
---
## ✅ 完成标准
- [ ] 路由表删除 `/admin/assignment-mode`
- [ ] `Agents.vue``<el-tabs>` + Tab 2「分配策略」可切换
- [ ] 6 张模式卡片全部渲染,「手动接单」高亮
- [ ] Tab 2 顶部引导条显示当前坐席人数
- [ ] 坐席管理原有 CRUD/OTP/密码重置功能 100% 不受影响
- [ ] `AssignmentMode.vue` 文件保留,顶部加"v1.2 起停用"注释
- [ ] `npm run build` 通过
- [ ] 后端 API`GET/PUT /api/admin/assignment-mode`200 OK,无回归
- [ ] (可选)TC-集成-002 测试用例已编写
- [ ] (可选)部署到生产并通过 agent-browser 端到端验证
---
## 📝 实施步骤建议
| 步骤 | 操作 | 预计耗时 |
|------|------|----------|
| 1 | 本地读取 `Agents.vue``AssignmentMode.vue`,画好迁移映射 | 5 min |
| 2 | `Agents.vue` 顶层套 `<el-tabs>`,原内容迁入 Tab 1 | 15 min |
| 3 | Tab 2 复制 `AssignmentMode.vue` 模板与脚本(含 `modes``currentMode``selectMode``getModeDescription``getLockReason` | 15 min |
| 4 | Tab 2 顶部加引导条,绑 `agentStore.agents.length` | 5 min |
| 5 | `router/index.ts` 删除 `/admin/assignment-mode` 路由项 | 2 min |
| 6 | `AssignmentMode.vue` 顶部加"v1.2 起停用"注释 | 2 min |
| 7 | `npm run build` 验证编译 | 5 min |
| 8 | **多路径同步铁律**ASCII 路径 `D:\dev\wecom\src\frontend-admin\` 也需同步修改(防止构建用的是旧代码) | — |
| 9 | 本地浏览器手动验证(地址栏 + Tab 切换 + 6 卡片) | 10 min |
| 10 | 按部署 SOP 上线(`v2_ops.py upload` + 服务器解压 + nginx restart | 15 min |
| 11 | (可选)curl 验证 API 200 + agent-browser 端到端截图 | 5 min |
| **合计** | | **约 80 min** |
---
## ⚠️ 风险与回滚
| 风险 | 应对 |
|------|------|
| 中文路径下 `pnpm install` 卡死 | 用 ASCII 路径 `D:\dev\wecom` 构建(项目铁律) |
| 多路径代码不同步导致部署无效 | build 后查 `dist/assets/*.css` 的 hash 变化确认 |
| Tab 2 数据二次请求浪费 | 用 `watch(activeTab)` 懒加载,或一次性 `onMounted` 加载 |
| 旧菜单链接残留 404 | PRD §12 已标注 v1.2 起不再独立;通知相关文档/聊天链接失效 |
| 阶段二/三分配模式膨胀需拆回 | 技术方案 §3.3 已记录回滚步骤(约 30 min) |
---
## 📚 关联文档
| 文档 | 路径 |
|------|------|
| 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` |
| 部署 SOP | `docs/04-运维文档/部署运维/DEPLOY-GUIDE.md` |
| 项目铁律 | `~/.workbuddy/MEMORY.md`(多路径代码同步铁律) |
---
## 📝 变更日志
| 版本 | 日期 | 变更 | 变更人 |
|------|------|------|--------|
| v1.0 | 2026-07-28 | 初版(配套 PRD v1.2 + 技术方案) | 宋献 |