Преглед изворни кода

📝 docs(orders-module): 更新订单模块开发计划文档

- 重构Task 4,将原"创建订单路由"拆分为更清晰的"创建管理员路由"
- 新增Task 5"创建用户路由",明确区分管理员和用户权限边界
- 调整路由文件结构,采用`admin/`和`user/`目录分离不同权限路由
- 细化订单、订单商品、退款等路由的迁移源和配置要求
- 更新测试计划,为各类路由添加独立集成测试文件
- 调整后续任务编号,保持文档一致性
- 完善管理员/用户权限路由设计说明,补充路由文件结构详情
yourname пре 1 месец
родитељ
комит
998ca08ccb
1 измењених фајлова са 112 додато и 50 уклоњено
  1. 112 50
      docs/stories/005.013.orders-module.story.md

+ 112 - 50
docs/stories/005.013.orders-module.story.md

@@ -48,47 +48,88 @@ Draft
   - [ ] 更新服务依赖注入配置
   - [ ] 确保订单创建的事务逻辑完整迁移
 
-- [ ] Task 4: 创建订单路由 (AC: 3, 4)
-  - [ ] 创建订单管理路由 packages/orders-module/src/routes/index.ts
-  - [ ] 迁移订单的完整CRUD路由,使用 shared-crud 基础设施
-  - [ ] 迁移订单商品路由
-  - [ ] 迁移订单退款路由
-  - [ ] 迁移订单创建专用路由
-  - [ ] 集成认证中间件
+- [ ] Task 4: 创建管理员路由 (AC: 3, 4)
+  - [ ] 创建管理员路由目录 `packages/orders-module/src/routes/admin/`
+  - [ ] 创建管理员订单路由 `packages/orders-module/src/routes/admin/orders.ts`
+    - **迁移源**: `packages/server/src/api/orders/index.ts`
+    - **配置**: 无数据权限限制,完整CRUD功能
+    - **集成**: auth-module 认证中间件
+  - [ ] 创建管理员订单商品路由 `packages/orders-module/src/routes/admin/order-items.ts`
+    - **迁移源**: `packages/server/src/api/orders-goods/index.ts`
+    - **配置**: 无数据权限限制,完整CRUD功能
+    - **集成**: auth-module 认证中间件
+  - [ ] 创建管理员退款路由 `packages/orders-module/src/routes/admin/refunds.ts`
+    - **迁移源**: `packages/server/src/api/orders-refund/index.ts`
+    - **配置**: 无数据权限限制,完整CRUD功能
+    - **集成**: auth-module 认证中间件
+
+- [ ] Task 5: 创建用户路由 (AC: 3, 4, 6)
+  - [ ] 创建用户路由目录 `packages/orders-module/src/routes/user/`
+  - [ ] 创建用户订单路由 `packages/orders-module/src/routes/user/orders.ts`
+    - **迁移源**: `packages/server/src/api/orders/index.ts`
+    - **配置**: 数据权限 `{ userIdField: 'userId', autoInject: true }`
+    - **集成**: auth-module 认证中间件
+  - [ ] 创建用户订单商品路由 `packages/orders-module/src/routes/user/order-items.ts`
+    - **迁移源**: `packages/server/src/api/orders-goods/index.ts`
+    - **配置**: 数据权限 `{ userIdField: 'userId', autoInject: true }`
+    - **集成**: auth-module 认证中间件
+  - [ ] 创建用户退款路由 `packages/orders-module/src/routes/user/refunds.ts`
+    - **迁移源**: `packages/server/src/api/orders-refund/index.ts`
+    - **配置**: 数据权限 `{ userIdField: 'userId', autoInject: true }`
+    - **集成**: auth-module 认证中间件
+
+- [ ] Task 6: 创建订单创建专用路由 (AC: 3, 4)
+  - [ ] 创建订单创建路由 `packages/orders-module/src/routes/create-order.ts`
+    - **迁移源**: `packages/server/src/api/orders/create-order.ts`
+    - **配置**: 自动注入当前用户ID,仅限用户使用
+    - **集成**: auth-module 认证中间件
+
+- [ ] Task 7: 创建统一路由导出 (AC: 3, 4, 6)
+  - [ ] 创建统一路由导出 `packages/orders-module/src/routes/index.ts`
+    - 导出管理员路由组 `/admin/*`
+    - 导出用户路由组 `/user/*`
+    - 导出订单创建路由 `/create-order`
   - [ ] 配置用户追踪字段
