Przeglądaj źródła

📝 docs(delivery-address-module): update delivery address module story with geo-areas integration

- add acceptance criteria for migrating province/city/district fields from City entity to @d8d/geo-areas package's AreaEntity
- update Task 2 to include AreaEntity migration and add @d8d/geo-areas dependency
- update Task 3 to include AreaService integration and address validation logic updates
- update Task 5 to verify integration with @d8d/geo-areas package and region data association
- update Task 6 to add test scenarios for province/city/district association and validation
- add province/city/district migration description section explaining the transition from City entity to AreaEntity
- update dependency list to include @d8d/geo-areas package
- add new features for region data association validation and region hierarchy validation
- add change log entry for version 1.1 with geo-areas integration updates
yourname 1 miesiąc temu
rodzic
commit
02750def6e

+ 36 - 8
docs/stories/005.009.delivery-address-module.story.md

@@ -18,6 +18,7 @@ Draft
 5. 集成到现有的用户管理系统和地区管理系统
 5. 集成到现有的用户管理系统和地区管理系统
 6. 保持与现有认证系统的兼容性
 6. 保持与现有认证系统的兼容性
 7. 提供单元测试和集成测试,覆盖率满足要求
 7. 提供单元测试和集成测试,覆盖率满足要求
+8. 将省市区字段从旧的 City 实体迁移到 @d8d/geo-areas 包的 AreaEntity
 
 
 ## Tasks / Subtasks
 ## Tasks / Subtasks
 
 
