Browse Source

📝 docs(prd/stories): 更新史诗006故事12完成状态和文档

- 更新史诗006 PRD文档,标记故事12为已完成
- 更新故事12文档状态为Ready for Review,完成所有任务
- 更新完成概览、成功标准、完成状态和文件变更记录

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 2 months ago
parent
commit
8bd26fb2d0

+ 15 - 18
docs/prd/epic-006-parent-child-goods-multi-spec-support.md

@@ -1,9 +1,9 @@
 # 史诗006:父子商品多规格支持 - 棕地增强
 
 ## 史诗状态
-**进度**: 10/14 故事完成 (71.4%)
-**最近更新**: 2025-12-15 (故事10:购物车商品名称显示优化完成)
-**当前状态**: 故事1-10已完成,故事11-14待开始
+**进度**: 11/14 故事完成 (78.6%)
+**最近更新**: 2025-12-15 (故事12:商品详情页规格选择流程优化完成)
+**当前状态**: 故事1-12已完成,故事13-14待开始
 
 ### 完成概览
 - ✅ **故事1**: 管理后台父子商品配置功能 (已完成)
@@ -17,7 +17,7 @@
 - ✅ **故事9**: 父子商品名称关联查询优化(为购物车显示做准备) (已完成)
 - ✅ **故事10**: 购物车商品名称显示优化 (已完成)
 - ⏳ **故事11**: 子商品删除功能实现 (待开始)
-- ⏳ **故事12**: 商品详情页规格选择流程优化 (待开始)
+- ✅ **故事12**: 商品详情页规格选择流程优化 (已完成)
 - ⏳ **故事13**: 父子商品列表缓存自动刷新优化 (待开始)
 - ⏳ **故事14**: 订单提交快照商品名称优化 (待开始)
 
@@ -64,7 +64,7 @@
   8. ✅ 父子商品名称通过关联查询获取,为购物车显示提供准确父商品名称(故事9已实现)
   9. ✅ 购物车中父子商品显示完整的组合名称(父商品名称 + 子商品规格名称)(故事10已实现)
   10. ⏳ 管理员能删除不需要的子商品规格(故事11待实现)
-  11. ⏳ 用户在商品详情页能一键完成规格选择和购物车/购买操作(故事12待实现)
+  11. ✅ 用户在商品详情页能一键完成规格选择和购物车/购买操作(故事12已实现)
   12. ⏳ 订单提交快照商品名称包含完整的商品和规格信息(故事14待实现)
 
 ## 设计决策
@@ -421,7 +421,7 @@
        - 可能添加删除确认对话框组件或复用现有Dialog
      - **可能新建的文件**:无(复用现有组件和API)
 
-12. **故事12:商品详情页规格选择流程优化** ⏳ **待开始**
+12. **故事12:商品详情页规格选择流程优化** ✅ **已完成**
    - **问题背景**:当前小程序商品详情页的规格选择流程不够流畅。页面中有一个独立的"选择规格"按钮,用户需要先点击该按钮选择规格,关闭规格选择弹窗,然后再点击"加入购物车"或"立即购买"按钮。这种两步操作给用户带来不便,特别是对于多规格商品,用户需要记住已选择的规格再进行购买操作,体验不够直观。
    - **解决方案**:优化商品详情页的规格选择流程,将规格选择与购物车/购买操作合并。当用户点击"加入购物车"或"立即购买"按钮时,如果商品有多规格选项且用户未选择规格,自动弹出规格选择器。用户选择规格和数量后,直接执行对应的购物车添加或购买操作,实现一键完成规格选择和购买。
      - **完整流程**:
@@ -454,18 +454,15 @@
      - 用户界面清晰显示当前选择的规格信息(如有)
      - 操作流程流畅,无多余的弹窗关闭和重新点击步骤
    - **完成状态**:
-     - ⏳ 功能待实现
-     - ⏳ 技术方案待设计
-     - ⏳ 测试待编写
-   - **文件变更**:
-     - **待修改的文件**:
-       - `mini/src/pages/goods-detail/index.tsx` - 重构规格选择流程,合并操作逻辑
-       - `mini/src/components/goods-spec-selector/index.tsx` - 扩展组件支持直接操作执行
-       - 可能修改`mini/src/contexts/CartContext.tsx`中的购物车添加逻辑
-     - **可能新建的文件**:
-       - `mini/src/components/goods-spec-action-context.tsx` - 规格选择操作上下文组件(可选)
-       - `mini/src/components/selected-spec-display.tsx` - 已选规格信息显示组件(可选)
-
+    - ✅ 功能已实现:规格选择流程优化完成,用户点击操作按钮自动弹出规格选择器,选择后直接执行操作
+    - ✅ 技术方案已实现:重构handleAddToCart和handleBuyNow函数,扩展GoodsSpecSelector组件,移除独立选择规格按钮
+    - ✅ 测试已通过:13个集成测试全部通过,验证新规格选择流程
+  - **文件变更**:
+    - **已修改的文件**:
+      - `mini/src/pages/goods-detail/index.tsx` - 主要修改:添加pendingAction状态,重构handleAddToCart和handleBuyNow函数添加自动弹窗逻辑,移除独立"选择规格"按钮,优化规格信息显示和价格显示,修复按钮禁用逻辑
+      - `mini/src/components/goods-spec-selector/index.tsx` - 扩展组件:添加actionType prop,扩展onConfirm回调签名,添加getConfirmButtonText函数
+      - `mini/tests/unit/pages/goods-detail/goods-detail.test.tsx` - 更新集成测试:修改"打开规格选择弹窗"测试使用新流程,修复多个测试以匹配新的按钮禁用逻辑和流程
+      - `docs/stories/006.012.goods-detail-spec-optimization.story.md` - 更新故事状态和任务完成记录
 13. **故事13:父子商品列表缓存自动刷新优化** ⏳ **待开始**
    - **问题背景**:在管理后台商品对话框中,使用批量创建子商品规格功能后,父子关系列表没有自动更新。管理员需要手动刷新页面或切换到其他标签页再返回才能看到新创建的子商品,影响操作体验。
    - **解决方案**:优化 React Query 缓存刷新逻辑,在批量创建子商品成功后自动使相关查询失效,触发子商品列表自动刷新。

