2
0
Эх сурвалжийг харах

✨ feat(prd): 添加史诗006父子商品多规格支持文档

## 史诗目标
新增父子商品多规格支持功能,在商品添加购物车或立即购买时,能同时支持单规格和多规格选择,以子商品作为多规格选项,并支持手动指定子商品。

## 主要内容
1. 管理后台父子商品配置功能
2. 商品API父子商品支持优化
3. 父子商品多规格选择组件开发
4. 商品详情页规格选择集成
5. 购物车和订单规格支持

## 设计决策
- 商品列表页只显示父商品(spuId=0)
- 商品详情页提供规格选择器
- 支持手动关联和批量创建子商品
- 保持API向后兼容和多租户隔离

🤖 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 1 сар өмнө
parent
commit
47cb02d661

+ 133 - 0
docs/prd/epic-006-parent-child-goods-multi-spec-support.md

@@ -0,0 +1,133 @@
+# 史诗006:父子商品多规格支持 - 棕地增强
+
+## 史诗目标
+新增父子商品多规格支持功能,在商品添加购物车或立即购买时,能同时支持单规格和多规格选择,以子商品作为多规格选项,并支持手动指定子商品。
+
+## 史诗描述
+
+### 现有系统上下文
+- **数据库支持**:商品表已有父子商品关系字段(spuId/spuName)
+- **Schema支持**:所有商品Schema(Admin/User/Public)都包含spuId/spuName字段
+- **UI缺失**:商品管理UI表单缺少spu相关字段和父子商品配置功能
+- **前端组件**:已有`GoodsSpecSelector`组件但被注释,购物车支持spec字段但无规格选择逻辑
+- **技术栈**:TypeORM + Hono + React + Taro小程序 + 多租户架构
+- **API路由**:
+  - 小程序:使用`publicGoodsRoutesMt`(公共商品路由)
+  - 管理后台:使用`adminGoodsRoutes`(管理员路由)
+- **多租户特性**:商品实体有tenantId字段,API路由支持租户隔离和数据权限
+
+### 增强详情
+- **管理后台**:新增父子商品配置界面,支持手动关联已有商品和批量创建子商品
+- **前端**:父子商品的多规格选择界面和逻辑,支持多租户环境
+- **API调整**:优化商品列表和详情API对父子商品的支持
+- **集成点**:多租户商品模块、商品管理UI、商品详情页、购物车系统、订单提交流程
+- **成功标准**:
+  1. 管理员能配置父子商品关系
+  2. 用户能在商品详情页选择子商品作为规格
+  3. 购物车和订单正确记录规格信息
+  4. 商品列表页保持整洁(只显示父商品)
+  5. 多租户隔离机制保持完整
+
+## 设计决策
+
+### 1. 商品列表展示策略
+- **商品列表页**(首页、分类页、搜索页):只显示父商品(spuId=0)
+- **商品详情页**:显示父商品详情 + 规格选择器(子商品作为选项)
+- **单规格商品**:保持现有行为不变(spuId=0且无子商品)
+
+### 2. API设计
+- **公共商品列表API**(`/api/v1/goods`):默认只返回父商品(spuId=0)
+- **商品详情API**(`/api/v1/goods/:id`):
+  - 父商品:返回商品详情 + 子商品列表(作为规格选项)
+  - 子商品:返回子商品详情 + 父商品基本信息
+- **新增API**:`GET /api/v1/goods/:id/children` 获取指定父商品的子商品列表
+- **管理员商品API**:显示完整的父子商品关系树
+
+### 3. 父子商品配置方式
+1. **手动关联**:在创建/编辑父商品时,选择已有商品作为子商品
+2. **批量创建**:创建父商品时,同时创建多个子商品规格(如不同颜色、尺寸等)
+
+## 故事
+
+1. **故事1:管理后台父子商品配置功能**
+   - 在商品管理UI中添加spuId/spuName字段表单控件
+   - 新增子商品关联选择器,支持选择已有商品作为子商品
+   - 新增批量子商品创建功能,支持统一创建多个子商品规格
+   - 父子商品关系展示和编辑界面
+   - **验收标准**:管理员能成功配置父子商品关系
+
+2. **故事2:商品API父子商品支持优化**
+   - 公共商品列表API:默认只返回父商品(spuId=0)
+   - 新增API端点:`GET /api/v1/goods/:id/children` 获取子商品列表
+   - 商品详情API:根据商品类型返回相应数据(父商品+子商品列表或子商品+父商品信息)
+   - 管理员商品API:增强父子商品关系展示
+   - **验收标准**:API变更保持向后兼容,新增端点正常工作
+
+3. **故事3:父子商品多规格选择组件开发**
+   - 激活并增强现有的`GoodsSpecSelector`组件
+   - 支持父子商品关系,以子商品作为规格选项
+   - 支持手动指定子商品功能
+   - 适配多租户商品数据查询
+   - **验收标准**:规格选择器能正确显示和选择子商品
+
+4. **故事4:商品详情页规格选择集成**
+   - 在商品详情页集成规格选择组件
+   - "立即购买"和"加入购物车"支持规格选择
+   - 规格选择后的价格和库存实时更新
+   - 多租户环境下的商品规格数据获取
+   - **验收标准**:用户能在商品详情页成功选择规格并加入购物车
+
+5. **故事5:购物车和订单规格支持**
+   - 购物车系统支持规格信息的存储和显示
+   - 订单提交流程传递规格信息
+   - 订单详情页显示规格信息
+   - 多租户订单系统的规格兼容性
+   - **验收标准**:购物车和订单正确记录和显示规格信息
+
+## 兼容性要求
+- [ ] 现有API保持向后兼容,新增端点不影响现有功能
+- [ ] 数据库schema向后兼容,利用现有spuId字段
+- [ ] UI变更遵循现有设计模式
+- [ ] 性能影响最小化,特别是商品列表查询
+- [ ] 多租户隔离机制保持完整
+
+## 风险缓解
+- **主要风险**:API变更影响现有客户端,规格选择逻辑影响购物车功能
+- **缓解措施**:逐步集成,保持向后兼容,现有无规格商品继续正常工作
+- **回滚计划**:移除新增API端点,恢复原有逻辑,保持多租户完整性
+
+## 完成定义
+- [ ] 所有故事完成,验收标准满足
+- [ ] 现有功能通过测试验证
+- [ ] API变更经过兼容性测试
+- [ ] 多租户隔离机制保持完整
+- [ ] 性能测试通过,无明显性能下降
+- [ ] 文档适当更新
+- [ ] 现有功能无回归
+
+## 技术要点
+
+### 数据库层面
+- 利用现有`spuId`字段:0表示父商品或单规格商品,>0表示子商品
+- `spuName`字段存储父商品名称,便于展示
+
+### 多租户支持
+- 所有操作必须包含tenantId过滤
+- 父子商品必须在同一租户下
+- 数据权限机制保持完整
+
+### 性能考虑
+- 商品列表查询添加`spuId=0`条件
+- 子商品列表查询使用分页
+- 规格选择器数据懒加载
+
+### 前端适配
+- 保持现有购物车数据结构,扩展spec字段使用
+- 规格选择器与现有UI样式保持一致
+- 错误处理和加载状态完善
+
+---
+**史诗创建时间**:2025-12-06
+**创建人**:John (Product Manager)
+**技术栈**:TypeORM + Hono + React + Taro小程序 + 多租户架构
+**优先级**:高(支持电商核心功能)