|
@@ -31,6 +31,7 @@ revisionNotes: '修订范围:根据修订后的 PRD,从"E2E测试工具包
|
|
|
- **Epic G: e2e-test-utils 包维护** 🌟 支持性任务
|
|
- **Epic G: e2e-test-utils 包维护** 🌟 支持性任务
|
|
|
- **Epic 14: 数据层改进** 🔄 进行中
|
|
- **Epic 14: 数据层改进** 🔄 进行中
|
|
|
- **Epic 15: 残疾人管理系统生产环境问题修复** 🆕 待开发
|
|
- **Epic 15: 残疾人管理系统生产环境问题修复** 🆕 待开发
|
|
|
|
|
+- **Epic 016: 订单管理界面 Bug 修复** 🆕 待开发
|
|
|
|
|
|
|
|
## Requirements Inventory
|
|
## Requirements Inventory
|
|
|
|
|
|
|
@@ -3026,3 +3027,174 @@ echo "✅ 稳定性验证通过"
|
|
|
**测试文件:** `web/tests/e2e/specs/admin/disability-person-company-query-union.spec.ts`
|
|
**测试文件:** `web/tests/e2e/specs/admin/disability-person-company-query-union.spec.ts`
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
+
|
|
|
|
|
+## Epic 016: 订单管理界面 Bug 修复
|
|
|
|
|
+
|
|
|
|
|
+**目标:** 修复订单管理模块中发现的界面交互问题,提升用户体验和操作稳定性。
|
|
|
|
|
+
|
|
|
|
|
+**状态:** 🆕 Backlog
|
|
|
|
|
+
|
|
|
|
|
+**背景:**
|
|
|
|
|
+- 在订单管理模块的使用过程中发现两个界面 Bug
|
|
|
|
|
+- 问题来源:会话 4 (4ca84397-8671-4783-9c25-b02cac08ca5e)
|
|
|
|
|
+- 问题时间:2026/01/27 09:33 ~ 10:43
|
|
|
|
|
+- 问题 1 已修复,问题 2 待处理
|
|
|
|
|
+
|
|
|
|
|
+**问题清单:**
|
|
|
|
|
+- **问题 1**: 订单详情弹窗闪退 - 点击"查看详情"后弹窗显示一下就自动关闭(✅ 已修复)
|
|
|
|
|
+- **问题 2**: 添加人员后显示数量不准确 - 添加2人后系统提示只添加1人(❌ 未完成)
|
|
|
|
|
+
|
|
|
|
|
+**范围:**
|
|
|
|
|
+- ✅ 修复订单详情弹窗闪退问题
|
|
|
|
|
+- ✅ 修复添加人员后显示数量不准确问题
|
|
|
|
|
+- ✅ 更新相关文档和测试
|
|
|
|
|
+- ❌ 不涉及后端业务逻辑修改
|
|
|
|
|
+
|
|
|
|
|
+**模式:** UI Bug 修复 + 用户反馈改进
|
|
|
|
|
+
|
|
|
|
|
+**依赖:**
|
|
|
|
|
+- Epic 10: ✅ 已完成(订单管理 E2E 测试)
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+1. 订单详情弹窗正常显示,不会自动关闭
|
|
|
|
|
+2. 添加人员后 toast 显示实际添加的人数(使用后端返回的 addedCount)
|
|
|
|
|
+3. 相关代码已修改并测试通过
|
|
|
|
|
+4. 修复内容已记录到 Story 文档
|
|
|
|
|
+
|
|
|
|
|
+**交付物:**
|
|
|
|
|
+- 订单详情弹窗修复代码
|
|
|
|
|
+- 添加人员数量显示修复代码
|
|
|
|
|
+- Story 016-01 文档(已完成)
|
|
|
|
|
+- Story 016-02 文档(待处理)
|
|
|
|
|
+
|
|
|
|
|
+**FRs covered:** 无(Bug 修复)
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 016-01: 订单详情弹窗闪退修复
|
|
|
|
|
+
|
|
|
|
|
+作为管理员,
|
|
|
|
|
+我想要点击"查看详情"后订单详情弹窗能够正常显示,
|
|
|
|
|
+以便查看订单的完整信息。
|
|
|
|
|
+
|
|
|
|
|
+**状态:** ✅ Done
|
|
|
|
|
+
|
|
|
|
|
+**背景:**
|
|
|
|
|
+- 问题描述:点击"查看详情"按钮后,订单详情弹窗显示一下就自动关闭
|
|
|
|
|
+- 问题时间:2026/01/27
|
|
|
|
|
+- 会话 ID:4ca84397-8671-4783-9c25-b02cac08ca5e
|
|
|
|
|
+- 问题已定位并修复
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+### AC1: 订单详情弹窗正常显示 ✅
|
|
|
|
|
+1. **Given** 管理员在订单管理列表页面
|
|
|
|
|
+2. **When** 管理员点击"查看详情"按钮
|
|
|
|
|
+3. **Then** 订单详情弹窗正常显示
|
|
|
|
|
+4. **And** 弹窗不会自动关闭
|
|
|
|
|
+5. **And** 管理员可以查看订单的完整信息
|
|
|
|
|
+
|
|
|
|
|
+### AC2: 弹窗交互正常 ✅
|
|
|
|
|
+1. **Given** 订单详情弹窗已打开
|
|
|
|
|
+2. **When** 管理员操作弹窗内容(添加人员、查看详情等)
|
|
|
|
|
+3. **Then** 弹窗保持打开状态
|
|
|
|
|
+4. **And** 只有点击关闭按钮或弹窗外部时才会关闭
|
|
|
|
|
+
|
|
|
|
|
+**根因分析:**
|
|
|
|
|
+- OrderDetailModal 的 Dialog 组件设置了 `modal={false}`
|
|
|
|
|
+- 导致没有遮罩层和焦点陷阱
|
|
|
|
|
+- 外部点击事件穿透导致弹窗关闭
|
|
|
|
|
+
|
|
|
|
|
+**修复方案:**
|
|
|
|
|
+- 移除 Dialog 的 `modal={false}` 属性
|
|
|
|
|
+- 让 Dialog 使用默认 modal 模式(`modal={true}`)
|
|
|
|
|
+- 保持 DropdownMenu 的 `modal={false}` 不变
|
|
|
|
|
+
|
|
|
|
|
+**修改文件:**
|
|
|
|
|
+- `allin-packages/order-management-ui/src/components/OrderDetailModal.tsx`
|
|
|
|
|
+
|
|
|
|
|
+**修改内容:**
|
|
|
|
|
+```diff
|
|
|
|
|
+- <Dialog open={open} onOpenChange={onOpenChange} modal={false}>
|
|
|
|
|
++ <Dialog open={open} onOpenChange={onOpenChange}>
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**修复原理:**
|
|
|
|
|
+
|
|
|
|
|
+| 组件 | `modal` 属性 | 作用 |
|
|
|
|
|
+|------|-------------|------|
|
|
|
|
|
+| **DropdownMenu** | `modal={false}` | ✅ 正确 - 允许子级 Dialog 正确打开 |
|
|
|
|
|
+| **Dialog** | 移除 `modal={false}` | ✅ 修复 - Dialog 使用默认 modal 模式,有遮罩层和焦点陷阱 |
|
|
|
|
|
+
|
|
|
|
|
+**测试场景:**
|
|
|
|
|
+1. 点击订单列表中的"查看详情"按钮,验证弹窗正常显示
|
|
|
|
|
+2. 在弹窗中执行操作,验证弹窗不会意外关闭
|
|
|
|
|
+3. 点击弹窗外部,验证弹窗正确关闭
|
|
|
|
|
+4. 点击关闭按钮,验证弹窗正确关闭
|
|
|
|
|
+
|
|
|
|
|
+**修复完成时间:** 2026/01/27 10:43
|
|
|
|
|
+
|
|
|
|
|
+**修复确认:** ✅ 已在会话 4 中完成修复并验证
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+### Story 016-02: 添加人员后显示数量不准确修复
|
|
|
|
|
+
|
|
|
|
|
+作为管理员,
|
|
|
|
|
+我想要在添加人员到订单后看到准确的添加人数提示,
|
|
|
|
|
+以便确认操作是否成功。
|
|
|
|
|
+
|
|
|
|
|
+**状态:** ❌ 待处理
|
|
|
|
|
+
|
|
|
|
|
+**背景:**
|
|
|
|
|
+- 问题描述:添加2人后系统提示只添加1人
|
|
|
|
|
+- 问题时间:2026/01/27
|
|
|
|
|
+- 会话 ID:4ca84397-8671-4783-9c25-b02cac08ca5e
|
|
|
|
|
+- 问题已定位,待修复
|
|
|
|
|
+
|
|
|
|
|
+**验收标准:**
|
|
|
|
|
+
|
|
|
|
|
+### AC1: Toast 显示实际添加人数
|
|
|
|
|
+1. **Given** 管理员在订单详情弹窗中
|
|
|
|
|
+2. **When** 管理员选择2个残疾人并点击"确认添加"
|
|
|
|
|
+3. **Then** toast 提示"批量添加人员成功,实际添加 2 人"
|
|
|
|
|
+4. **And** 提示人数与实际选择人数一致
|
|
|
|
|
+
|
|
|
|
|
+### AC2: 去重逻辑正确处理
|
|
|
|
|
+1. **Given** 管理员已添加某人员到订单
|
|
|
|
|
+2. **When** 管理员再次尝试添加同一人员
|
|
|
|
|
+3. **Then** toast 提示显示正确的去重信息
|
|
|
|
|
+4. **And** 显示"已添加 X 人,跳过 Y 人"等信息
|
|
|
|
|
+
|
|
|
|
|
+**根因分析:**
|
|
|
|
|
+- 前后端都有去重逻辑
|
|
|
|
|
+- 前端 toast 没有使用后端返回的 `addedCount`
|
|
|
|
|
+- 导致提示信息不准确
|
|
|
|
|
+
|
|
|
|
|
+**修复方案:**
|
|
|
|
|
+- 修改前端 toast 使用后端返回的 `addedCount`
|
|
|
|
|
+- 显示实际添加的人数
|
|
|
|
|
+
|
|
|
|
|
+**修改文件:**
|
|
|
|
|
+- `allin-packages/order-management-ui/src/components/OrderDetailModal.tsx`
|
|
|
|
|
+
|
|
|
|
|
+**修改内容:**
|
|
|
|
|
+```typescript
|
|
|
|
|
+onSuccess: (data) => {
|
|
|
|
|
+ // 修改前:toast.success(`批量添加人员成功`);
|
|
|
|
|
+ // 修改后:
|
|
|
|
|
+ toast.success(`批量添加人员成功,实际添加 ${data.addedCount} 人`);
|
|
|
|
|
+ // ...
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**测试场景:**
|
|
|
|
|
+1. 添加2个新人员,验证 toast 显示"实际添加 2 人"
|
|
|
|
|
+2. 添加1个已有人员,验证 toast 显示正确的去重信息
|
|
|
|
|
+3. 关闭并重新打开订单详情,验证人员列表正确更新
|
|
|
|
|
+
|
|
|
|
|
+**修复预计时间:** 5 分钟
|
|
|
|
|
+
|
|
|
|
|
+**优先级:** 中等
|
|
|
|
|
+
|
|
|
|
|
+---
|