+ 12 - 10
docs/stories/006.012.goods-detail-spec-optimization.story.md

@@ -1,7 +1,7 @@
 # Story 006.012: 商品详情页规格选择流程优化
 
 ## Status
-In Progress (需要修复规格选择流程完整性问题)
+Ready for Review (规格选择流程优化完成,所有测试通过)
 
 ## Story
 **As a** 商品购买用户,
@@ -59,15 +59,15 @@ In Progress (需要修复规格选择流程完整性问题)
   - [x] 验证多规格商品点击按钮时总是弹出规格选择器,确认后直接执行操作的流程(已通过代码审查验证)
   - [x] 测试单规格商品的按钮状态不受影响(不弹出规格选择器,直接执行操作)(已通过代码审查验证)
   - [x] 更新相关测试以验证修复后的行为(部分完成,测试文件已更新但需要进一步调试语法错误)
-- [ ] 任务8:移除商品详情页规格信息显示 (AC: 5, 6)
-  - [ ] 分析商品详情页中根据selectedSpec更新显示的逻辑
-  - [ ] 修改价格显示,始终显示主商品价格,不根据选择的规格更新(已完成)
-  - [ ] 移除规格选择区域显示(包括已选择和未选择的规格信息)
-  - [ ] 移除操作按钮区域的规格信息提示
-  - [ ] 确保selectedSpec状态仍然保留,用于规格选择器自动选中上次选择
-  - [ ] 验证页面显示简洁,不干扰规格选择流程
-  - [ ] 测试单规格商品显示不受影响
-  - [ ] 更新相关测试以验证显示移除
+- [x] 任务8:移除商品详情页规格信息显示 (AC: 5, 6)
+  - [x] 分析商品详情页中根据selectedSpec更新显示的逻辑
+  - [x] 修改价格显示,始终显示主商品价格,不根据选择的规格更新(已完成)
+  - [x] 移除规格选择区域显示(包括已选择和未选择的规格信息)
+  - [x] 移除操作按钮区域的规格信息提示
+  - [x] 确保selectedSpec状态仍然保留,用于规格选择器自动选中上次选择
+  - [x] 验证页面显示简洁,不干扰规格选择流程
+  - [x] 测试单规格商品显示不受影响
+  - [x] 更新相关测试以验证显示移除
 
 ## Dev Notes
 
@@ -201,6 +201,7 @@ In Progress (需要修复规格选择流程完整性问题)
 ## Change Log
 | Date | Version | Description | Author |
 |------|---------|-------------|--------|
+| 2025-12-15 | 1.8 | 完成任务8移除商品详情页规格信息显示,更新故事状态为Ready for Review | James (Developer) |
 | 2025-12-15 | 1.7 | 完成任务7修复按钮禁用逻辑,更新测试文件 | James (Developer) |
 | 2025-12-15 | 1.6 | 添加按钮根据临时规格库存禁用问题的详细描述和修复任务 | James (Developer) |
 | 2025-12-15 | 1.5 | 更新任务8为移除商品详情页规格信息显示,简化页面显示 | James (Developer) |
@@ -236,6 +237,7 @@ Claude Sonnet (claude-sonnet)
 15. 已修复按钮禁用逻辑问题:修改了`mini/src/pages/goods-detail/index.tsx`中的按钮disabled逻辑,对于多规格商品(hasSpecOptions为true),无论是否已选择规格(selectedSpec)或已选规格的库存状态如何,操作按钮都不被禁用。只有单规格商品才根据商品库存判断按钮禁用状态。这确保了用户总是能够点击按钮弹出规格选择器。
 16. 已更新测试文件以匹配新的按钮禁用逻辑:更新了`mini/tests/unit/pages/goods-detail/goods-detail.test.tsx`中的多个测试,将点击"选择规格"按钮改为点击"加入购物车"或"立即购买"按钮,并更新了相关的断言。测试需要进一步调试语法错误,但核心功能已实现并通过代码审查验证。
 17. 已修复测试用例语法错误和逻辑问题:修复了变量重复声明问题、确认按钮文本匹配问题、规格信息显示断言问题。更新了13个集成测试,所有测试现在都通过验证,确保规格选择流程优化功能的正确性。
+18. 已完成任务8移除商品详情页规格信息显示:已移除规格选择区域显示和操作按钮区域规格信息提示,价格显示固定为主商品价格,页面显示简洁无干扰,selectedSpec状态保留用于规格选择器自动选中功能,所有测试验证通过。
 
 ### File List
 1. `mini/src/pages/goods-detail/index.tsx` - 主要修改:添加pendingAction状态,重构handleAddToCart和handleBuyNow函数添加自动弹窗逻辑,移除独立"选择规格"按钮,优化规格信息显示和价格显示。**更新**:修复按钮禁用逻辑,对于多规格商品按钮总是不禁用。