Parcourir la source

📝 docs(stories): add infrastructure package split stories

- 添加 005.001.infrastructure-core-packages.md,描述基础设施核心包拆分计划
- 添加 005.002.crud-infrastructure-package.md,描述CRUD基础设施包拆分计划
- 定义shared-types、database-core、auth-core、utils-core和crud-core包的创建目标
- 明确各包的依赖关系、任务拆分和验收标准
yourname il y a 4 semaines
Parent
commit
1309d15eb5

+ 137 - 0
docs/stories/005.001.infrastructure-core-packages.md

@@ -0,0 +1,137 @@
+# Story 005.001: Infrastructure Core Packages
+
+## Status
+Draft
+
+## Story
+**As a** 系统架构师,
+**I want** 将共享类型、数据库核心、认证核心、工具核心从 packages/server/src 拆分为独立的基础设施包,
+**so that** 为后续的业务模块提供标准化的基础设施支持,并实现清晰的依赖层次结构
+
+## Acceptance Criteria
+1. shared-types package 创建完成,包含所有通用类型定义
+2. database-core package 创建完成,提供数据库连接和基础实体管理
+3. auth-core package 创建完成,提供认证相关的核心服务
+4. utils-core package 创建完成,提供通用的工具函数
+5. 所有基础设施包通过 pnpm workspace 正确配置依赖关系
+6. 现有 server package 重构为使用新的基础设施包
+7. 所有基础设施包通过单元测试和集成测试
+8. 现有功能通过回归测试验证无影响
+
+## Tasks / Subtasks
+- [ ] 创建 shared-types package (AC: 1)
+  - [ ] 创建 package.json 配置
+  - [ ] 迁移通用类型定义(ApiResponse、Pagination、QueryParams等)
+  - [ ] 配置 TypeScript 编译选项
+  - [ ] 编写基础测试(放在 tests/unit/)
+- [ ] 创建 database-core package (AC: 2)
+  - [ ] 创建 package.json 配置
+  - [ ] 迁移数据库连接配置和基础实体
+  - [ ] 提供数据库连接管理服务
+  - [ ] 配置 TypeScript 编译选项
+  - [ ] 编写单元测试(放在 tests/unit/)
+- [ ] 创建 auth-core package (AC: 3)
+  - [ ] 创建 package.json 配置
+  - [ ] 迁移认证相关的核心服务
+  - [ ] 提供 JWT 令牌管理
+  - [ ] 配置 TypeScript 编译选项
+  - [ ] 编写单元测试(放在 tests/unit/)
+- [ ] 创建 utils-core package (AC: 4)
+  - [ ] 创建 package.json 配置
+  - [ ] 迁移通用工具函数
+  - [ ] 提供常用工具类
+  - [ ] 配置 TypeScript 编译选项
+  - [ ] 编写单元测试(放在 tests/unit/)
+- [ ] 配置 pnpm workspace 依赖关系 (AC: 5)
+  - [ ] 更新根目录 package.json workspace 配置
+  - [ ] 配置各 package 间的依赖关系
+  - [ ] 验证依赖解析正确
+- [ ] 重构 server package 依赖 (AC: 6)
+  - [ ] 更新 server package.json 依赖
+  - [ ] 重构代码导入路径
+  - [ ] 验证编译通过
+- [ ] 执行回归测试 (AC: 7, 8)
+  - [ ] 运行所有单元测试(tests/unit/)
+  - [ ] 运行集成测试(tests/integration/)
+  - [ ] 验证现有功能无回归
+
+## Dev Notes
+
+### 技术架构信息
+- **项目技术栈**: Node.js 20.19.2 + TypeScript + Hono + TypeORM + PostgreSQL
+- **包管理**: pnpm workspace
+- **依赖层次**: shared-types → database-core/auth-core/utils-core → crud-core → 业务模块 → server
+
+### 现有代码结构参考
+- **当前共享类型位置**: packages/server/src/types/
+- **当前数据库核心**: packages/server/src/database/
+- **当前认证核心**: packages/server/src/auth/
+- **当前工具函数**: packages/server/src/utils/
+
+### Package 配置要求
+- 所有 package 使用 TypeScript 编译
+- 遵循现有的代码风格和命名规范
+- 提供完整的类型定义导出
+- 配置适当的构建脚本
+
+### 依赖关系设计
+```json
+// shared-types package.json
+{
+  "name": "@d8d/shared-types",
+  "dependencies": {}
+}
+
+// database-core package.json
+{
+  "name": "@d8d/database-core",
+  "dependencies": {
+    "@d8d/shared-types": "workspace:*",
+    "typeorm": "^0.3.20",
+    "pg": "^8.16.3"
+  }
+}
+
+// auth-core package.json
+{
+  "name": "@d8d/auth-core",
+  "dependencies": {
+    "@d8d/shared-types": "workspace:*",
+    "jsonwebtoken": "^9.0.2",
+    "bcrypt": "^6.0.0"
+  }
+}
+
+// utils-core package.json
+{
+  "name": "@d8d/utils-core",
+  "dependencies": {
+    "@d8d/shared-types": "workspace:*"
+  }
+}
+```
+
+### 测试标准
+- **测试框架**: Vitest
+- **测试位置**: 每个 package 的 `tests/` 目录(遵循现有测试策略)
+  - `tests/unit/` - 单元测试
+  - `tests/integration/` - 集成测试
+- **测试要求**: 单元测试覆盖核心功能,集成测试验证包间协作
+- **测试执行**: `pnpm test` 在每个 package 中运行
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-11-10 | 1.0 | 初始创建故事文档 | Bob (Scrum Master) |
+
+## Dev Agent Record
+*此部分由开发代理在实现过程中填写*
+
+### Agent Model Used
+{{agent_model_name_version}}
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List