-
-- [ ] Task 5: 创建当前用户权限API路由文件 (AC: 3, 4, 6)
-  - [ ] 创建 packages/orders-module/src/schemas/user-order.schema.ts - 用户专用schema
-  - [ ] 移除userId字段,自动使用当前登录用户权限
-  - [ ] 创建 packages/orders-module/src/schemas/admin-order.schema.ts - 管理员专用schema
-  - [ ] 保留userId字段,允许管理员指定用户
-  - [ ] 创建 packages/orders-module/src/routes/user-routes.ts - 仅限当前用户使用的路由
-  - [ ] 配置数据权限控制,使用 shared-crud 的 dataPermission 配置 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L21-L50]
-  - [ ] 设置 userIdField: 'userId',确保用户只能操作自己的数据
-  - [ ] 使用用户专用schema
-  - [ ] 创建 packages/orders-module/src/routes/admin-routes.ts - 管理员使用的完整权限路由
-  - [ ] 配置管理员路由不使用数据权限控制,保持完整CRUD功能
-  - [ ] 使用管理员专用schema
-  - [ ] 更新 packages/orders-module/src/routes/index.ts 导出两个路由集合
-  - [ ] 验证用户路由只能访问和操作当前用户的数据
-  - [ ] 验证管理员路由可以访问所有用户的数据
-
-- [ ] Task 6: 创建测试套件 (AC: 7)
-  - [ ] 创建用户路由集成测试 packages/orders-module/tests/integration/user-routes.integration.test.ts
-  - [ ] 测试用户路由只能访问和操作当前用户的数据
-  - [ ] 验证用户创建订单时自动使用当前用户ID
-  - [ ] 验证用户无法访问其他用户的数据
-  - [ ] 创建管理员路由集成测试 packages/orders-module/tests/integration/admin-routes.integration.test.ts
-  - [ ] 测试管理员路由可以访问所有用户的数据
-  - [ ] 验证管理员可以为其他用户创建订单
-  - [ ] 验证管理员可以更新和删除任何用户的订单
+  - [ ] 验证权限控制逻辑
+
+- [ ] Task 8: 创建测试套件 (AC: 7)
+  - [ ] 创建用户订单路由集成测试 packages/orders-module/tests/integration/user-orders.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/user-goods-routes.integration.test.ts`
+    - 测试用户订单路由只能访问和操作当前用户的数据
+    - 验证用户创建订单时自动使用当前用户ID
+    - 验证用户无法访问其他用户的订单
+  - [ ] 创建用户订单商品路由集成测试 packages/orders-module/tests/integration/user-order-items.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/user-goods-routes.integration.test.ts`
+    - 测试用户只能查看自己订单的商品
+    - 验证用户无法访问其他用户订单的商品
+  - [ ] 创建用户退款路由集成测试 packages/orders-module/tests/integration/user-refunds.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/user-goods-routes.integration.test.ts`
+    - 测试用户只能申请自己订单的退款
+    - 验证用户无法访问其他用户的退款记录
+  - [ ] 创建管理员订单路由集成测试 packages/orders-module/tests/integration/admin-orders.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/admin-goods-routes.integration.test.ts`
+    - 测试管理员可以访问所有用户的订单数据
+    - 验证管理员可以为其他用户创建订单
+    - 验证管理员可以更新和删除任何用户的订单
+  - [ ] 创建管理员订单商品路由集成测试 packages/orders-module/tests/integration/admin-order-items.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/admin-goods-routes.integration.test.ts`
+    - 测试管理员可以访问所有订单的商品数据
+    - 验证管理员可以管理任何订单的商品
+  - [ ] 创建管理员退款路由集成测试 packages/orders-module/tests/integration/admin-refunds.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/admin-goods-routes.integration.test.ts`
+    - 测试管理员可以访问所有用户的退款记录
+    - 验证管理员可以处理任何用户的退款申请
+  - [ ] 创建订单创建路由集成测试 packages/orders-module/tests/integration/create-order.integration.test.ts
+    - **参考**: `packages/goods-module/tests/integration/admin-goods-routes.integration.test.ts`
+    - 测试订单创建功能正常工作
+    - 验证订单创建时自动注入当前用户ID
+    - 测试订单创建的事务逻辑
   - [ ] 配置测试数据库连接,使用 shared-test-util [Source: packages/shared-test-util/src/integration-test-db.ts#L1-L30]
   - [ ] 添加订单状态管理测试场景
-  - [ ] 测试订单创建的事务逻辑
   - [ ] 测试库存更新功能
   - [ ] 确保测试覆盖率满足要求
 
-- [ ] Task 7: 集成到现有系统 (AC: 5, 6, 8)
+- [ ] Task 9: 集成到现有系统 (AC: 5, 6, 8)
   - [ ] 更新 server package 依赖,添加 @d8d/orders-module
   - [ ] 在 server 中注册订单路由
   - [ ] 验证与用户模块的集成
@@ -98,7 +139,7 @@ Draft
   - [ ] 验证与供应商模块的集成
   - [ ] 确保订单创建功能正常工作
 
-- [ ] Task 8: 验证和文档 (AC: 4, 6)
+- [ ] Task 10: 验证和文档 (AC: 4, 6)
   - [ ] 运行所有测试验证功能
   - [ ] 更新 docs/architecture/source-tree.md 文档
   - [ ] 验证向后兼容性
@@ -186,11 +227,17 @@ Draft
 - **vitest.config.ts**: 参考商户模块配置 [Source: packages/merchant-module/vitest.config.ts#L1-L21]
 - **shared-test-util**: 测试基础设施包,提供统一的测试工具 [Source: packages/shared-test-util/package.json#L1-L16]
 
-### 当前用户权限API路由设计
-- **用户路由**: `packages/orders-module/src/routes/user-routes.ts` - 仅限当前用户使用 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L21-L50]
-- **管理员路由**: `packages/orders-module/src/routes/admin-routes.ts` - 管理员使用的完整权限路由 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L21-L50]
-- **用户专用Schema**: `packages/orders-module/src/schemas/user-order.schema.ts` - 移除请求schema中的用户权限相关字段,自动使用当前登录用户权限(响应schema保持完整字段)
-- **管理员专用Schema**: `packages/orders-module/src/schemas/admin-order.schema.ts` - 保留完整权限字段,允许管理员指定权限
+### 管理员/用户权限路由设计
+- **管理员路由**: `packages/orders-module/src/routes/admin/` - 管理员使用的完整权限路由
+  - `orders.ts` - 管理员订单管理(无数据权限限制)
+  - `order-items.ts` - 管理员订单商品管理(无数据权限限制)
+  - `refunds.ts` - 管理员退款管理(无数据权限限制)
+- **用户路由**: `packages/orders-module/src/routes/user/` - 仅限当前用户使用的路由
+  - `orders.ts` - 用户订单操作(数据权限:userIdField: 'userId')
+  - `order-items.ts` - 用户订单商品查看(数据权限:userIdField: 'userId')
+  - `refunds.ts` - 用户退款申请(数据权限:userIdField: 'userId')
+- **订单创建路由**: `packages/orders-module/src/routes/create-order.ts` - 专用订单创建路由
+- **认证集成**: 使用 auth-module 认证中间件 [Source: packages/auth-module/src/middleware/auth.middleware.ts]
 - **数据权限配置**: 使用 shared-crud 的 `dataPermission` 配置 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L22-L25]
 - **权限验证**: 查询、创建、更新、删除操作都会验证用户权限 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L26-L41]
 
