|
|
@@ -1,7 +1,7 @@
|
|
|
# Story 005.002: Geo Areas Module
|
|
|
|
|
|
## Status
|
|
|
-Draft
|
|
|
+Ready for Review
|
|
|
|
|
|
## Story
|
|
|
**As a** 系统架构师,
|
|
|
@@ -23,56 +23,56 @@ Draft
|
|
|
## Tasks / Subtasks
|
|
|
|
|
|
### 第一阶段:包基础设施创建
|
|
|
-- [ ] 创建 geo-areas package 目录结构 (AC: 1)
|
|
|
- - [ ] 创建 `packages/geo-areas/package.json` 配置
|
|
|
- - [ ] 创建 `packages/geo-areas/tsconfig.json` TypeScript 配置
|
|
|
- - [ ] 创建 `packages/geo-areas/vitest.config.ts` 测试配置
|
|
|
- - [ ] 创建 `packages/geo-areas/src/index.ts` 包入口
|
|
|
+- [x] 创建 geo-areas package 目录结构 (AC: 1)
|
|
|
+ - [x] 创建 `packages/geo-areas/package.json` 配置
|
|
|
+ - [x] 创建 `packages/geo-areas/tsconfig.json` TypeScript 配置
|
|
|
+ - [x] 创建 `packages/geo-areas/vitest.config.ts` 测试配置
|
|
|
+ - [x] 创建 `packages/geo-areas/src/index.ts` 包入口
|
|
|
|
|
|
### 第二阶段:实体和服务迁移
|
|
|
-- [ ] 迁移地区实体类 (AC: 2)
|
|
|
- - [ ] 迁移 `AreaEntity` 实体类
|
|
|
- - [ ] 迁移 `AreaLevel` 枚举定义
|
|
|
- - [ ] 更新导入路径和依赖
|
|
|
-- [ ] 迁移地区服务类 (AC: 3)
|
|
|
- - [ ] 迁移 `AreaService` 服务类
|
|
|
- - [ ] 重构数据库连接使用 shared-utils
|
|
|
- - [ ] 更新服务依赖关系
|
|
|
+- [x] 迁移地区实体类 (AC: 2)
|
|
|
+ - [x] 迁移 `AreaEntity` 实体类
|
|
|
+ - [x] 迁移 `AreaLevel` 枚举定义
|
|
|
+ - [x] 更新导入路径和依赖
|
|
|
+- [x] 迁移地区服务类 (AC: 3)
|
|
|
+ - [x] 迁移 `AreaService` 服务类
|
|
|
+ - [x] 重构数据库连接使用 shared-utils
|
|
|
+ - [x] 更新服务依赖关系
|
|
|
|
|
|
### 第三阶段:Schema 和验证迁移
|
|
|
-- [ ] 迁移地区 Schema 定义 (AC: 4)
|
|
|
- - [ ] 迁移所有 Zod Schema 定义
|
|
|
- - [ ] 迁移输入/输出类型定义
|
|
|
- - [ ] 更新 Schema 导入路径
|
|
|
+- [x] 迁移地区 Schema 定义 (AC: 4)
|
|
|
+ - [x] 迁移所有 Zod Schema 定义
|
|
|
+ - [x] 迁移输入/输出类型定义
|
|
|
+ - [x] 更新 Schema 导入路径
|
|
|
|
|
|
### 第四阶段:API 路由迁移
|
|
|
-- [ ] 迁移公共地区 API 路由 (AC: 5)
|
|
|
- - [ ] 迁移 `/api/areas` 路由 (省份、城市、区县查询)
|
|
|
- - [ ] 更新路由导入和服务依赖
|
|
|
-- [ ] 迁移管理地区 API 路由 (AC: 5)
|
|
|
- - [ ] 迁移 `/api/admin/areas` 路由 (CRUD 操作)
|
|
|
- - [ ] 迁移树形结构查询路由
|
|
|
- - [ ] 更新认证中间件依赖
|
|
|
+- [x] 迁移公共地区 API 路由 (AC: 5)
|
|
|
+ - [x] 迁移 `/api/areas` 路由 (省份、城市、区县查询)
|
|
|
+ - [x] 更新路由导入和服务依赖
|
|
|
+- [x] 迁移管理地区 API 路由 (AC: 5)
|
|
|
+ - [x] 迁移 `/api/admin/areas` 路由 (CRUD 操作)
|
|
|
+ - [x] 迁移树形结构查询路由
|
|
|
+ - [x] 更新认证中间件依赖
|
|
|
|
|
|
### 第五阶段:测试和验证
|
|
|
-- [ ] 迁移现有集成测试 (AC: 7)
|
|
|
- - [ ] 迁移 `mini-auth-demo/web/tests/integration/server/api/areas/index.test.ts`
|
|
|
- - [ ] 使用 shared-test-util 测试工具
|
|
|
- - [ ] 更新测试导入路径和依赖
|
|
|
- - [ ] 验证迁移后的测试通过
|
|
|
-- [ ] 验证依赖版本对齐 (AC: 9)
|
|
|
- - [ ] 检查所有外部依赖版本与 packages/server 保持一致
|
|
|
- - [ ] 验证关键依赖版本完全一致
|
|
|
+- [x] 迁移现有集成测试 (AC: 7)
|
|
|
+ - [x] 迁移 `mini-auth-demo/web/tests/integration/server/api/areas/index.test.ts`
|
|
|
+ - [x] 使用 shared-test-util 测试工具
|
|
|
+ - [x] 更新测试导入路径和依赖
|
|
|
+ - [x] 验证迁移后的测试通过
|
|
|
+- [x] 验证依赖版本对齐 (AC: 9)
|
|
|
+ - [x] 检查所有外部依赖版本与 packages/server 保持一致
|
|
|
+ - [x] 验证关键依赖版本完全一致
|
|
|
|
|
|
### 第六阶段:集成和验证
|
|
|
-- [ ] 配置 pnpm workspace 依赖关系 (AC: 8)
|
|
|
- - [ ] 更新根目录 package.json workspace 配置
|
|
|
- - [ ] 配置 geo-areas package 依赖关系
|
|
|
- - [ ] 验证依赖解析正确
|
|
|
-- [ ] 执行回归测试 (AC: 10)
|
|
|
- - [ ] 运行所有单元测试
|
|
|
- - [ ] 运行集成测试
|
|
|
- - [ ] 验证现有功能无回归
|
|
|
+- [x] 配置 pnpm workspace 依赖关系 (AC: 8)
|
|
|
+ - [x] 更新根目录 package.json workspace 配置
|
|
|
+ - [x] 配置 geo-areas package 依赖关系
|
|
|
+ - [x] 验证依赖解析正确
|
|
|
+- [x] 执行回归测试 (AC: 10)
|
|
|
+ - [x] 运行所有单元测试
|
|
|
+ - [x] 运行集成测试
|
|
|
+ - [x] 验证现有功能无回归
|
|
|
|
|
|
## Dev Notes
|
|
|
|
|
|
@@ -180,12 +180,38 @@ Draft
|
|
|
*此部分由开发代理在实现过程中填写*
|
|
|
|
|
|
### Agent Model Used
|
|
|
+- Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
|
|
|
|
|
|
### Debug Log References
|
|
|
+- 成功创建 geo-areas 包完整结构
|
|
|
+- 验证所有依赖版本与 packages/server 完全一致
|
|
|
+- 集成测试全部通过 (9/9)
|
|
|
+- 重构 AreaService 使用依赖注入模式
|
|
|
|
|
|
### Completion Notes List
|
|
|
+1. ✅ 创建完整的 geo-areas 包目录结构
|
|
|
+2. ✅ 迁移 AreaEntity 和 AreaLevel 枚举定义
|
|
|
+3. ✅ 迁移 AreaService 服务类,使用依赖注入
|
|
|
+4. ✅ 迁移所有 Zod Schema 定义和验证规则
|
|
|
+5. ✅ 迁移公共地区 API 路由 (/api/areas)
|
|
|
+6. ✅ 迁移管理地区 API 路由 (/api/admin/areas)
|
|
|
+7. ✅ 配置 TypeScript 编译选项 (包含 `"composite": true`)
|
|
|
+8. ✅ 迁移集成测试文件,使用 shared-test-util 包
|
|
|
+9. ✅ 验证依赖版本完全对齐
|
|
|
+10. ✅ 所有测试通过,功能验证完整
|
|
|
|
|
|
### File List
|
|
|
+- `packages/geo-areas/package.json` - 包配置
|
|
|
+- `packages/geo-areas/tsconfig.json` - TypeScript 配置
|
|
|
+- `packages/geo-areas/vitest.config.ts` - 测试配置
|
|
|
+- `packages/geo-areas/src/index.ts` - 包入口
|
|
|
+- `packages/geo-areas/src/modules/areas/area.entity.ts` - 地区实体
|
|
|
+- `packages/geo-areas/src/modules/areas/area.service.ts` - 地区服务
|
|
|
+- `packages/geo-areas/src/modules/areas/area.schema.ts` - 地区 Schema
|
|
|
+- `packages/geo-areas/src/api/areas/index.ts` - 公共地区 API
|
|
|
+- `packages/geo-areas/src/api/admin/areas/index.ts` - 管理地区 API
|
|
|
+- `packages/geo-areas/tests/integration/areas.integration.test.ts` - 集成测试
|
|
|
+- `packages/geo-areas/tests/utils/test-data-factory.ts` - 测试数据工厂
|
|
|
|
|
|
## QA Results
|
|
|
*此部分由 QA 代理在完成故事实现后填写*
|