+ 143 - 0
docs/stories/005.002.crud-infrastructure-package.md

@@ -0,0 +1,143 @@
+# Story 005.002: CRUD Infrastructure Package
+
+## Status
+Draft
+
+## Story
+**As a** 系统架构师,
+**I want** 将 CRUD 核心基础设施从 packages/server/src 拆分为独立的 crud-core package 并重构 server 依赖关系,
+**so that** 为业务模块提供标准化的 CRUD 操作支持,并建立清晰的依赖层次结构
+
+## Acceptance Criteria
+1. crud-core package 创建完成,包含通用的 CRUD 服务、控制器和路由模式
+2. crud-core package 正确依赖基础设施包(shared-types、database-core等)
+3. server package 重构为使用 crud-core package 替代内部 CRUD 实现
+4. 所有 CRUD 相关的通用模式迁移到 crud-core package
+5. crud-core package 通过单元测试和集成测试
+6. 现有 CRUD 功能通过回归测试验证无影响
+7. 依赖关系层次清晰,无循环依赖
+8. 提供完整的类型定义和 API 文档
+
+## Tasks / Subtasks
+- [ ] 创建 crud-core package (AC: 1)
+  - [ ] 创建 package.json 配置
+  - [ ] 迁移通用 CRUD 服务模式
+  - [ ] 迁移通用 CRUD 控制器模式
+  - [ ] 迁移通用 CRUD 路由模式
+  - [ ] 配置 TypeScript 编译选项
+  - [ ] 编写基础测试
+- [ ] 配置依赖关系 (AC: 2)
+  - [ ] 配置 crud-core 依赖基础设施包
+  - [ ] 验证依赖解析正确
+  - [ ] 确保无循环依赖
+- [ ] 重构 server package (AC: 3)
+  - [ ] 更新 server package.json 依赖
+  - [ ] 重构代码导入路径使用 crud-core
+  - [ ] 移除 server 内部的重复 CRUD 实现
+  - [ ] 验证编译通过
+- [ ] 迁移通用 CRUD 模式 (AC: 4)
+  - [ ] 迁移基础实体服务
+  - [ ] 迁移通用控制器逻辑
+  - [ ] 迁移标准路由模式
+  - [ ] 迁移错误处理模式
+- [ ] 编写测试 (AC: 5)
+  - [ ] 编写 crud-core 单元测试(放在 tests/unit/)
+  - [ ] 编写集成测试验证包间协作(放在 tests/integration/)
+  - [ ] 验证所有测试通过
+- [ ] 执行回归测试 (AC: 6)
+  - [ ] 运行所有现有 CRUD 相关测试(tests/unit/ 和 tests/integration/)
+  - [ ] 验证现有 API 功能无影响
+  - [ ] 验证数据操作正确性
+- [ ] 验证依赖层次 (AC: 7)
+  - [ ] 检查 package 依赖关系
+  - [ ] 验证无循环依赖
+  - [ ] 确认依赖层次正确
+- [ ] 完善文档 (AC: 8)
+  - [ ] 提供类型定义文档
+  - [ ] 编写使用示例
+  - [ ] 更新 API 文档
+
+## Dev Notes
+
+### 技术架构信息
+- **项目技术栈**: Node.js 20.19.2 + TypeScript + Hono + TypeORM + PostgreSQL
+- **包管理**: pnpm workspace
+- **依赖层次**: shared-types → database-core → crud-core → 业务模块 → server
+
+### 现有代码结构参考
+- **当前 CRUD 服务位置**: packages/server/src/services/
+- **当前 CRUD 控制器**: packages/server/src/controllers/
+- **当前 CRUD 路由**: packages/server/src/routes/
+- **需要迁移的通用模式**: 基础实体服务、通用控制器逻辑、标准路由模式
+
+### Package 配置要求
+```json
+// crud-core package.json
+{
+  "name": "@d8d/crud-core",
+  "dependencies": {
+    "@d8d/shared-types": "workspace:*",
+    "@d8d/database-core": "workspace:*",
+    "typeorm": "^0.3.20",
+    "@hono/zod-openapi": "1.0.2",
+    "zod": "^4.1.12"
+  }
+}
+
+// 重构后的 server package.json
+{
+  "name": "@d8d/server",
+  "dependencies": {
+    "@d8d/shared-types": "workspace:*",
+    "@d8d/crud-core": "workspace:*",
+    "@d8d/database-core": "workspace:*",
+    "@d8d/auth-core": "workspace:*",
+    "@d8d/utils-core": "workspace:*"
+  }
+}
+```
+
+### 需要迁移的通用 CRUD 模式
+- **基础服务模式**: 提供通用的 CRUD 操作方法
+- **控制器模式**: 标准化的控制器结构和错误处理
+- **路由模式**: 统一的 API 路由定义和验证
+- **DTO 模式**: 通用的数据转换和验证
+- **查询模式**: 标准化的查询参数处理和分页
+
+### 集成点注意事项
+- **数据库连接**: 使用 database-core 提供的连接管理
+- **类型定义**: 依赖 shared-types 的基础类型
+- **认证**: 后续业务模块可选择性集成 auth-core
+- **错误处理**: 保持现有的错误处理模式
+
+### 测试标准
+- **测试框架**: Vitest
+- **测试位置**: crud-core 的 `tests/` 目录(遵循现有测试策略)
+  - `tests/unit/` - 单元测试
+  - `tests/integration/` - 集成测试
+- **测试类型**: 单元测试 + 集成测试
+- **测试重点**: CRUD 操作正确性、类型安全、错误处理
+- **回归测试**: 验证现有 CRUD API 功能无影响
+
+### 向后兼容性保证
+- 现有 API 接口保持不变
+- 数据库操作逻辑保持一致
+- 错误响应格式保持不变
+- 仅重构内部实现,不改变外部行为
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-11-10 | 1.0 | 初始创建故事文档 | Bob (Scrum Master) |
+
+## Dev Agent Record
+*此部分由开发代理在实现过程中填写*
+
+### Agent Model Used
+{{agent_model_name_version}}
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List