@@ -220,15 +267,30 @@ Draft
 - 订单创建的事务逻辑
 - 库存更新功能
 - 认证和权限验证
-- **用户路由权限测试**:
-  - 验证用户只能访问和操作授权的数据
-  - 验证用户创建订单时自动使用当前用户权限
-  - 验证用户无法访问其他权限的数据
-- **管理员路由权限测试**:
-  - 验证管理员可以访问所有数据
-  - 验证管理员可以为其他权限创建订单
-  - 验证管理员可以更新任何订单
-  - 验证管理员可以删除任何订单
+- **用户订单路由权限测试**:
+  - 验证用户只能访问和操作自己的订单数据
+  - 验证用户创建订单时自动使用当前用户ID
+  - 验证用户无法访问其他用户的订单
+- **用户订单商品路由权限测试**:
+  - 验证用户只能查看自己订单的商品
+  - 验证用户无法访问其他用户订单的商品
+- **用户退款路由权限测试**:
+  - 验证用户只能申请自己订单的退款
+  - 验证用户无法访问其他用户的退款记录
+- **管理员订单路由权限测试**:
+  - 验证管理员可以访问所有用户的订单数据
+  - 验证管理员可以为其他用户创建订单
+  - 验证管理员可以更新和删除任何用户的订单
+- **管理员订单商品路由权限测试**:
+  - 验证管理员可以访问所有订单的商品数据
+  - 验证管理员可以管理任何订单的商品
+- **管理员退款路由权限测试**:
+  - 验证管理员可以访问所有用户的退款记录
+  - 验证管理员可以处理任何用户的退款申请
+- **订单创建路由测试**:
+  - 验证订单创建功能正常工作
+  - 验证订单创建时自动注入当前用户ID
+  - 测试订单创建的事务逻辑
 - **数据权限配置测试**: 验证 dataPermission 配置正确工作
 - **订单创建事务测试**: 验证订单创建、商品明细创建、库存更新的原子性