@@ -28,15 +29,20 @@ Draft
   - [ ] 配置 vitest.config.ts,参考广告模块配置 [Source: packages/advertisements-module/vitest.config.ts#L1-L21]
   - [ ] 配置 vitest.config.ts,参考广告模块配置 [Source: packages/advertisements-module/vitest.config.ts#L1-L21]
   - [ ] 创建 src/index.ts 导出文件
   - [ ] 创建 src/index.ts 导出文件
 
 
-- [ ] Task 2: 迁移配送地址实体和类型定义 (AC: 2, 4)
+- [ ] Task 2: 迁移配送地址实体和类型定义 (AC: 2, 4, 8)
   - [ ] 迁移 DeliveryAddress 实体到 packages/delivery-address-module/src/entities/
   - [ ] 迁移 DeliveryAddress 实体到 packages/delivery-address-module/src/entities/
+  - [ ] 将省市区字段从 City 实体关联更新为 AreaEntity 关联
+  - [ ] 更新实体字段映射,使用 AreaEntity 的 level 枚举
   - [ ] 迁移 DeliveryAddressSchema、CreateDeliveryAddressDto、UpdateDeliveryAddressDto 到 packages/delivery-address-module/src/schemas/
   - [ ] 迁移 DeliveryAddressSchema、CreateDeliveryAddressDto、UpdateDeliveryAddressDto 到 packages/delivery-address-module/src/schemas/
   - [ ] 创建类型定义文件 packages/delivery-address-module/src/types/delivery-address.types.ts
   - [ ] 创建类型定义文件 packages/delivery-address-module/src/types/delivery-address.types.ts
   - [ ] 更新实体导入路径,使用 workspace:* 依赖
   - [ ] 更新实体导入路径,使用 workspace:* 依赖
+  - [ ] 添加 @d8d/geo-areas 包依赖
 
 
-- [ ] Task 3: 迁移配送地址服务 (AC: 2, 3)
+- [ ] Task 3: 迁移配送地址服务 (AC: 2, 3, 8)
   - [ ] 迁移 DeliveryAddressService 到 packages/delivery-address-module/src/services/
   - [ ] 迁移 DeliveryAddressService 到 packages/delivery-address-module/src/services/
   - [ ] 重构服务使用 shared-crud 基础设施
   - [ ] 重构服务使用 shared-crud 基础设施
+  - [ ] 集成 AreaService 用于省市区数据验证和查询
+  - [ ] 更新地址验证逻辑,使用 AreaEntity 的层级枚举
   - [ ] 确保 findByUser、setDefault、findDefaultByUser 方法正常工作
   - [ ] 确保 findByUser、setDefault、findDefaultByUser 方法正常工作
   - [ ] 更新服务依赖注入配置
   - [ ] 更新服务依赖注入配置
 
 
@@ -46,22 +52,25 @@ Draft
   - [ ] 集成认证中间件
   - [ ] 集成认证中间件
   - [ ] 配置用户追踪字段
   - [ ] 配置用户追踪字段
 
 
-- [ ] Task 5: 集成到现有系统 (AC: 5, 6)
+- [ ] Task 5: 集成到现有系统 (AC: 5, 6, 8)
   - [ ] 更新 server package 依赖,添加 @d8d/delivery-address-module
   - [ ] 更新 server package 依赖,添加 @d8d/delivery-address-module
   - [ ] 在 server 中注册配送地址路由
   - [ ] 在 server 中注册配送地址路由
   - [ ] 验证与用户模块的集成
   - [ ] 验证与用户模块的集成
-  - [ ] 验证与地区模块的集成
+  - [ ] 验证与 @d8d/geo-areas 包的集成
+  - [ ] 确保省市区数据关联正常工作
+  - [ ] 验证地址创建和更新时的地区验证
 
 
-- [ ] Task 6: 创建测试套件 (AC: 7)
-  - [ ] 创建单元测试 packages/delivery-address-module/tests/unit/
+- [ ] Task 6: 创建测试套件 (AC: 7, 8)
   - [ ] 创建集成测试 packages/delivery-address-module/tests/integration/,参考广告模块集成测试结构 [Source: packages/advertisements-module/tests/integration/advertisements.integration.test.ts#L1-L50]
   - [ ] 创建集成测试 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]
   - [ ] 配置测试数据库连接,使用 shared-test-util [Source: packages/shared-test-util/src/integration-test-db.ts#L1-L30]
+  - [ ] 添加省市区关联测试场景
+  - [ ] 测试地址创建时的地区验证逻辑
+  - [ ] 测试地址查询时的地区数据关联
   - [ ] 确保测试覆盖率满足要求
   - [ ] 确保测试覆盖率满足要求
 
 
 - [ ] Task 7: 验证和文档 (AC: 4, 6)
 - [ ] Task 7: 验证和文档 (AC: 4, 6)
   - [ ] 运行所有测试验证功能
   - [ ] 运行所有测试验证功能
-  - [ ] 生成 API 文档
-  - [ ] 更新 README.md 文档
+  - [ ] 更新 docs/architecture/source-tree.md 文档
   - [ ] 验证向后兼容性
   - [ ] 验证向后兼容性
 
 
 ## Dev Notes
 ## Dev Notes
@@ -85,6 +94,20 @@ Draft
   - `findDefaultByUser(userId)` - 获取用户默认地址 [Source: packages/server/src/modules/delivery-address/delivery-address.service.ts#L52-L57]
   - `findDefaultByUser(userId)` - 获取用户默认地址 [Source: packages/server/src/modules/delivery-address/delivery-address.service.ts#L52-L57]
 - **Schema 定义**: 完整的 Zod Schema 验证规则 [Source: packages/server/src/modules/delivery-address/delivery-address.schema.ts#L18-L144]
 - **Schema 定义**: 完整的 Zod Schema 验证规则 [Source: packages/server/src/modules/delivery-address/delivery-address.schema.ts#L18-L144]
 
 
+### 省市区迁移说明
+- **从 City 实体迁移到 AreaEntity**:
+  - 当前使用 City 实体管理省市区数据 [Source: packages/server/src/modules/system/city.entity.ts#L1-L34]
+  - 迁移到 @d8d/geo-areas 包的 AreaEntity [Source: packages/geo-areas/src/modules/areas/area.entity.ts#L1-L62]
+  - AreaEntity 提供更清晰的层级枚举:PROVINCE(1), CITY(2), DISTRICT(3) [Source: packages/geo-areas/src/modules/areas/area.entity.ts#L4-L8]
+- **字段映射关系**:
+  - `receiver_province` → 关联 AreaEntity.level = PROVINCE
+  - `receiver_city` → 关联 AreaEntity.level = CITY
+  - `receiver_district` → 关联 AreaEntity.level = DISTRICT
+  - `receiver_town` → 保留现有逻辑,可考虑扩展 AreaEntity.level = TOWN(4)
+- **服务集成**:
+  - 使用 AreaService 进行地区数据验证和查询 [Source: packages/geo-areas/src/modules/areas/area.service.ts#L1-L163]
+  - 支持树形结构查询和地区路径获取 [Source: packages/geo-areas/src/modules/areas/area.service.ts#L126-L145]
+
 ### 依赖关系
 ### 依赖关系
 - **基础设施依赖**:
 - **基础设施依赖**:
   - `@d8d/shared-types` - 基础类型定义 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L269-L276]
   - `@d8d/shared-types` - 基础类型定义 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L269-L276]
@@ -93,6 +116,7 @@ Draft
 - **业务模块依赖**:
 - **业务模块依赖**:
   - `@d8d/user-module` - 用户管理 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L321-L334]
   - `@d8d/user-module` - 用户管理 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L321-L334]
   - `@d8d/auth-module` - 认证管理 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L337-L350]
   - `@d8d/auth-module` - 认证管理 [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L337-L350]
+  - `@d8d/geo-areas` - 省市区管理 [Source: packages/geo-areas/package.json#L1-L71]
 - **测试依赖**: `@d8d/shared-test-util` [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L294-L306]
 - **测试依赖**: `@d8d/shared-test-util` [Source: docs/prd/epic-005-mini-auth-modules-integration.md#L294-L306]
 
 
 ### 配置参考
 ### 配置参考
@@ -132,12 +156,16 @@ Draft
 - 默认地址设置功能
 - 默认地址设置功能
 - 地址状态管理
 - 地址状态管理
 - 认证和权限验证
 - 认证和权限验证
+- 省市区数据关联验证
+- 地区层级关系验证
+- 地址创建时的地区验证逻辑
 
 
 ## Change Log
 ## Change Log
 
 
 | Date | Version | Description | Author |
 | Date | Version | Description | Author |
 |------|---------|-------------|--------|
 |------|---------|-------------|--------|
 | 2025-11-11 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
 | 2025-11-11 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
+| 2025-11-11 | 1.1 | 更新省市区关联,集成 @d8d/geo-areas 包 | Bob (Scrum Master) |
 
 
 ## Dev Agent Record
 ## Dev Agent Record