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

🗑️ chore(docs): 删除过时的商品API父子商品支持故事文档

- 移除已过时的技术实现文档,该功能已通过其他方式实现
- 清理文档目录,保持文档与当前代码状态同步
yourname 1 сар өмнө
parent
commit
d7a66af840

+ 0 - 258
docs/stories/006.003.goods-api-parent-child-support.story.md

@@ -1,258 +0,0 @@
-# Story 006.003: 商品API父子商品支持优化
-
-## Status
-Draft
-
-## Story
-**As a** 前端开发者或小程序用户,
-**I want** 商品API能够正确支持父子商品关系查询,
-**so that** 前端能够获取正确的父子商品数据来展示多规格商品
-
-## Acceptance Criteria
-1. 公共商品列表API:默认只返回父商品(spuId=0)
-2. 新增API端点:`GET /api/v1/goods/:id/children` 获取子商品列表
-3. 商品详情API:根据商品类型返回相应数据(父商品+子商品列表或子商品+父商品信息)
-4. 管理员商品API:增强父子商品关系展示
-5. **验收标准**:API变更保持向后兼容,新增端点正常工作
-
-## Tasks / Subtasks
-- [ ] **分析现有商品API路由结构** (AC: 1, 2, 3, 4)
-  - [ ] 检查现有公共商品路由:`packages/goods-module-mt/src/routes/public-goods-routes.mt.ts`
-  - [ ] 检查现有管理员商品路由:`packages/goods-module-mt/src/routes/admin-goods-routes.mt.ts`
-  - [ ] 检查现有用户商品路由:`packages/goods-module-mt/src/routes/user-goods-routes.mt.ts`
-  - [ ] 分析通用CRUD路由配置和过滤选项
-
-- [ ] **修改公共商品列表API默认过滤条件** (AC: 1)
-  - [ ] 在`publicGoodsRoutesMt`配置中添加`spuId=0`默认过滤条件
-  - [ ] 确保现有查询参数(如分类、搜索等)仍然正常工作
-  - [ ] 验证多租户过滤条件(tenantId)与spuId过滤的兼容性
-
-- [ ] **实现获取子商品列表API端点** (AC: 2)
-  - [ ] 在公共商品路由中新增`GET /api/v1/goods/:id/children`端点
-  - [ ] 实现查询逻辑:根据父商品ID查询所有子商品(spuId=父商品ID)
-  - [ ] 添加租户过滤:确保只返回同一租户下的子商品
-  - [ ] 添加状态过滤:默认只返回可用状态(state=1)的子商品
-  - [ ] 支持分页和排序参数
-
-- [ ] **增强商品详情API** (AC: 3)
-  - [ ] 修改商品详情查询逻辑,根据商品类型返回不同数据
-  - [ ] 如果是父商品(spuId=0):返回商品详情 + 子商品列表
-  - [ ] 如果是子商品(spuId>0):返回子商品详情 + 父商品基本信息
-  - [ ] 保持现有关联关系加载(分类、供应商、商户、图片等)
-
-- [ ] **增强管理员商品API** (AC: 4)
-  - [ ] 在管理员商品路由中显示完整的父子商品关系
-  - [ ] 支持管理员查看父子商品关系树
-  - [ ] 添加父子商品关系查询过滤选项
-  - [ ] 确保数据权限控制仍然有效
-
-- [ ] **编写API集成测试** (AC: 1, 2, 3, 4, 5)
-  - [ ] 测试公共商品列表API的spuId过滤功能
-  - [ ] 测试新增的获取子商品列表API端点
-  - [ ] 测试商品详情API的父子商品数据返回
-  - [ ] 测试管理员商品API的父子商品关系展示
-  - [ ] 验证API向后兼容性
-
-- [ ] **更新API文档和类型定义** (AC: 5)
-  - [ ] 更新商品模块的类型定义文件
-  - [ ] 确保OpenAPI文档正确反映API变更
-  - [ ] 更新前端API客户端的类型定义
-
-## Dev Notes
-
-### 技术栈信息 [Source: architecture/tech-stack.md]
-- **运行时**: Node.js 20.18.3
-- **框架**: Hono 4.8.5 (Web框架和API路由,RPC类型安全)
-- **数据库**: PostgreSQL 17 (通过TypeORM进行数据持久化存储)
-- **ORM**: TypeORM 0.3.25 (数据库操作抽象,实体管理)
-- **测试框架**: Vitest 2.x (单元测试框架,更好的TypeORM支持)
-- **API测试**: hono/testing (内置,API端点测试,更好的类型安全)
-
-### 项目结构信息 [Source: architecture/source-tree.md]
-- **包管理**: 使用pnpm workspace管理多包依赖关系
-- **包架构层次**:
-  - **基础设施层**: shared-types → shared-utils → shared-crud
-  - **测试基础设施**: shared-test-util
-  - **业务模块层**: 多租户模块包(-mt后缀),支持租户数据隔离
-  - **应用层**: server (重构后)
-- **多租户架构**:
-  - **包复制策略**: 基于Epic-007方案,通过复制单租户包创建多租户版本
-  - **租户隔离**: 通过租户ID实现数据隔离,支持多租户部署
-  - **后端包**: 10个多租户模块包,支持租户数据隔离
-- **文件命名**: 保持现有kebab-case命名约定
-- **模块化架构**: 采用分层包结构,支持按需安装和独立开发
-
-### 编码标准 [Source: architecture/coding-standards.md]
-- **代码风格**: TypeScript严格模式,一致的缩进和命名
-- **测试位置**: `__tests__` 文件夹与源码并列(但实际使用`tests/`目录)
-- **覆盖率目标**: 核心业务逻辑 > 80%
-- **测试类型**: 单元测试、集成测试、E2E测试
-- **现有API兼容性**: 确保测试不破坏现有API契约
-- **数据库集成**: 使用测试数据库,避免污染生产数据
-
-### 测试策略 [Source: architecture/testing-strategy.md]
-- **单元测试范围**: 单个函数、类或组件,验证独立单元的正确性
-- **单元测试位置**: `packages/*-module/tests/unit/**/*.test.ts`
-- **集成测试范围**: 多个组件/服务协作,验证模块间集成和交互
-- **集成测试位置**: `packages/*-module/tests/integration/**/*.test.ts`
-- **测试框架**: Vitest + Testing Library + hono/testing + shared-test-util
-- **单元测试覆盖率目标**: ≥ 80%
-- **集成测试覆盖率目标**: ≥ 60%
-- **测试执行频率**: 单元测试每次代码变更,集成测试每次API变更
-
-### 数据模型设计 [Source: docs/prd/epic-006-parent-child-goods-multi-spec-support.md#数据库层面]
-**现有商品实体结构** (已确认):
-- `spuId`字段: 类型`int unsigned`,默认0,注释"主商品ID"
-- `spuName`字段: 类型`varchar(255)`,可空,注释"主商品名称"
-- **父子商品定义**:
-  - `spuId = 0`: 表示父商品或单规格商品
-  - `spuId > 0`: 表示子商品,值为父商品的ID
-  - `spuName`: 存储父商品名称,便于展示
-
-**文件位置**:
-- 商品实体文件: `packages/goods-module-mt/src/entities/goods.entity.mt.ts` (第75-79行)
-- 商品Schema文件: `packages/goods-module-mt/src/schemas/goods.schema.mt.ts`
-
-### API设计 [Source: docs/prd/epic-006-parent-child-goods-multi-spec-support.md#API设计]
-**现有商品API路由**:
-- 管理员商品路由: `adminGoodsRoutesMt` (`packages/goods-module-mt/src/routes/admin-goods-routes.mt.ts`)
-- 公共商品路由: `publicGoodsRoutesMt` (`packages/goods-module-mt/src/routes/public-goods-routes.mt.ts`)
-- 用户商品路由: `userGoodsRoutesMt` (`packages/goods-module-mt/src/routes/user-goods-routes.mt.ts`)
-
-**需要新增的API端点**:
-- `GET /api/v1/goods/:id/children` - 获取指定父商品的子商品列表
-- 商品详情API需要增强:父商品返回详情+子商品列表,子商品返回详情+父商品信息
-
-**API设计原则**:
-- 公共商品列表API:默认只返回父商品(spuId=0)
-- 新增API端点:`GET /api/v1/goods/:id/children` 获取子商品列表
-- 商品详情API:根据商品类型返回相应数据
-- 管理员商品API:增强父子商品关系展示
-- **验收标准**:API变更保持向后兼容,新增端点正常工作
-
-### 组件架构 [Source: architecture/component-architecture.md]
-**后端组件架构**:
-- **框架**: Hono 4.8.5 + TypeScript
-- **数据库**: PostgreSQL 15 + TypeORM 0.3.25
-- **验证**: Zod schema验证
-- **认证**: JWT Bearer Token
-- **API文档**: @hono/zod-openapi + Swagger UI
-- **测试**: Vitest + hono/testing
-
-**通用CRUD服务**:
-- **责任**: 提供类型安全的通用CRUD操作,支持自定义扩展
-- **现状**: 已实现完整功能,支持关联查询和复杂操作
-- **优化重点**: 增强错误处理、添加测试覆盖、优化性能
-
-### 文件位置和命名约定
-- **商品模块路由文件**: `packages/goods-module-mt/src/routes/` 目录下
-  - `public-goods-routes.mt.ts` - 公共商品路由
-  - `admin-goods-routes.mt.ts` - 管理员商品路由
-  - `user-goods-routes.mt.ts` - 用户商品路由
-- **商品实体文件**: `packages/goods-module-mt/src/entities/goods.entity.mt.ts`
-- **商品服务文件**: `packages/goods-module-mt/src/services/goods.service.mt.ts`
-- **商品Schema文件**: `packages/goods-module-mt/src/schemas/` 目录下
-- **测试文件位置**: `packages/goods-module-mt/tests/integration/` 目录下
-
-### 多租户实体命名模式
-基于现有多租户模块观察:
-- **实体类名**: 以`Mt`结尾(如`GoodsMt`)
-- **表名**: 以`_mt`结尾(如`goods_mt`)
-- **文件命名**: `*.mt.ts` 或 `*.entity.ts`
-- **必须包含**: `tenant_id`字段用于租户隔离
-
-### 技术约束
-- **数据库**: 使用PostgreSQL 17,支持父子商品关系查询
-- **租户隔离**: 所有操作必须包含tenantId过滤,父子商品必须在同一租户下
-- **数据权限**: 管理员路由使用完整CRUD功能,不使用数据权限控制
-- **事务处理**: 批量创建子商品必须使用数据库事务确保数据一致性
-- **验证逻辑**: 父子商品关系需要验证,防止循环引用和无效关联
-
-### 集成点
-1. **商品模块集成**: 使用现有的`goods-module-mt`包,包含实体、Schema和服务
-2. **通用CRUD服务集成**: 使用`@d8d/shared-crud`的通用CRUD路由和服务
-3. **租户模块集成**: 所有操作需要租户ID过滤
-4. **测试基础设施集成**: 使用`@d8d/shared-test-util`进行集成测试
-
-### 测试要求
-- **单元测试**: 测试新的API端点逻辑、过滤条件验证
-- **集成测试**: 测试完整的父子商品API流程,包括公共路由、管理员路由
-- **边界条件测试**: 测试无效商品ID、跨租户访问、空子商品列表等场景
-- **覆盖率**: 核心业务逻辑必须达到80%以上单元测试覆盖率
-
-### 项目结构注意事项
-- 需要遵循现有的多租户包架构模式
-- API变更必须保持向后兼容性
-- 需要正确配置通用CRUD路由的过滤选项
-- 新增API端点需要遵循现有的路由命名和结构约定
-- **注意**: 父子商品关系查询需要增强现有商品服务或创建自定义查询方法
-- **多租户兼容性**: 所有API端点必须支持租户ID过滤
-
-### 实际代码探索发现
-**基于实际代码分析发现**:
-1. **公共商品路由**: `packages/goods-module-mt/src/routes/public-goods-routes.mt.ts`
-   - 使用`createCrudRoutes`创建通用CRUD路由
-   - 当前配置:`defaultFilters: { state: 1 }` (只返回可用状态商品)
-   - 需要添加:`spuId: 0` 过滤条件到defaultFilters
-   - 关系加载:包含分类、供应商、商户、图片等关联
-
-2. **商品实体结构**: `packages/goods-module-mt/src/entities/goods.entity.mt.ts`
-   - `spuId`字段已存在(第75行),默认0,注释"主商品ID"
-   - `spuName`字段已存在(第78行),可空,注释"主商品名称"
-   - 父子商品定义清晰:spuId=0表示父商品,spuId>0表示子商品
-
-3. **通用CRUD服务**: `@d8d/shared-crud` 提供基础CRUD功能
-   - 支持自定义过滤条件
-   - 支持关联关系加载
-   - 支持分页和排序
-   - 支持多租户过滤
-
-### 需要开发代理特别注意的事项
-1. **API向后兼容性**: 必须确保现有API客户端不受影响,新增功能通过新端点或可选参数实现
-2. **多租户过滤**: 所有查询必须包含tenantId过滤条件,父子商品必须在同一租户下
-3. **性能考虑**: 商品列表查询添加spuId=0条件,子商品列表查询使用分页
-4. **错误处理**: 处理无效商品ID、跨租户访问等边界情况
-5. **测试覆盖**: 必须编写完整的集成测试验证所有AC
-
-## Testing
-### 测试标准 [Source: architecture/testing-strategy.md]
-- **测试文件位置**: `packages/goods-module-mt/tests/` 目录下
-- **单元测试位置**: `tests/unit/**/*.test.{ts,tsx}`
-- **集成测试位置**: `tests/integration/**/*.test.{ts,tsx}`
-- **测试框架**: Vitest + Testing Library + hono/testing + shared-test-util
-- **覆盖率要求**: 单元测试 ≥ 80%,集成测试 ≥ 60%
-- **测试模式**: 使用测试数据工厂模式,避免硬编码测试数据
-- **数据库测试**: 使用专用测试数据库,事务回滚机制
-
-### 测试策略要求
-- **单元测试**: 验证单个API端点逻辑、过滤条件验证
-- **集成测试**: 验证完整的父子商品API流程、数据库查询、租户过滤
-- **边界测试**: 测试无效输入、跨租户访问、空结果集等边界条件
-- **错误处理测试**: 测试各种错误场景和异常情况
-- **兼容性测试**: 验证API向后兼容性,现有功能不受影响
-
-### 测试数据管理
-- 使用测试数据工厂模式创建测试数据
-- 每个测试后清理测试数据(事务回滚)
-- 使用唯一标识符确保测试数据隔离
-- 模拟父子商品关系测试数据
-- 测试多租户环境下的数据隔离
-
-## Change Log
-| Date | Version | Description | Author |
-|------|---------|-------------|--------|
-| 2025-12-07 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
-
-## Dev Agent Record
-*此部分由开发代理在实现过程中填写*
-
-### Agent Model Used
-
-### Debug Log References
-
-### Completion Notes List
-
-### File List
-
-## QA Results
-*此部分由QA代理在审查完成后填写*