|
@@ -1,549 +0,0 @@
|
|
|
-# Story 005.001: Infrastructure Packages Split
|
|
|
|
|
-
|
|
|
|
|
-## Status
|
|
|
|
|
-In Progress - All Business Modules Completed
|
|
|
|
|
-
|
|
|
|
|
-## Story
|
|
|
|
|
-**As a** 系统架构师,
|
|
|
|
|
-**I want** 按照模块化架构将 packages/server/src 拆分为独立的模块包,
|
|
|
|
|
-**so that** 实现清晰的模块边界、可复用的基础设施组件,并为后续的业务模块提供标准化的模块化支持
|
|
|
|
|
-
|
|
|
|
|
-## Acceptance Criteria
|
|
|
|
|
-1. shared-types package 创建完成,包含所有通用类型定义
|
|
|
|
|
-2. shared-utils package 创建完成,提供通用的工具函数和数据库连接
|
|
|
|
|
-3. shared-crud package 创建完成,包含通用的 CRUD 服务、控制器和路由模式
|
|
|
|
|
-4. user-module package 创建完成,提供完整的用户管理模块(实体、服务、路由)
|
|
|
|
|
-5. auth-module package 创建完成,提供完整的认证管理模块(实体、服务、路由)
|
|
|
|
|
-6. file-module package 创建完成,提供完整的文件管理模块(实体、服务、路由)
|
|
|
|
|
-7. 所有模块包通过 pnpm workspace 正确配置依赖关系
|
|
|
|
|
-8. 现有 server package 重构为使用新的模块包
|
|
|
|
|
-9. 所有模块包通过单元测试和集成测试
|
|
|
|
|
-10. 现有功能通过回归测试验证无影响
|
|
|
|
|
-11. 所有新包的依赖版本与 packages/server 保持一致
|
|
|
|
|
-12. 依赖关系层次清晰,无循环依赖
|
|
|
|
|
-13. 提供完整的类型定义和 API 文档
|
|
|
|
|
-
|
|
|
|
|
-## Tasks / Subtasks
|
|
|
|
|
-
|
|
|
|
|
-### 第一阶段:共享基础设施包
|
|
|
|
|
-- [x] 创建 shared-types package (AC: 1)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移通用类型定义(GlobalConfig、AuthContextType、EnableStatus、DeleteStatus、DisabledStatus等)
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 编写基础测试(放在 tests/unit/)
|
|
|
|
|
-
|
|
|
|
|
-- [x] 创建 shared-utils package (AC: 2)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移通用工具函数(jwt.util.ts、errorHandler.ts、parseWithAwait.ts等)
|
|
|
|
|
- - [x] 迁移数据库连接配置(data-source.ts)
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 编写单元测试(放在 tests/unit/)
|
|
|
|
|
-
|
|
|
|
|
-- [x] 创建 shared-test-util package (测试基础设施依赖)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移并通用化集成测试数据库工具(基于 user-module/tests/utils/integration-test-db.ts)
|
|
|
|
|
- - [x] 迁移并通用化集成测试断言工具(基于 user-module/tests/utils/integration-test-utils.ts)
|
|
|
|
|
- - [x] 迁移并通用化测试生命周期钩子(基于 user-module/tests/utils/integration-test-db.ts 中的 setupIntegrationDatabaseHooks)
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 编写基础测试
|
|
|
|
|
-
|
|
|
|
|
-- [x] 创建 shared-crud package (AC: 3)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移通用 CRUD 服务模式
|
|
|
|
|
- - [x] 迁移 `GenericCrudService` 类
|
|
|
|
|
- - [x] 迁移 `ConcreteCrudService` 类
|
|
|
|
|
- - [x] 迁移相关类型定义(UserTrackingOptions、RelationFieldOptions、CrudOptions)
|
|
|
|
|
- - [x] 迁移通用 CRUD 路由模式
|
|
|
|
|
- - [x] 迁移 `createCrudRoutes` 函数
|
|
|
|
|
- - [x] 迁移路由配置和验证逻辑
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项
|
|
|
|
|
- - [x] 编写基础测试
|
|
|
|
|
-
|
|
|
|
|
-### 第二阶段:业务模块包
|
|
|
|
|
-- [x] 创建 user-module package (AC: 4)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移用户实体类(UserEntity、Role)
|
|
|
|
|
- - [x] 迁移用户服务类(UserService、RoleService)
|
|
|
|
|
- - [x] 迁移用户相关 Schema 定义
|
|
|
|
|
- - [x] 迁移用户 API 路由
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 编写单元测试和集成测试
|
|
|
|
|
-
|
|
|
|
|
-- [x] 创建 auth-module package (AC: 5)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移认证服务类(AuthService、MiniAuthService)
|
|
|
|
|
- - [x] 迁移认证相关 Schema 定义
|
|
|
|
|
- - [x] 迁移认证 API 路由
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 迁移认证中间件(auth.middleware.ts)
|
|
|
|
|
- - [x] 编写集成测试
|
|
|
|
|
-
|
|
|
|
|
-- [x] 创建 file-module package (AC: 6)
|
|
|
|
|
- - [x] 创建 package.json 配置
|
|
|
|
|
- - [x] 迁移文件实体类(File)
|
|
|
|
|
- - [x] 迁移文件服务类(FileService、MinioService)
|
|
|
|
|
- - [x] 迁移文件相关 Schema 定义
|
|
|
|
|
- - [x] 迁移文件 API 路由
|
|
|
|
|
- - [x] 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - [x] 编写单元测试和集成测试
|
|
|
|
|
-- [x] 配置 pnpm workspace 依赖关系 (AC: 6)
|
|
|
|
|
- - [x] 更新根目录 package.json workspace 配置
|
|
|
|
|
- - [x] 配置各 package 间的依赖关系
|
|
|
|
|
- - [x] 验证依赖解析正确
|
|
|
|
|
-- [x] 重构 server package 依赖 (AC: 7)
|
|
|
|
|
- - [x] 更新 server package.json 依赖
|
|
|
|
|
- - [x] 重构代码导入路径
|
|
|
|
|
- - [x] 移除 server 内部的重复 CRUD 实现
|
|
|
|
|
- - [x] 验证编译通过
|
|
|
|
|
-- [ ] 执行回归测试 (AC: 8, 9)
|
|
|
|
|
- - [ ] 运行所有单元测试(tests/unit/)
|
|
|
|
|
- - [ ] 运行集成测试(tests/integration/)
|
|
|
|
|
- - [ ] 验证现有功能无回归
|
|
|
|
|
-- [ ] 验证依赖版本对齐 (AC: 10)
|
|
|
|
|
- - [ ] 检查所有新包的依赖版本与 packages/server 保持一致
|
|
|
|
|
- - [ ] 验证关键依赖版本(typeorm、hono、zod等)完全一致
|
|
|
|
|
- - [ ] 确保开发依赖版本也保持一致
|
|
|
|
|
-- [ ] 验证依赖层次 (AC: 11)
|
|
|
|
|
- - [ ] 检查 package 依赖关系
|
|
|
|
|
- - [ ] 验证无循环依赖
|
|
|
|
|
- - [ ] 确认依赖层次正确
|
|
|
|
|
-- [ ] 完善文档 (AC: 12)
|
|
|
|
|
- - [ ] 提供类型定义文档
|
|
|
|
|
- - [ ] 编写使用示例
|
|
|
|
|
- - [ ] 更新 API 文档
|
|
|
|
|
-
|
|
|
|
|
-## Dev Notes
|
|
|
|
|
-
|
|
|
|
|
-### 技术架构信息
|
|
|
|
|
-- **项目技术栈**: Node.js 20.19.2 + TypeScript + Hono + TypeORM + PostgreSQL
|
|
|
|
|
-- **包管理**: pnpm workspace
|
|
|
|
|
-- **模块化架构**:
|
|
|
|
|
- - **共享基础设施层**: shared-types → shared-utils → shared-crud
|
|
|
|
|
- - **测试基础设施层**: shared-test-util (依赖 shared-utils)
|
|
|
|
|
- - **业务模块层**: user-module → auth-module → file-module
|
|
|
|
|
- - **应用层**: server
|
|
|
|
|
-- **模块边界**: 每个模块包包含完整的业务功能(实体、服务、路由)
|
|
|
|
|
-
|
|
|
|
|
-### 现有代码结构参考
|
|
|
|
|
-- **当前共享基础设施位置**:
|
|
|
|
|
- - `packages/server/src/share/types.ts` - 共享类型定义
|
|
|
|
|
- - `packages/server/src/data-source.ts` - 数据库连接
|
|
|
|
|
- - `packages/server/src/utils/` - 工具函数
|
|
|
|
|
- - `jwt.util.ts` - JWT工具类
|
|
|
|
|
- - `errorHandler.ts` - 错误处理
|
|
|
|
|
- - `parseWithAwait.ts` - 异步解析工具
|
|
|
|
|
- - `packages/server/src/utils/` - CRUD工具
|
|
|
|
|
- - `generic-crud.service.ts` - 通用CRUD服务基类
|
|
|
|
|
- - `concrete-crud.service.ts` - 具体CRUD服务实现
|
|
|
|
|
- - `generic-crud.routes.ts` - 通用CRUD路由生成器
|
|
|
|
|
-
|
|
|
|
|
-- **当前用户模块位置**: `packages/server/src/modules/users/`
|
|
|
|
|
- - `user.entity.ts` - 用户实体
|
|
|
|
|
- - `role.entity.ts` - 角色实体
|
|
|
|
|
- - `user.service.ts` - 用户服务
|
|
|
|
|
- - `role.service.ts` - 角色服务
|
|
|
|
|
- - `user.schema.ts` - 用户Schema
|
|
|
|
|
- - `role.schema.ts` - 角色Schema
|
|
|
|
|
- - `packages/server/src/api/users/` - 用户API路由
|
|
|
|
|
-
|
|
|
|
|
-- **当前认证模块位置**: `packages/server/src/modules/auth/`
|
|
|
|
|
- - `auth.service.ts` - 认证服务
|
|
|
|
|
- - `mini-auth.service.ts` - 小型认证服务
|
|
|
|
|
- - `packages/server/src/api/auth/` - 认证API路由
|
|
|
|
|
- - `packages/server/src/middleware/auth.middleware.ts` - 认证中间件(待迁移)
|
|
|
|
|
-
|
|
|
|
|
-- **当前文件模块位置**: `packages/server/src/modules/files/`
|
|
|
|
|
- - `file.entity.ts` - 文件实体
|
|
|
|
|
- - `file.service.ts` - 文件服务
|
|
|
|
|
- - `minio.service.ts` - MinIO服务
|
|
|
|
|
- - `file.schema.ts` - 文件Schema
|
|
|
|
|
- - `packages/server/src/api/files/` - 文件API路由
|
|
|
|
|
-
|
|
|
|
|
-### Package 配置要求
|
|
|
|
|
-- 所有 package 使用 TypeScript 编译
|
|
|
|
|
-- 遵循现有的代码风格和命名规范
|
|
|
|
|
-- 提供完整的类型定义导出
|
|
|
|
|
-- 配置适当的构建脚本
|
|
|
|
|
-- **依赖版本对齐**: 所有外部依赖版本必须与 packages/server 保持一致
|
|
|
|
|
-- **TypeScript 配置**: 所有 package 的 tsconfig.json 必须设置 `"composite": true`
|
|
|
|
|
-- **Package 输出配置**: package.json 中的 `"main"`、`"types"` 和 `"exports"` 必须指向 `src` 目录(pnpm workspace 直接引用源码)
|
|
|
|
|
-
|
|
|
|
|
-### 依赖关系设计
|
|
|
|
|
-```json
|
|
|
|
|
-// 共享基础设施层
|
|
|
|
|
-// shared-types package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/shared-types",
|
|
|
|
|
- "dependencies": {}
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// shared-utils package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/shared-utils",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "jsonwebtoken": "^9.0.2",
|
|
|
|
|
- "bcrypt": "^6.0.0",
|
|
|
|
|
- "typeorm": "^0.3.20",
|
|
|
|
|
- "pg": "^8.16.3"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// shared-crud package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/shared-crud",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "typeorm": "^0.3.20",
|
|
|
|
|
- "@hono/zod-openapi": "1.0.2",
|
|
|
|
|
- "zod": "^4.1.12"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// shared-test-util package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/shared-test-util",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "typeorm": "^0.3.20",
|
|
|
|
|
- "vitest": "^3.2.4"
|
|
|
|
|
- },
|
|
|
|
|
- "peerDependencies": {
|
|
|
|
|
- "hono": "^4.8.5"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// 业务模块层
|
|
|
|
|
-// user-module package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/user-module",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "@d8d/shared-crud": "workspace:*",
|
|
|
|
|
- "typeorm": "^0.3.20"
|
|
|
|
|
- },
|
|
|
|
|
- "devDependencies": {
|
|
|
|
|
- "@d8d/shared-test-util": "workspace:*"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// auth-module package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/auth-module",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "@d8d/user-module": "workspace:*",
|
|
|
|
|
- "typeorm": "^0.3.20"
|
|
|
|
|
- },
|
|
|
|
|
- "devDependencies": {
|
|
|
|
|
- "@d8d/shared-test-util": "workspace:*"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// file-module package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/file-module",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "@d8d/shared-crud": "workspace:*",
|
|
|
|
|
- "typeorm": "^0.3.20"
|
|
|
|
|
- },
|
|
|
|
|
- "devDependencies": {
|
|
|
|
|
- "@d8d/shared-test-util": "workspace:*"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// 重构后的 server package.json
|
|
|
|
|
-{
|
|
|
|
|
- "name": "@d8d/server",
|
|
|
|
|
- "dependencies": {
|
|
|
|
|
- "@d8d/shared-types": "workspace:*",
|
|
|
|
|
- "@d8d/shared-utils": "workspace:*",
|
|
|
|
|
- "@d8d/shared-crud": "workspace:*",
|
|
|
|
|
- "@d8d/user-module": "workspace:*",
|
|
|
|
|
- "@d8d/auth-module": "workspace:*",
|
|
|
|
|
- "@d8d/file-module": "workspace:*"
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-```
|
|
|
|
|
-
|
|
|
|
|
-### 需要迁移的通用 CRUD 模式
|
|
|
|
|
-- **基础服务模式**: 提供通用的 CRUD 操作方法
|
|
|
|
|
- - `GenericCrudService` - 通用CRUD服务基类
|
|
|
|
|
- - `ConcreteCrudService` - 具体CRUD服务实现
|
|
|
|
|
- - 用户跟踪功能(UserTrackingOptions)
|
|
|
|
|
- - 关联字段处理(RelationFieldOptions)
|
|
|
|
|
-- **路由模式**: 统一的 API 路由定义和验证
|
|
|
|
|
- - `createCrudRoutes` - 通用CRUD路由生成器
|
|
|
|
|
- - 标准化的CRUD操作路由(列表、创建、获取、更新、删除)
|
|
|
|
|
- - 只读模式支持
|
|
|
|
|
-- **配置模式**: 标准化的CRUD配置
|
|
|
|
|
- - `CrudOptions` - CRUD配置选项类型
|
|
|
|
|
- - 搜索字段配置
|
|
|
|
|
- - 关联关系配置
|
|
|
|
|
- - 中间件配置
|
|
|
|
|
-- **查询模式**: 标准化的查询参数处理和分页
|
|
|
|
|
- - 分页查询
|
|
|
|
|
- - 关键词搜索
|
|
|
|
|
- - 复杂筛选条件
|
|
|
|
|
- - 排序支持
|
|
|
|
|
-
|
|
|
|
|
-### 关键依赖版本对齐要求
|
|
|
|
|
-**必须与 packages/server 完全一致的依赖版本:**
|
|
|
|
|
-- `typeorm`: ^0.3.20
|
|
|
|
|
-- `hono`: ^4.8.5
|
|
|
|
|
-- `zod`: ^4.1.12
|
|
|
|
|
-- `@hono/zod-openapi`: 1.0.2
|
|
|
|
|
-- `jsonwebtoken`: ^9.0.2
|
|
|
|
|
-- `bcrypt`: ^6.0.0
|
|
|
|
|
-- `pg`: ^8.16.3
|
|
|
|
|
-- `axios`: ^1.12.2
|
|
|
|
|
-
|
|
|
|
|
-**开发依赖版本对齐:**
|
|
|
|
|
-- `typescript`: ^5.8.3
|
|
|
|
|
-- `vitest`: ^3.2.4
|
|
|
|
|
-- `@types/*` 相关依赖版本保持一致
|
|
|
|
|
-
|
|
|
|
|
-### 测试标准
|
|
|
|
|
-- **测试框架**: Vitest [Source: architecture/testing-strategy.md#测试金字塔策略]
|
|
|
|
|
-- **测试位置**: 每个 package 的 `tests/` 目录(遵循现有测试策略)[Source: architecture/testing-strategy.md#测试金字塔策略]
|
|
|
|
|
- - `tests/unit/` - 单元测试
|
|
|
|
|
- - `tests/integration/` - 集成测试
|
|
|
|
|
-- **测试要求**: 单元测试覆盖核心功能,集成测试验证包间协作
|
|
|
|
|
-- **测试执行**: `pnpm test` 在每个 package 中运行
|
|
|
|
|
-- **测试覆盖率目标**: [Source: architecture/testing-strategy.md#测试覆盖率标准]
|
|
|
|
|
- - 单元测试: ≥ 80%
|
|
|
|
|
- - 集成测试: ≥ 60%
|
|
|
|
|
- - 关键模块(认证授权、数据库操作、CRUD操作): ≥ 90%
|
|
|
|
|
-
|
|
|
|
|
-### 向后兼容性保证
|
|
|
|
|
-- 现有 API 接口保持不变
|
|
|
|
|
-- 数据库操作逻辑保持一致
|
|
|
|
|
-- 错误响应格式保持不变
|
|
|
|
|
-- 仅重构内部实现,不改变外部行为
|
|
|
|
|
-
|
|
|
|
|
-## Change Log
|
|
|
|
|
-| Date | Version | Description | Author |
|
|
|
|
|
-|------|---------|-------------|--------|
|
|
|
|
|
-| 2025-11-10 | 1.0 | 合并 005.001 和 005.002 故事,创建统一的基础设施包拆分故事 | Bob (Scrum Master) |
|
|
|
|
|
-| 2025-11-10 | 1.1 | 基于实际代码依赖分析调整任务顺序和依赖关系 | Bob (Scrum Master) |
|
|
|
|
|
-| 2025-11-10 | 2.0 | **重大架构调整**:从功能分包改为模块分包架构,按照 users/auth/files 模块组织 | Bob (Scrum Master) |
|
|
|
|
|
-| 2025-11-10 | 2.1 | **shared-crud 包完成**:通用 CRUD 服务模式、路由模式和测试全部完成 | Claude Code |
|
|
|
|
|
-| 2025-11-10 | 2.2 | **user-module 包完成**:用户管理模块(实体、服务、路由、测试)全部完成 | Claude Code |
|
|
|
|
|
-| 2025-11-10 | 2.3 | **shared-test-util 包完成**:测试基础设施包(集成测试工具、断言工具、生命周期钩子)全部完成 | Claude Code |
|
|
|
|
|
-| 2025-11-10 | 2.4 | **file-module 包完成**:文件管理模块(实体、服务、路由、测试)全部完成 | Claude Code |
|
|
|
|
|
-| 2025-11-10 | 2.5 | **server package 依赖重构完成**:成功重构 server 依赖结构,使用新的模块包,验证编译通过 | Claude Code |
|
|
|
|
|
-
|
|
|
|
|
-## Dev Agent Record
|
|
|
|
|
-*此部分由开发代理在实现过程中填写*
|
|
|
|
|
-
|
|
|
|
|
-### Agent Model Used
|
|
|
|
|
-Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
|
|
|
|
|
-
|
|
|
|
|
-### Debug Log References
|
|
|
|
|
-- 修复了数据源测试中的环境变量计算时机问题
|
|
|
|
|
-- 修复了 JWT 测试中的时间计算问题
|
|
|
|
|
-- 添加了缺失的依赖(reflect-metadata, @hono/zod-openapi)
|
|
|
|
|
-
|
|
|
|
|
-### Completion Notes List
|
|
|
|
|
-- ✅ shared-utils package 创建完成
|
|
|
|
|
-- ✅ 所有通用工具函数已迁移
|
|
|
|
|
-- ✅ 数据库连接配置已迁移并重构为通用函数
|
|
|
|
|
-- ✅ TypeScript 配置完成(包含 composite: true)
|
|
|
|
|
-- ✅ 单元测试编写完成并通过
|
|
|
|
|
-- ✅ 依赖版本与 packages/server 保持一致
|
|
|
|
|
-- ✅ 类型检查通过(修复了 EntityTarget 和 JWT expiresIn 类型问题)
|
|
|
|
|
-- ✅ 所有测试通过(19/19 测试)
|
|
|
|
|
-- ✅ shared-crud package 创建完成
|
|
|
|
|
-- ✅ 通用 CRUD 服务模式已迁移(GenericCrudService、ConcreteCrudService)
|
|
|
|
|
-- ✅ 通用 CRUD 路由模式已迁移(createCrudRoutes)
|
|
|
|
|
-- ✅ TypeScript 配置完成(包含 composite: true)
|
|
|
|
|
-- ✅ 单元测试编写完成并通过(23/23 测试)
|
|
|
|
|
-- ✅ 依赖版本与 packages/server 保持一致
|
|
|
|
|
-- ✅ 修复了 AppDataSource 在测试环境中的初始化问题
|
|
|
|
|
-- ✅ user-module package 创建完成
|
|
|
|
|
-- ✅ 用户实体类已迁移(UserEntity、Role)
|
|
|
|
|
-- ✅ 用户服务类已迁移(UserService、RoleService)
|
|
|
|
|
-- ✅ 用户相关 Schema 定义已迁移
|
|
|
|
|
-- ✅ 用户 API 路由已迁移
|
|
|
|
|
-- ✅ TypeScript 配置完成(包含 composite: true)
|
|
|
|
|
-- ✅ 单元测试和集成测试编写完成并通过(54/54 测试)
|
|
|
|
|
-- ✅ 依赖版本与 packages/server 保持一致
|
|
|
|
|
-- ✅ 修复了测试文件中的类型转换问题
|
|
|
|
|
-- ✅ **user-module 路由集成测试完成**
|
|
|
|
|
- - ✅ 使用 `hono/testing` 进行 API 路由测试
|
|
|
|
|
- - ✅ 集成真实的 PostgreSQL 数据库进行测试
|
|
|
|
|
- - ✅ 创建了测试数据工厂和断言工具
|
|
|
|
|
- - ✅ 遵循现有的测试模式和代码风格
|
|
|
|
|
- - ✅ 所有路由测试通过(13/13 路由测试,54/54 总测试)
|
|
|
|
|
-- ✅ **shared-test-util package 创建完成**
|
|
|
|
|
- - ✅ 集成测试数据库工具已通用化(IntegrationTestDatabase)
|
|
|
|
|
- - ✅ 集成测试断言工具已通用化(IntegrationTestAssertions、ApiResponseAssertions)
|
|
|
|
|
- - ✅ 测试生命周期钩子已通用化(setupIntegrationDatabaseHooks)
|
|
|
|
|
- - ✅ TypeScript 配置完成(包含 composite: true)
|
|
|
|
|
- - ✅ 基础测试编写完成并通过(31/31 测试)
|
|
|
|
|
- - ✅ 修复了 expectNotFound 测试中的大小写问题
|
|
|
|
|
- - ✅ 依赖版本与 packages/server 保持一致
|
|
|
|
|
-- ✅ **auth-module 集成测试完成**
|
|
|
|
|
- - ✅ 从 packages/server 迁移了认证集成测试
|
|
|
|
|
- - ✅ 修复了路由中的服务初始化问题(将服务初始化移到路由处理函数内部)
|
|
|
|
|
- - ✅ 创建了统一的路由集合(auth-routes.ts)用于测试
|
|
|
|
|
- - ✅ 添加了 shared-test-util 依赖
|
|
|
|
|
- - ✅ 创建了测试配置文件(vitest.config.ts)
|
|
|
|
|
- - ✅ 暂时注释了 file-module 相关依赖(因为 file-module 尚未创建)
|
|
|
|
|
- - ✅ 所有路由测试已迁移并适配新的包结构
|
|
|
|
|
-- ✅ **认证中间件迁移完成**
|
|
|
|
|
- - ✅ 已将 `packages/server/src/middleware/auth.middleware.ts` 迁移到 auth-module
|
|
|
|
|
- - ✅ 更新了所有路由文件的中间件导入路径
|
|
|
|
|
- - ✅ 添加了中间件导出配置到 package.json
|
|
|
|
|
- - ✅ 所有集成测试通过(16/16 测试)
|
|
|
|
|
-- ✅ **file-module 包创建完成**
|
|
|
|
|
- - ✅ 创建 package.json 配置,依赖版本与 packages/server 保持一致
|
|
|
|
|
- - ✅ 迁移文件实体类(File)
|
|
|
|
|
- - ✅ 迁移文件服务类(FileService、MinioService)
|
|
|
|
|
- - ✅ 迁移文件相关 Schema 定义
|
|
|
|
|
- - ✅ 迁移文件 API 路由(上传策略、多部分上传、文件操作等)
|
|
|
|
|
- - ✅ 配置 TypeScript 编译选项(包含 `"composite": true`)
|
|
|
|
|
- - ✅ 编写单元测试和集成测试
|
|
|
|
|
- - ✅ 修复了路由中的认证中间件配置,添加了401状态码响应
|
|
|
|
|
- - ✅ 修复了文件创建后的uploadUser关联加载问题
|
|
|
|
|
- - ✅ 通过mock MinioService解决了测试环境中的MinIO连接问题
|
|
|
|
|
- - ✅ 修复了无效文件数据验证测试,添加了name字段的min(1)验证规则
|
|
|
|
|
- - ✅ 所有集成测试通过(19/19 测试)
|
|
|
|
|
-
|
|
|
|
|
-- ✅ **server package 依赖重构完成**
|
|
|
|
|
- - ✅ 更新了 server package.json 依赖,添加了所有新模块包
|
|
|
|
|
- - ✅ 重构了 server/src/index.ts 的导入路径,从本地导入改为模块包导入
|
|
|
|
|
- - ✅ 移除了 server 内部的重复 CRUD 实现文件
|
|
|
|
|
- - ✅ 移除了 server 内部的重复模块文件(保留必要的 api.ts 导出)
|
|
|
|
|
- - ✅ 修复了模块包导出问题(auth-module 路由导出、file-module 变量名冲突)
|
|
|
|
|
- - ✅ 修复了 TypeScript 编译错误和类型检查问题
|
|
|
|
|
- - ✅ 验证编译通过,所有模块包无类型错误
|
|
|
|
|
- - ✅ 保持了向后兼容性,保留了 web 和 mini 项目可能用到的 api.ts 导出
|
|
|
|
|
-
|
|
|
|
|
-### File List
|
|
|
|
|
-**新增文件:**
|
|
|
|
|
-- `packages/shared-utils/package.json` - 包配置
|
|
|
|
|
-- `packages/shared-utils/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/shared-utils/vitest.config.ts` - 测试配置
|
|
|
|
|
-- `packages/shared-utils/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/shared-utils/src/utils/jwt.util.ts` - JWT 工具函数
|
|
|
|
|
-- `packages/shared-utils/src/utils/errorHandler.ts` - 错误处理
|
|
|
|
|
-- `packages/shared-utils/src/utils/parseWithAwait.ts` - 异步解析工具
|
|
|
|
|
-- `packages/shared-utils/src/utils/logger.ts` - 日志工具
|
|
|
|
|
-- `packages/shared-utils/src/data-source.ts` - 数据库连接配置
|
|
|
|
|
-- `packages/shared-utils/tests/unit/jwt.util.test.ts` - JWT 测试
|
|
|
|
|
-- `packages/shared-utils/tests/unit/parseWithAwait.test.ts` - 异步解析测试
|
|
|
|
|
-- `packages/shared-utils/tests/unit/data-source.test.ts` - 数据源测试
|
|
|
|
|
-
|
|
|
|
|
-- `packages/shared-crud/package.json` - 包配置
|
|
|
|
|
-- `packages/shared-crud/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/shared-crud/vitest.config.ts` - 测试配置
|
|
|
|
|
-- `packages/shared-crud/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/shared-crud/src/services/index.ts` - 服务导出
|
|
|
|
|
-- `packages/shared-crud/src/services/generic-crud.service.ts` - 通用CRUD服务
|
|
|
|
|
-- `packages/shared-crud/src/services/concrete-crud.service.ts` - 具体CRUD服务
|
|
|
|
|
-- `packages/shared-crud/src/routes/index.ts` - 路由导出
|
|
|
|
|
-- `packages/shared-crud/src/routes/generic-crud.routes.ts` - 通用CRUD路由
|
|
|
|
|
-- `packages/shared-crud/tests/unit/concrete-crud.service.test.ts` - 具体CRUD服务测试
|
|
|
|
|
-
|
|
|
|
|
-**修改文件:**
|
|
|
|
|
-- `packages/shared-types/src/index.ts` - 添加 JWTPayload 类型定义
|
|
|
|
|
-- `tsconfig.json` - 创建根目录 TypeScript 配置
|
|
|
|
|
-
|
|
|
|
|
-**新增文件:**
|
|
|
|
|
-- `packages/user-module/package.json` - 包配置
|
|
|
|
|
-- `packages/user-module/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/user-module/vitest.config.ts` - 测试配置
|
|
|
|
|
-- `packages/user-module/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/user-module/src/entities/index.ts` - 实体导出
|
|
|
|
|
-- `packages/user-module/src/entities/user.entity.ts` - 用户实体
|
|
|
|
|
-- `packages/user-module/src/entities/role.entity.ts` - 角色实体
|
|
|
|
|
-- `packages/user-module/src/services/index.ts` - 服务导出
|
|
|
|
|
-- `packages/user-module/src/services/user.service.ts` - 用户服务
|
|
|
|
|
-- `packages/user-module/src/services/role.service.ts` - 角色服务
|
|
|
|
|
-- `packages/user-module/src/schemas/index.ts` - Schema 导出
|
|
|
|
|
-- `packages/user-module/src/schemas/user.schema.ts` - 用户 Schema
|
|
|
|
|
-- `packages/user-module/src/schemas/role.schema.ts` - 角色 Schema
|
|
|
|
|
-- `packages/user-module/src/routes/index.ts` - 路由导出
|
|
|
|
|
-- `packages/user-module/src/routes/user.routes.ts` - 用户路由
|
|
|
|
|
-- `packages/user-module/src/routes/role.routes.ts` - 角色路由
|
|
|
|
|
-- `packages/user-module/src/routes/custom.routes.ts` - 自定义路由
|
|
|
|
|
-- `packages/user-module/tests/unit/user.service.test.ts` - 用户服务单元测试
|
|
|
|
|
-- `packages/user-module/tests/unit/role.service.test.ts` - 角色服务单元测试
|
|
|
|
|
-- `packages/user-module/tests/integration/user.integration.test.ts` - 用户集成测试
|
|
|
|
|
-- `packages/user-module/tests/integration/role.integration.test.ts` - 角色集成测试
|
|
|
|
|
-- `packages/user-module/tests/integration/user.routes.integration.test.ts` - 用户路由API集成测试
|
|
|
|
|
-- `packages/user-module/tests/utils/integration-test-db.ts` - 集成测试数据库工具
|
|
|
|
|
-- `packages/user-module/tests/utils/integration-test-utils.ts` - 集成测试断言工具
|
|
|
|
|
-
|
|
|
|
|
-**新增文件:**
|
|
|
|
|
-- `packages/auth-module/package.json` - 包配置
|
|
|
|
|
-- `packages/auth-module/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/auth-module/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/auth-module/src/services/index.ts` - 服务导出
|
|
|
|
|
-- `packages/auth-module/src/services/auth.service.ts` - 认证服务
|
|
|
|
|
-- `packages/auth-module/src/services/mini-auth.service.ts` - 小程序认证服务
|
|
|
|
|
-- `packages/auth-module/src/schemas/index.ts` - Schema 导出
|
|
|
|
|
-- `packages/auth-module/src/schemas/auth.schema.ts` - 认证 Schema
|
|
|
|
|
-- `packages/auth-module/src/routes/index.ts` - 路由导出
|
|
|
|
|
-- `packages/auth-module/src/routes/login.route.ts` - 登录路由
|
|
|
|
|
-- `packages/auth-module/src/routes/register.route.ts` - 注册路由
|
|
|
|
|
-- `packages/auth-module/src/routes/mini-login.route.ts` - 小程序登录路由
|
|
|
|
|
-- `packages/auth-module/src/routes/me.route.ts` - 获取用户信息路由
|
|
|
|
|
-- `packages/auth-module/src/routes/update-me.route.ts` - 更新用户信息路由
|
|
|
|
|
-- `packages/auth-module/src/routes/logout.route.ts` - 登出路由
|
|
|
|
|
-- `packages/auth-module/src/routes/sso-verify.route.ts` - SSO验证路由
|
|
|
|
|
-- `packages/auth-module/src/middleware/auth.middleware.ts` - 认证中间件
|
|
|
|
|
-- `packages/auth-module/src/middleware/index.ts` - 中间件导出文件
|
|
|
|
|
-
|
|
|
|
|
-**新增文件:**
|
|
|
|
|
-- `packages/shared-test-util/package.json` - 包配置
|
|
|
|
|
-- `packages/shared-test-util/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/shared-test-util/vitest.config.ts` - 测试配置
|
|
|
|
|
-- `packages/shared-test-util/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/shared-test-util/src/integration-test-db.ts` - 集成测试数据库工具
|
|
|
|
|
-- `packages/shared-test-util/src/integration-test-utils.ts` - 集成测试断言工具
|
|
|
|
|
-- `packages/shared-test-util/src/setup-hooks.ts` - 测试生命周期钩子
|
|
|
|
|
-- `packages/shared-test-util/src/mock-utils.ts` - 模拟工具
|
|
|
|
|
-- `packages/shared-test-util/tests/unit/integration-test-db.test.ts` - 集成测试数据库工具测试
|
|
|
|
|
-- `packages/shared-test-util/tests/unit/integration-test-utils.test.ts` - 集成测试断言工具测试
|
|
|
|
|
-
|
|
|
|
|
-**新增文件:**
|
|
|
|
|
-- `packages/file-module/package.json` - 包配置
|
|
|
|
|
-- `packages/file-module/tsconfig.json` - TypeScript 配置
|
|
|
|
|
-- `packages/file-module/vitest.config.ts` - 测试配置
|
|
|
|
|
-- `packages/file-module/src/index.ts` - 包入口
|
|
|
|
|
-- `packages/file-module/src/entities/index.ts` - 实体导出
|
|
|
|
|
-- `packages/file-module/src/entities/file.entity.ts` - 文件实体
|
|
|
|
|
-- `packages/file-module/src/services/index.ts` - 服务导出
|
|
|
|
|
-- `packages/file-module/src/services/file.service.ts` - 文件服务
|
|
|
|
|
-- `packages/file-module/src/services/minio.service.ts` - MinIO服务
|
|
|
|
|
-- `packages/file-module/src/schemas/index.ts` - Schema 导出
|
|
|
|
|
-- `packages/file-module/src/schemas/file.schema.ts` - 文件 Schema
|
|
|
|
|
-- `packages/file-module/src/routes/index.ts` - 路由导出
|
|
|
|
|
-- `packages/file-module/src/routes/upload-policy/post.ts` - 上传策略路由
|
|
|
|
|
-- `packages/file-module/src/routes/multipart-policy/post.ts` - 多部分上传策略路由
|
|
|
|
|
-- `packages/file-module/src/routes/multipart-complete/post.ts` - 完成多部分上传路由
|
|
|
|
|
-- `packages/file-module/src/routes/[id]/get.ts` - 获取文件详情路由
|
|
|
|
|
-- `packages/file-module/src/routes/[id]/get-url.ts` - 获取文件URL路由
|
|
|
|
|
-- `packages/file-module/src/routes/[id]/download.ts` - 文件下载路由
|
|
|
|
|
-- `packages/file-module/src/routes/[id]/delete.ts` - 删除文件路由
|
|
|
|
|
-- `packages/file-module/tests/integration/file.routes.integration.test.ts` - 文件路由API集成测试
|
|
|
|
|
-- `packages/file-module/tests/utils/integration-test-db.ts` - 集成测试数据库工具
|
|
|
|
|
-- `packages/file-module/tests/utils/integration-test-utils.ts` - 集成测试断言工具
|
|
|
|
|
-
|
|
|
|
|
-**依赖关系:**
|
|
|
|
|
-- shared-utils 依赖 shared-types
|
|
|
|
|
-- shared-crud 依赖 shared-types 和 shared-utils
|
|
|
|
|
-- shared-test-util 依赖 shared-utils
|
|
|
|
|
-- user-module 依赖 shared-types、shared-utils 和 shared-crud
|
|
|
|
|
-- auth-module 依赖 shared-types、shared-utils 和 user-module
|
|
|
|
|
-- file-module 依赖 shared-types、shared-utils 和 shared-crud
|
|
|
|
|
-- auth-module 提供认证中间件供其他模块使用
|
|
|
|
|
-- 所有业务模块的测试依赖 shared-test-util
|
|
|
|
|
-- 所有外部依赖版本与 packages/server 完全一致
|
|
|