Jelajahi Sumber

📝 docs(delivery-address-module): 更新任务计划和API路由设计文档

- 重命名任务5为"创建当前用户权限API路由文件",添加详细子任务
- 调整后续任务编号(原任务5→6,原任务6→7)
- 添加"当前用户权限API路由设计"章节,详细说明用户/管理员路由分离方案
- 修复数据库兼容部分的文档链接拼写错误(mini→minim)
- 更新变更日志,添加版本1.2记录
yourname 1 bulan lalu
induk
melakukan
8972f0ae5f
1 mengubah file dengan 33 tambahan dan 4 penghapusan
  1. 33 4
      docs/stories/005.009.delivery-address-module.story.md

+ 33 - 4
docs/stories/005.009.delivery-address-module.story.md

@@ -52,7 +52,23 @@ Draft
   - [x] 集成认证中间件
   - [x] 配置用户追踪字段
 
-- [ ] Task 5: 创建测试套件 (AC: 7, 8)
+- [ ] Task 5: 创建当前用户权限API路由文件 (AC: 3, 4)
+  - [ ] 创建 packages/delivery-address-module/src/schemas/user-delivery-address.schema.ts - 用户专用schema
+  - [ ] 移除userId字段,自动使用当前登录用户ID
+  - [ ] 创建 packages/delivery-address-module/src/schemas/admin-delivery-address.schema.ts - 管理员专用schema
+  - [ ] 保留userId字段,允许管理员指定用户
+  - [ ] 创建 packages/delivery-address-module/src/routes/user-routes.ts - 仅限当前用户使用的路由
+  - [ ] 配置数据权限控制,使用 shared-crud 的 dataPermission 配置
+  - [ ] 设置 userIdField: 'userId',确保用户只能操作自己的数据
+  - [ ] 使用用户专用schema
+  - [ ] 创建 packages/delivery-address-module/src/routes/admin-routes.ts - 管理员使用的完整权限路由
+  - [ ] 配置管理员路由不使用数据权限控制,保持完整CRUD功能
+  - [ ] 使用管理员专用schema
+  - [ ] 更新 packages/delivery-address-module/src/routes/index.ts 导出两个路由集合
+  - [ ] 验证用户路由只能访问和操作当前用户的数据
+  - [ ] 验证管理员路由可以访问所有用户的数据
+
+- [ ] Task 6: 创建测试套件 (AC: 7, 8)
   - [ ] 创建集成测试 packages/delivery-address-module/tests/integration/,参考广告模块集成测试结构 [Source: packages/advertisements-module/tests/integration/advertisements.integration.test.ts#L1-L50]
   - [ ] 配置测试数据库连接,使用 shared-test-util [Source: packages/shared-test-util/src/integration-test-db.ts#L1-L30]
   - [ ] 添加省市区关联测试场景
@@ -60,7 +76,7 @@ Draft
   - [ ] 测试地址查询时的地区数据关联
   - [ ] 确保测试覆盖率满足要求
 
-- [ ] Task 6: 集成到现有系统 (AC: 5, 6, 8)
+- [ ] Task 7: 集成到现有系统 (AC: 5, 6, 8)
   - [ ] 更新 server package 依赖,添加 @d8d/delivery-address-module
   - [ ] 在 server 中注册配送地址路由
   - [ ] 验证与用户模块的集成
@@ -68,7 +84,7 @@ Draft
   - [ ] 确保省市区数据关联正常工作
   - [ ] 验证地址创建和更新时的地区验证
 
-- [ ] Task 7: 验证和文档 (AC: 4, 6)
+- [ ] Task 8: 验证和文档 (AC: 4, 6)
   - [ ] 运行所有测试验证功能
   - [ ] 更新 docs/architecture/source-tree.md 文档
   - [ ] 验证向后兼容性
@@ -132,9 +148,18 @@ Draft
 - **测试框架**: Vitest + shared-test-util [Source: docs/architecture/testing-strategy.md#L43-L44]
 - **集成测试参考**: 参考广告模块集成测试结构和模式 [Source: packages/advertisements-module/tests/integration/advertisements.integration.test.ts#L1-L50]
 
+### 当前用户权限API路由设计
+- **用户路由**: `packages/delivery-address-module/src/routes/user-routes.ts` - 仅限当前用户使用 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L21-L50]
+- **管理员路由**: `packages/delivery-address-module/src/routes/admin-routes.ts` - 管理员使用的完整权限路由 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L21-L50]
+- **用户专用Schema**: `packages/delivery-address-module/src/schemas/user-delivery-address.schema.ts` - 移除userId字段,自动使用当前登录用户ID
+- **管理员专用Schema**: `packages/delivery-address-module/src/schemas/admin-delivery-address.schema.ts` - 保留userId字段,允许管理员指定用户
+- **数据权限配置**: 使用 shared-crud 的 `dataPermission` 配置 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L22-L25]
+- **权限字段**: 设置 `userIdField: 'userId'` 确保用户只能操作自己的数据 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L26-L33]
+- **权限验证**: 查询、创建、更新、删除操作都会验证用户权限 [Source: docs/stories/006.001.shared-crud-data-permission.story.md#L26-L41]
+
 ### 向后兼容性
 - **API 兼容**: 现有配送地址API保持不变 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L101]
-- **数据库兼容**: 数据库schema保持不变 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L102]
+- **数据库兼容**: 数据库schema保持不变 [Source: docs/prd/epic-005-minim-auth-modules-integration.md#L102]
 - **认证兼容**: 认证流程保持不变 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L103]
 
 ## Testing
@@ -159,6 +184,9 @@ Draft
 - 省市区数据关联验证
 - 地区层级关系验证
 - 地址创建时的地区验证逻辑
+- **用户路由权限测试**: 验证用户只能访问和操作自己的数据
+- **管理员路由权限测试**: 验证管理员可以访问所有用户的数据
+- **数据权限配置测试**: 验证 dataPermission 配置正确工作
 
 ## Change Log
 
@@ -166,6 +194,7 @@ Draft
 |------|---------|-------------|--------|
 | 2025-11-11 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
 | 2025-11-11 | 1.1 | 更新省市区关联,集成 @d8d/geo-areas 包 | Bob (Scrum Master) |
+| 2025-11-11 | 1.2 | 添加当前用户权限API路由文件任务,支持admin/user分离路由和schema | Bob (Scrum Master) |
 
 ## Dev Agent Record