docs(会话-001/用户-005): 版本合并与文档规范化整改 #9

REQ-会话-001 员工结束会话:
- PRD/原型 v1.0/v1.1/v1.2 归档为 .archive,现行收敛至单一 v1.3
- 技术方案 v1.2 归档,v1.3 为现行版本(位于 docs/02-技术文档/)
- PRD v1.3 §六 关联文档表指向 v1.3 原型与技术方案实际路径
- 三份任务说明书 + BUG-003 + TC-用户-008 引用同步至 .archive/v1.3

REQ-用户-005 头像菜单退出:
- PRD/原型/技术方案文件名 v1.0 -> v1.1,追平内容版本(铁律2)
- 三件套 + 任务说明书 + TC 互引版本对齐,相关 PRD 指向会话-001 v1.3

其他:
- 修复 4 处 UTF-8 乱码(U+FFFD)
- 新增 TR-会话-001-结束会话-v1.3.2 端到端测试报告(单测 75/75 + 生产构建通过)
- 整改记录 #9 写入 00-文档规范化整改记录.md

遗留: PRD v1.3「状态条永久显示」与代码 v1.3.5「状态条已删除」存在分歧,待产品拍板
This commit is contained in:
Simon
2026-08-03 23:53:59 +08:00
parent f9c25147c9
commit a8da4da0db
23 changed files with 217 additions and 55 deletions
@@ -281,8 +281,8 @@ end > reopen > waiting > active/urgent > disabled
| `前端组件-QueueWaiting.vue` | 右栏排队组件(v1.1 标记弃用) |
| `API-h5.py` | 关闭会话 API + reopen API |
| `stores/conversation.ts` | 新增 `showHeaderExitBtn` 字段 |
| `原型-REQ-会话-001-结束会话流程-v1.2.html` | v1.2 原型图(重绘 |
| `技术方案-REQ-会话-001-员工结束会话-v1.2.md` | v1.2 技术方案(同步更新) |
| `原型-REQ-会话-001-结束会话流程-v1.3.html` | v1.3 原型图(整合区方案 A |
| `../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.3.md` | v1.3 技术方案(同步更新) |
---
@@ -972,8 +972,8 @@
</table>
<div class="note">
📌 对应 PRD:<code>PRD-REQ-会话-001-员工结束会话-v1.2.md</code><br>
📌 对应技术方案:<code>技术方案-REQ-会话-001-员工结束会话-v1.2.md</code>
📌 对应 PRD:<code>PRD-REQ-会话-001-员工结束会话-v1.3.md</code><br>
📌 对应技术方案:<code>技术方案-REQ-会话-001-员工结束会话-v1.3.md</code>
</div>
<div class="note note--info">✅ v1.3 方案 A 5 项细节已拍板(2026-07-31),见章节 9.6</div>
@@ -6,11 +6,11 @@
> **状态**: [已实现]
> **作者**: Simon
> **关联文档**:
> - 技术方案: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.0.md`
> - 技术方案: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.1.md`
> - 任务说明书: `07-项目管理/任务说明书/任务说明书-REQ-用户-005-头像菜单退出.md`
> - 测试用例: `03-测试文档/03-功能测试用例/TC-用户-005-头像菜单退出.md`
> - 相关 PRD: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md`InputBar 结束咨询按钮)
> - 参考原型: `01-产品文档/05-用户端H5/原型-REQ-用户-000-H5用户端-v2.0.html`
> - 相关 PRD: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md`InputBar 结束咨询按钮)
> - 参考原型: `01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.1.html`
> - 前端组件: `frontend-h5/src/components/chat/ChatPanel.vue`(头像区域)
> - 后端 API: `backend/app/api/auth.py`logout)、`backend/app/api/h5.py`close conversation
@@ -117,7 +117,7 @@
| 组件 | Vant `Dialog``van-dialog` |
| 标题 | 结束会话 |
| 消息 | 退出后会话记录会清空,当前咨询进度将丢失,确定要结束会话吗? |
| 确认按钮 | 「确定退出」(红色/警告色,出风险) |
| 确认按钮 | 「确定退出」(红色/警告色,退出风险) |
| 取消按钮 | 「取消」(灰色/默认色) |
### 5.3 状态处理
@@ -2,8 +2,8 @@
> **版本**: v1.3
> **日期**: 2026-07-31
> **关联PRD**: PRD-REQ-会话-001-员工结束会话-v1.3(§十一 v1.3 整合区增量)
> **关联原型**: 原型-REQ-会话-001-结束会话流程-v1.3.html §⑨
> **关联PRD**: ../01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md(§十一 v1.3 整合区增量)
> **关联原型**: ../01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.3.html §⑨
> **状态**: 已拍板(方案 A 5 项细节 2026-07-31 落地)
---
@@ -656,7 +656,7 @@ v1.3 把 v1.2 中分散在 4 个位置(标题栏 / InputBar / 消息流底部
| 🆕 新建 | `src/stores/integrationZone.ts` | 整合区状态管理(可选,整合状态条三态逻辑) |
| 🆕 新建 | `src/utils/shiftHours.ts` | 硬编码 `SHIFT_HOURS = '9:00-18:00'` 常量,v1.4 接 `store.shiftHours` 后端班次 |
| ✏️ 修改 | `src/components/InputBar.vue` | 移除操作按钮 + 移除引导语容器,工具栏更简洁(😊📎[输入框][发送]) |
| ✏️ 修改 | `src/components/ChatPanel.vue` | 移除标题坐席徽章(`.header-mock__status--online/offline` 元素移除)+ 集成 `<IntegrationZone>` 组件 |
| ✏️ 修改 | `src/components/ChatPanel.vue` | 移除标题坐席徽章(`.header-mock__status--online/offline` 元素移除)+ 集成 `<IntegrationZone>` 组件 |
| ✏️ 修改 | `src/components/QueueCapsule.vue` | 不再独立显示,集成到 IntegrationZone 内部,作为整合区下部"按需胶囊" |
### C. 共享知识(跨文件约定)
@@ -6,8 +6,8 @@
> **状态**: [已实现]
> **作者**: Simon
> **关联文档**:
> - PRD: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.0.md`
> - 原型: `01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.0.html`
> - PRD: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.1.md`
> - 原型: `01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.1.html`
---
@@ -1,8 +1,8 @@
# 测试用例 — 员工端结束会话固定按钮
> **关联需求编号**: REQ-用户-005
> **关联PRD**: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.0.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.0.md`
> **关联PRD**: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.1.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.1.md`
> **版本**: v1.1
> **日期**: 2026-07-26
> **作者**: Simon
@@ -2,8 +2,8 @@
> **关联需求编号**: REQ-会话-001
> **关联缺陷**: [BUG-用户-003](../../05-缺陷单/BUG-用户-H5结束会话失败-003.md)(已修复 2026-07-30
> **关联 PRD**: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md`
> **关联 PRD**: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md`
> **版本**: v1.0
> **日期**: 2026-07-30
> **作者**: Duckula (AI)
@@ -0,0 +1,141 @@
# 测试报告 — REQ-会话-001 员工结束会话 v1.3.1 / v1.3.2 端到端 QA
> **报告版本**: v1.3.2
> **日期**: 2026-07-27
> **需求编号**: REQ-会话-001
> **测试类型**: 单元测试 + 生产构建验证(端到端代码层)
> **关联 PRD**: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.3.md`
> **关联任务说明书**: `07-项目管理/任务说明书/任务说明书-REQ-会话-001-员工结束会话v1.3.md`
> **测试结论**: ✅ 通过(单测 75/75 + 生产构建成功);⚠️ 发现 1 项 PRD↔代码分歧待产品拍板
---
## 一、测试范围
| 子版本 | 变更主题 | 验证目标 |
|--------|---------|---------|
| **v1.3.1** | 引导语 BugFix | `computeGuideText` 场景 1(无会话)/ 场景 2(AI<3 轮)返回 `null`,避免与 ChatPanel 顶部"输入问题咨询..."重复引导 |
| **v1.3.2** | InputBar 布局 BugFix | 操作按钮(call-agent-btn)从 InputBar 工具栏移除,整合入 IntegrationZone(状态条+6 态按钮+进度胶囊+引导语) |
> 关联回归:v1.3 智能推荐 30 分钟抑制白名单(`recommend.test.ts`)一并回归,防止整合区改造波及推荐逻辑。
---
## 二、测试环境
| 项 | 值 |
|----|-----|
| 前端框架 | Vue 3 + TypeScript + Vite |
| 测试框架 | Vitest v4.1.10node 环境,纯函数测试) |
| 被测代码路径 | `src/frontend-h5/src/components/chat/` |
| 代码基线 | git `feature/message-reliability` @ `f9c25147` |
| 构建产物 | `src/frontend-h5/dist/`(✓ 528 模块,built in 2.53s|
---
## 三、测试结果汇总
| 测试文件 | 用例数 | 结果 | 覆盖子版本 |
|----------|-------|------|-----------|
| `inputBarGuideText.test.ts` | 15 | ✅ 通过 | v1.3.1 |
| `integrationZoneLogic.test.ts` | 44 | ✅ 通过 | v1.3.2 |
| `recommend.test.ts` | 16 | ✅ 通过 | v1.3 回归 |
| **合计** | **75** | **✅ 75 passed (0 failed)** | — |
```
RUN v4.1.10
✓ src/components/chat/inputBarGuideText.test.ts (15 tests) 5ms
✓ src/components/chat/integrationZoneLogic.test.ts (44 tests) 8ms
✓ src/stores/recommend.test.ts (16 tests) 54ms
Test Files 3 passed (3)
Tests 75 passed (75)
```
---
## 四、关键验证点
### 4.1 v1.3.1 — 引导语场景 1/2 返回 null
源文件:`src/frontend-h5/src/components/chat/inputBarGuideText.ts``computeGuideText(ctx)`
| 场景 | 判定条件 | 期望返回 | 验证 |
|------|---------|---------|------|
| 1 无会话 | `!currentConversation` | `null` | ✅ 避免与 ChatPanel 顶部"输入问题咨询,或点击下方'人工坐席'按钮"重复 |
| 2 AI<3 轮 | `status==='ai_handling' && !canCallAgent` | `null` | ✅ 用户已与 AI 对话,底部"请继续描述"显啰嗦(v1.3.2 优化)|
| 3 坐席离线 | `!agentOnline` | `null` | ✅ 注:v1.3.5 已移除该场景引导语(产品决定不显示离线描述)|
| 4 会话过期 | `status==='resolved' && !canReopen` | `⏰ 上一会话已过期,开始新对话吧` | ✅ 保留 |
> 设计意图(PRD §3.3):引导语仅 disabled 态显示,且与按钮态计算共享同一 `callAgentState` 调用栈,永不同步错位。
### 4.2 v1.3.2 — InputBar 布局 / IntegrationZone 整合
源文件:`integrationZoneLogic.ts`(纯逻辑)+ `IntegrationZone.vue`(容器)+ `InputBar.vue`(瘦身)
| 验证项 | 期望 | 验证 |
|--------|------|------|
| InputBar 工具栏 | 仅 `😊 📎 [输入框] [发送]`,**无操作按钮** | ✅ 操作按钮(call-agent-btn)已迁移至 IntegrationZone |
| IntegrationZone 6 态按钮 | `disabled/active/urgent/waiting/end/reopen` 文案/图标/title 由 `inputBarCallAgentState` 复用 | ✅ 44 用例覆盖全部态 |
| 点击意图映射 | `computeCallAction`end→endConversation / reopen→reopenConversation / waiting→cancelQueue / active|urgent→callAgent / disabled→none | ✅ |
| 引导语渲染 | `shouldRenderGuideText(text)`:非 null 才渲染;`computeIntegrationGuideClass` 处理 warn 变体 | ✅ |
| 生产构建产物 | `dist/assets/index-Dc6ilDe1.js``IntegrationZone` / `integration-zone__guide` / `call-agent-btn--reopen` | ✅ grep 命中 |
---
## 五、生产构建验证
```
vite build
✓ 528 modules transformed.
dist/assets/index-Dc6ilDe1.js 370.72 kB │ gzip: 135.16 kB
✓ built in 2.53s
```
- **编译**:528 模块全部转换成功,无 TypeScript / 语法错误。
- **产物**v1.3.2 `IntegrationZone` 组件已进入主包,确认功能代码真实进入生产 bundle。
- **备注**:首次构建因 WorkBuddy `safe-delete` 拦截 `dist/assets` 清理失败(已知铁律:assets>50 文件时需先 `mv dist dist_bak`);按铁律改名后二次构建成功。此属工具约束,非代码缺陷。
---
## 六、发现的缺陷 / 分歧
### 🔶 分歧 1PRD v1.3 ↔ 代码 v1.3.5 状态条(Status Bar)不一致
| 视角 | 描述 |
|------|------|
| **PRD v1.3 / 技术方案 v1.3** | §11.4 决策 1「状态条永久显示」、§11.6「前端硬编码 `SHIFT_HOURS='9:00-18:00'`」、`IntegrationZone.vue` 实际仍渲染状态条(import `shiftHours``buildStatusBarText`|
| **代码 v1.3.5 注释** | `integrationZoneLogic.ts:16`「~~复用 utils/shiftHours.ts 状态条文案生成~~v1.3.5 整体删除)」、`:37`「v1.3.5 状态条已删除」;`inputBarGuideText.ts:63`「用户拍板删除状态条 + 离线描述」|
| **代码内部不一致** | `IntegrationZone.vue` 仍渲染状态条,但 `integrationZoneLogic.ts` 注释称已删除 → 半完成清理 |
**影响**:产品现状与文档描述偏差;若 v1.3.5 清理为终态,PRD/技术方案 v1.3 的「状态条永久显示」需回退为「v1.3.5 已移除」并补 TR;若状态条保留,则应清理 v1.3.5 注释。
**处置**:⏸️ 待产品(宋献)拍板后闭环,本次 QA 不擅自改文档。
### 🔶 分歧 2(历史遗留,不在本次范围)
- 其他文档(`04-运维文档/部署运维/00-标准故障排查手册.md``任务说明书-REQ-AI-001-打字机效果.md``08-历史归档/...``BUG-用户-坐席离线未限制呼叫人工-001.md`)仍存 UTF-8 乱码(U+FFFD),非本次 7 文档合并范围,建议后续专项扫描修复。
---
## 七、部署验证状态
| 项 | 状态 |
|----|------|
| 代码提交 | ✅ 已提交 `feature/message-reliability` @ `f9c25147`(含 v1.3.1/v1.3.2 全部改动)|
| 生产构建 | ✅ 本地构建成功(`dist/` 已生成,可发布)|
| **服务端部署** | 🟡 **待执行** — 需走标准发布流程(构建 dist → 上传服务器 `/opt/wecom-it-desk/frontend-h5/dist``docker compose up -d nginx`|
> 依据项目铁律「宣布修复前必须端到端验证」:本 QA 完成**代码层**端到端(单测 + 构建 + 产物 grep),**服务层**端到端(线上 H5 实测)需在部署后由 agent-browser 或人工在 `https://itsupport.servyou.com.cn/h5/` 验证。
---
## 八、结论与建议
1. ✅ **v1.3.1 / v1.3.2 功能正确性**经 75 条单测 + 生产构建双重验证通过。
2. ✅ 整合区(IntegrationZone)已正确收纳操作按钮,InputBar 工具栏瘦身符合设计。
3. ⚠️ **状态条分歧**(分歧 1)为本次唯一遗留项,需产品拍板后补文档/TR,否则 PRD 与线上行为将持续不一致。
4. 🟡 服务端部署验证建议纳入发布 checklist,部署后补一次线上冒烟。
---
*报告结束 — Duckula / 2026-07-27*
@@ -125,8 +125,8 @@
## 6. 关联信息
- **关联需求**: REQ-会话-001(员工结束会话)
- **关联 PRD**: `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md`(已追加变更记录)
- **关联技术方案**: `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md`(已追加变更记录)
- **关联 PRD**: `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md`(已追加变更记录)
- **关联技术方案**: `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md`(已追加变更记录)
- **关联代码文件**: `src/frontend-h5/src/components/chat/ChatPanel.vue:403-468`
- **关联后端 API**: `POST /api/h5/conversations/current/close``src/backend/app/api/h5.py:1965` + `src/backend/app/services/closing_service.py:329 employee_initiative_close`
- **关联测试用例**: 待创建 TC-会话-002(回归:连续点击防抖 / WS 断线同步 / catch 文案优先后端 message
@@ -247,3 +247,24 @@
| 2026-07-28 | v1.3 | 新增整改 #4:移除快速回复规则页面顶部 3 张重复统计卡片,并登记代码事实与回归方式 | Simon / 宋献 | 页面信息冗余 | REQ-通用-002 文档链及管理后台 `/quick-rules` 页面 |
| 2026-07-30 | v1.4 | 新增整改 #7REQ-会话-001 v1.2 三件套位置/任务说明书补齐/历史归档 | Duckula (AI) | 大需求重构跨阶段实施,PRD v1.2 阶段必须三件套对齐 + 任务说明书 + 历史归档 | REQ-会话-001 文档链(PRD v1.2 + 原型 v1.2 + 技术方案 v1.2 |
| 2026-07-31 | v1.6 | 新增整改 #8REQ-会话-001 v1.3 整合区方案 A 三件套增量 + 5 项决策落地 | Duckula (AI) | 方案 A 多文档同步必须显式列出"已拍板结论表",把决策结论固化而非问题陈述;5 项决策落地需贯穿 PRD/技术方案/任务说明书/原型图 4 份文档 | REQ-会话-001 v1.3 文档链(PRD v1.3 §十一 + 技术方案 v1.3 §十 + 任务说明书 v1.3 M8-M14 + 原型图 v1.3 §⑨) |
---
### 整改 #9 · REQ-会话-001 版本合并 + REQ-用户-005 规范化(7 文档合并)
| 项目 | 值 |
|------|------|
| 日期 | 2026-07-27 |
| 触发人 | 宋献 / Duckula |
| 源需求 / 源文档 | REQ-会话-001(员工结束会话,PRD/原型 v1.0-v1.3 合并);REQ-用户-005(头像菜单退出,v1.0→v1.1 规范化)|
| 整改维度 | A 命名/位置 + B 关联引用 + D 完整度 |
| 问题数 | 11 项(7 文档版本合并 + 4 类引用/编码缺陷)|
| 关键修复 | **【会话-001 版本合并】** 1) 归档 PRD v1.0/v1.1/v1.2 → `.v1.x.archive.md`canonical 为 v1.3,其 §九 变更记录已覆盖 v1.1→v1.2→v1.3);2) 归档 原型 v1.0/v1.1/v1.2 → `.v1.x.archive.html`(保留 v1.3 + 整合区方案A v1.3 为现行);3) 归档 技术方案 v1.2 → `.v1.2.archive.md`v1.3 已存在为现行)。<br>**【用户-005 规范化】** 4) PRD + 原型 文件名 `v1.0``v1.1`(铁律2:文件名=内容版本,内容头部本就是 v1.1);5) 技术方案 文件名 `v1.0``v1.1`(内容本就是 v1.1)。<br>**【引用对齐】** 6) PRD-会话-001 v1.3 §六:原型/技术方案引用 v1.2→v1.3 且技术方案补全 `../../02-技术文档/` 路径;7) 技术方案-会话-001 v1.3 头部:PRD/原型裸引用补全相对路径;8) 用户-005 三件套(PRD/技术方案/任务说明书/TC)互引 v1.0→v1.1,相关 PRD 指向会话-001 v1.3,参考原型指向自身 v1.1;9) 任务说明书 #128 关联 PRD/技术方案/原型 v1.0→v1.3(技术方案路径改 `02-技术文档/`);10) 会话-001 三份任务说明书(v1.2/v1.3/通用)中被本次归档波及的 v1.2/v1.0 引用改为 `.archive` 有效历史链接;v1.3 原型 HTML 的"对应 PRD/技术方案"由 v1.2 改为 v1.3。<br>**【编码缺陷】** 11) 修复 4 处 UTF-8 乱码(U+FFFD):用户-005 PRD「退出风险」、用户-005 任务说明书「菜单退出」「结束咨询按钮」、会话-001 技术方案 v1.3「标题栏坐席徽章」;历史缺陷/TC 文档(BUG-003、TC-用户-008)的 v1.0 裸引用改为 `.archive`。 |
| 归档动作 | PRD-会话-001-v1.0/v1.1/v1.2.md → `.v1.x.archive.md`;原型-会话-001-v1.0/v1.1/v1.2.html → `.v1.x.archive.html`;技术方案-会话-001-v1.2.md → `.v1.2.archive.md`;用户-005 PRD/原型/技术方案 `v1.0``v1.1`(现行文件改名,非归档)|
| 引用同步 | 会话-001 v1.3 现行三件套(PRD/技术方案/原型/任务说明书)互相指向 v1.3;用户-005 现行三件套(PRD v1.1/技术方案 v1.1/任务说明书/TC)互相指向 v1.1;被归档版本以 `.archive` 形式在任务说明书中保留历史链接 |
| ASCII 副本同步 | 无需(仅中文路径文档,无 ASCII 副本机制参与)|
| 收益 | 1) 会话-001 现行文档单一真源收敛到 v1.3,历史版本可溯;2) 用户-005 三件套版本对齐(均 v1.1),消除"文件名 v1.0 / 内容 v1.1"错位;3) 跨文档引用全部有效,无悬空链接;4) 消除 4 处编码乱码 |
| 教训 | **① 文件名版本号必须随内容同步 bump**:用户-005 PRD/技术方案内容已升 v1.1 但文件名仍 v1.0,埋雷数月;**② 技术方案应落在 `02-技术文档/`**,裸引用(无路径)会从 PRD 所在目录错误解析;**③ 中文文档的 UTF-8 乱码需专项扫描**:本次 4 处乱码均因早期 Edit 写入异常,合并时须用 U+FFFD 扫描兜底 |
| 遗留待办 | 1) **PRD v1.3 ↔ 代码 v1.3.5 状态条分歧**:PRD/技术方案 v1.3 描述整合区"状态条永久显示",但代码 `integrationZoneLogic.ts` 注释称 v1.3.5 已删除状态条、`inputBarGuideText.ts` 场景3 引导语亦于 v1.3.5 移除;需产品确认是否回退 PRD 或补全 v1.3.5 清理;2) 其他文档(排查手册/AI-001/历史归档/坐席离线缺陷)仍有历史乱码,超出本次范围未处理 |
| 上线状态 | 🟡 文档合并/归档/引用对齐已完成(无代码改动);PRD↔代码状态条分歧待产品拍板后补 TR |
@@ -24,9 +24,9 @@
### 产品需求
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md` | 全文 | 员工结束会话 PRD |
| `01-产品文档/02-会话管理/技术方案-REQ-会话-001-员工结束会话-v1.0.md` | 全文 | 技术方案 |
| `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.html` | 全文 | 原型图 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md` | 全文 | 员工结束会话 PRD |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.3.md` | 全文 | 技术方案 |
| `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.3.html` | 全文 | 原型图 |
### 需求变更(2026-07-27
| 变更内容 | 说明 |
@@ -124,6 +124,6 @@
## 📎 附件
- PRD: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md`
- 技术方案: `01-产品文档/02-会话管理/技术方案-REQ-会话-001-员工结束会话-v1.0.md`
- 原型图: `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.html`
- PRD: `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md`
- 技术方案: `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.3.md`
- 原型图: `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.3.html`
@@ -28,19 +28,19 @@
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.md` | §3.2 §3.5 §3.7 §3.8 | v1.2 设计哲学 + 6 态按钮 + 4 种引导语 + 顶部按钮 AI 场景互斥规则 |
| `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.archive.md` | §3.2 §3.5 §3.7 §3.8 | v1.2 设计哲学 + 6 态按钮 + 4 种引导语 + 顶部按钮 AI 场景互斥规则 |
### 技术方案
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.md` | §3.3 §3.4 §3.7 §3.8 | store 新字段 + InputBar/ChatPanel 改动 + 24h 边界 + 双入口防抖 |
| `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md` | §3.3 §3.4 §3.7 §3.8 | store 新字段 + InputBar/ChatPanel 改动 + 24h 边界 + 双入口防抖 |
### 原型设计
| 来源文档 | 页面 | 说明 |
|----------|------|------|
| `docs/01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.html` | §② §③ §④ | 6 态按钮 + 4 种引导语 + 顶部按钮可见性 mockup |
| `docs/01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.archive.html` | §② §③ §④ | 6 态按钮 + 4 种引导语 + 顶部按钮可见性 mockup |
### 需了解的现有代码(v1.2 实施时必读)
@@ -187,9 +187,9 @@
## 📎 附件
- **产品需求**[PRD-REQ-会话-001-员工结束会话-v1.2.md](../../01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.md)
- **技术方案**[技术方案-REQ-会话-001-员工结束会话-v1.2.md](../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.md)
- **原型图**[原型-REQ-会话-001-结束会话流程-v1.2.html](../../01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.html)
- **产品需求**[PRD-REQ-会话-001-员工结束会话-v1.2.archive.md](../../01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.archive.md)
- **技术方案**[技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md](../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md)
- **原型图**[原型-REQ-会话-001-结束会话流程-v1.2.archive.html](../../01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.archive.html)
- **历史任务说明书 #128**[任务说明书-128-结束会话功能调整.md](任务说明书-128-结束会话功能调整.md)
- **历史技术方案(已归档)**[技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md](../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md)
- **关联 BUG**[BUG-用户-003](../../03-测试文档/05-缺陷单/BUG-用户-H5结束会话失败-003.md)(已修复 2026-07-30v1.2 必须沿用三件套)
@@ -32,21 +32,21 @@
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.3.md` | **§十一 v1.3 整合区增量**(方案 A 已拍板) | 4 维度分散 → 2 段式(整合区+顶部退出)+ 5 决策落地清单 |
| `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.md` | §3.2 §3.5 §3.7 §3.8 | v1.2 设计哲学 + 6 态按钮 + 4 种引导语 + 顶部按钮 AI 场景互斥规则(v1.3 沿用) |
| `docs/01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.archive.md` | §3.2 §3.5 §3.7 §3.8 | v1.2 设计哲学 + 6 态按钮 + 4 种引导语 + 顶部按钮 AI 场景互斥规则(v1.3 沿用) |
### 技术方案
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.3.md` | **§十 v1.3 整合区实施要点**(A-F 6 子节) | 组件拆分 + 文件清单 + 共享知识 + 数据结构 + 任务列表 + 待明确事项 |
| `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.md` | §3.3 §3.4 §3.7 §3.8 | store 新字段 + InputBar/ChatPanel 改动 + 24h 边界 + 双入口防抖(v1.3 沿用) |
| `docs/02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md` | §3.3 §3.4 §3.7 §3.8 | store 新字段 + InputBar/ChatPanel 改动 + 24h 边界 + 双入口防抖(v1.3 沿用) |
### 原型设计
| 来源文档 | 页面 | 说明 |
|----------|------|------|
| `docs/01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.3.html` | **§⑨ 方案 A 整合区设计(v1.3 已拍板)** | 9 场景 mockup + 5 决策落地 + R1-R5 关键交互细节 |
| `docs/01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.html` | §② §③ §④ | 6 态按钮 + 4 种引导语 + 顶部按钮可见性 mockup(v1.3 沿用) |
| `docs/01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.archive.html` | §② §③ §④ | 6 态按钮 + 4 种引导语 + 顶部按钮可见性 mockup(v1.3 沿用) |
### 需了解的现有代码(v1.2 实施时必读)
@@ -240,9 +240,9 @@
### v1.2 基线文档(已上线,M1-M7 已完成)
- **产品需求(v1.2**[PRD-REQ-会话-001-员工结束会话-v1.2.md](../../01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.md)
- **技术方案(v1.2**[技术方案-REQ-会话-001-员工结束会话-v1.2.md](../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.md)
- **原型图(v1.2**[原型-REQ-会话-001-结束会话流程-v1.2.html](../../01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.html)
- **产品需求(v1.2**[PRD-REQ-会话-001-员工结束会话-v1.2.archive.md](../../01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.2.archive.md)
- **技术方案(v1.2**[技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md](../../02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.2.archive.md)
- **原型图(v1.2**[原型-REQ-会话-001-结束会话流程-v1.2.archive.html](../../01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.2.archive.html)
- **任务说明书(v1.2**[任务说明书-REQ-会话-001-员工结束会话v1.2.md](任务说明书-REQ-会话-001-员工结束会话v1.2.md)
### 历史归档
@@ -26,22 +26,22 @@
### 产品需求(PRD
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md` | §1.1-1.2 | 需求背景、目标 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md` | §3.1 | 按钮状态机设计 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md` | §3.2-3.3 | 结束流程、评价组件 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md` | §五 | 验收指标 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md` | §1.1-1.2 | 需求背景、目标 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md` | §3.1 | 按钮状态机设计 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md` | §3.2-3.3 | 结束流程、评价组件 |
| `01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md` | §五 | 验收指标 |
### 技术方案
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md` | §3.1-3.3 | 状态机设计、组件改动 |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md` | §3.4 | 弹窗设计 |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md` | §六 | 风险与依赖 |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md` | §3.1-3.3 | 状态机设计、组件改动 |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md` | §3.4 | 弹窗设计 |
| `02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md` | §六 | 风险与依赖 |
### 原型设计
| 来源文档 | 页面 | 说明 |
|----------|------|------|
| `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.html` | 全部 | 按钮状态切换、评价弹窗 |
| `01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.archive.html` | 全部 | 按钮状态切换、评价弹窗 |
### 需了解的现有代码(历史现状)
| 模块/文件 | 说明 | 需了解的内容 |
@@ -158,6 +158,6 @@
## 📎 附件
- PRD`01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.md`
- 技术方案:`02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.md`
- 原型图:`01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.html`
- PRD`01-产品文档/02-会话管理/PRD-REQ-会话-001-员工结束会话-v1.0.archive.md`
- 技术方案:`02-技术文档/技术方案-REQ-会话-001-员工结束会话-v1.0.archive.md`
- 原型图:`01-产品文档/02-会话管理/原型-REQ-会话-001-结束会话流程-v1.0.archive.html`
@@ -1,8 +1,8 @@
# 任务说明书 — 员工端头像菜单退出
> **关联需求编号**: REQ-用户-005
> **关联PRD**: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.0.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.0.md`
> **关联PRD**: `01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.1.md`
> **关联技术方案**: `02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.1.md`
> **需求类型**: [x] 新增 [ ] 变更 [ ] 废弃
> **日期**: 2026-07-26
> **作者**: Simon
@@ -12,14 +12,14 @@
## 📥 输入项来源
### 产品需求来源
- **PRD**: `docs/01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单出-v1.0.md`
- **原型**: `docs/01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.0.html`
- **PRD**: `docs/01-产品文档/05-用户端H5/PRD-REQ-用户-005-头像菜单退出-v1.1.md`
- **原型**: `docs/01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.1.html`
### 技术方案来源
- **技术方案**: `docs/02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.0.md`
- **技术方案**: `docs/02-技术文档/技术方案-REQ-用户-005-头像菜单退出-v1.1.md`
### 原型设计来源
- `docs/01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.0.html`
- `docs/01-产品文档/05-用户端H5/原型-REQ-用户-005-头像菜单退出-v1.1.html`
- 参考原型: `docs/01-产品文档/05-用户端H5/原型-REQ-用户-000-H5用户端-v2.0.html`
### 需了解的现有代码
@@ -89,7 +89,7 @@
| S1 | 所有 10 项验证全部通过 | 逐项打勾 |
| S2 | ESLint/TypeScript 编译零错误 | `npm run build` 成功 |
| S3 | ChatPanel.vue 以外的文件无改动 | `git diff --stat` 仅显示 ChatPanel.vue |
| S4 | 已有功能不受影响(InputBar 结束咨询钮仍正常) | 人工服务态测试回归 |
| S4 | 已有功能不受影响(InputBar 结束咨询钮仍正常) | 人工服务态测试回归 |
| S5 | 菜单出入动画无卡顿(<200ms) | 感知测试 |
| S6 | commit message 含 `[REQ-用户-005]` | git log 检查 |