进度: 7/8 故事完成 (87.5%) 最近更新: 2025-12-13 (故事8:购物车页面规格切换功能已添加) 当前状态: 故事1-7已完成,故事8待开始
新增父子商品多规格支持功能,在商品添加购物车或立即购买时,能同时支持单规格和多规格选择,以子商品作为多规格选项,并支持手动指定子商品。
GoodsParentChildPanel.tsx)ChildGoodsList.tsx)和批量创建(BatchSpecCreatorInline.tsx)组件GoodsSpecSelector组件但被注释,购物车支持spec字段但无规格选择逻辑publicGoodsRoutesMt(公共商品路由)adminGoodsRoutesMt(已聚合父子商品管理API)name字段作为规格名称id、name、price、stockid、name、price、stockname字段已经包含完整的规格信息,spec字段可能暂时不需要/api/v1/goods):默认只返回父商品(spuId=0)/api/v1/goods/:id):
GET /api/v1/goods/:id/children - 获取指定父商品的子商品列表POST /api/v1/goods/:id/set-as-parent - 将普通商品设为父商品DELETE /api/v1/goods/:id/parent - 解除子商品的父子关系POST /api/v1/goods/batch-create-children - 批量创建子商品(支持事务)admin-goods-aggregated.mt.ts聚合基础CRUD和父子商品管理路由,保持adminGoodsRoutesMt名称不变,前端代码无需修改spuId查询参数过滤,管理员可通过spuId=0只查看父商品故事1:管理后台父子商品配置功能 ✅ 已完成 (2025-12-07)
故事2:父子商品管理UI体验优化 ✅ 已完成 (2025-12-10)
adminGoodsRoutesMt中聚合父子商品管理API(获取子商品列表、设为父商品、解除关系、批量创建)GoodsParentChildPanel.tsx组件已创建并支持创建/编辑模式ChildGoodsList.tsx和BatchSpecCreatorInline.tsx组件已创建并集成到面板中GoodsManagement.tsx已集成新面板到创建和编辑表单admin-goods-aggregated.mt.ts聚合基础CRUD和父子商品管理路由,保持adminGoodsRoutesMt名称不变onDataChange回调实现面板与表单数据的实时同步故事3:子商品行内编辑功能 ✅ 已完成 (2025-12-11)
ChildGoodsList.tsx组件中添加行内编辑模式ChildGoodsList组件,支持editingChildId状态管理ChildGoodsList组件,添加了行内编辑功能ChildGoodsInlineEditForm组件,支持所有必需字段的编辑handleEdit函数逻辑:行内编辑现在优先于onEditChild回调enableInlineEdit配置选项,支持灵活控制行内编辑行为packages/goods-management-ui-mt/src/components/ChildGoodsInlineEditForm.tsx - 行内编辑表单组件packages/goods-management-ui-mt/tests/unit/ChildGoodsInlineEditForm.test.tsx - 行内编辑表单测试packages/goods-management-ui-mt/src/components/ChildGoodsList.tsx - 扩展行内编辑功能packages/goods-management-ui-mt/tests/unit/ChildGoodsList.test.tsx - 更新测试,添加行内编辑功能测试docs/stories/006.003.child-goods-inline-edit.story.md - 更新任务状态和开发记录故事4:商品API父子商品支持优化 ✅ 已完成 (2025-12-12)
spuId=0过滤只显示父商品@Index(['tenantId', 'spuId'])优化查询性能故事5:父子商品多规格选择组件开发 ✅ 已实现 (2025-12-12)
GoodsSpecSelector组件public-goods-aggregated.mt.ts聚合路由,确保子商品API正确暴露mini/tests/components/goods-spec-selector.test.tsx,8个测试通过故事6:商品详情页规格选择集成 ✅ 已完成
mini/src/pages/goods-detail/index.tsx - 移除过时注释,更新库存限制逻辑以支持规格库存mini/tests/unit/components/goods-spec-selector/goods-spec-selector.test.tsx - 修复测试期望和关闭按钮选择器mini/tests/unit/components/taro/Button.test.tsx - 移动Taro原生Button测试到标准位置mini/tests/unit/pages/goods-detail/goods-detail.test.tsx - 商品详情页集成测试(参照OrderButtonBar.test.tsx模式重写)mini/tests/e2e/goods-detail-spec.e2e.test.ts - E2E测试占位文件mini/tests/pages/goods-detail.test.tsx → mini/tests/unit/pages/goods-detail/goods-detail.test.tsxmini/tests/components/goods-spec-selector.test.tsx → mini/tests/unit/components/goods-spec-selector/goods-spec-selector.test.tsxmini/tests/components/Button.test.tsx → mini/tests/unit/components/taro/Button.test.tsx故事7:购物车和订单规格支持 ✅ 已完成 (2025-12-13)
addToCart逻辑,支持添加子商品(使用子商品信息填充CartItem)name字段显示完整规格信息CartContext.tsx) 已更新注释,明确支持子商品ID,购物车逻辑天然支持父子商品CreateOrderRequestDto) 已支持子商品ID,OrderGoodsMt实体正确存储子商品IDname字段(包含规格信息)实现完整规格显示CartContext.test.tsx),5个测试全部通过mini/src/contexts/CartContext.tsx - 更新接口注释和函数说明mini/tests/unit/contexts/CartContext.test.tsx - 修复测试中的useEffect依赖循环问题docs/stories/006.007.story.md - 更新任务状态和开发记录mini/tests/unit/contexts/CartContext.test.tsx - 购物车规格支持测试文件故事8:购物车页面规格切换功能 ⏳ 待开始
GoodsSpecSelector组件)CartContext或购物车组件,支持规格切换逻辑GoodsSpecSelector组件mini/src/contexts/CartContext.tsx - 扩展规格切换功能mini/src/components/CartItem.tsx(或类似组件)- 集成规格选择器mini/tests/unit/contexts/CartContext.test.tsx - 添加规格切换测试spuId字段:0表示父商品或单规格商品,>0表示子商品spuName字段存储父商品名称,便于展示spuId=0条件CartItem使用子商品的id、name、price、stockCartItem使用父商品的id、name、price、stockname字段已经包含完整规格信息,spec字段可暂时忽略或设置为相同值史诗创建时间:2025-12-06 创建人:John (Product Manager) 技术栈:TypeORM + Hono + React + Taro小程序 + 多租户架构 优先级:高(支持电商核心功能)