In Progress - All Business Modules Completed
As a 系统架构师, I want 按照模块化架构将 packages/server/src 拆分为独立的模块包, so that 实现清晰的模块边界、可复用的基础设施组件,并为后续的业务模块提供标准化的模块化支持
[x] 创建 shared-types package (AC: 1)
"composite": true)[x] 创建 shared-utils package (AC: 2)
"composite": true)[x] 创建 shared-test-util package (测试基础设施依赖)
"composite": true)[x] 创建 shared-crud package (AC: 3)
GenericCrudService 类ConcreteCrudService 类createCrudRoutes 函数[x] 创建 user-module package (AC: 4)
"composite": true)[x] 创建 auth-module package (AC: 5)
"composite": true)[x] 创建 file-module package (AC: 6)
"composite": true)[x] 配置 pnpm workspace 依赖关系 (AC: 6)
[x] 重构 server package 依赖 (AC: 7)
[ ] 执行回归测试 (AC: 8, 9)
[ ] 验证依赖版本对齐 (AC: 10)
[ ] 验证依赖层次 (AC: 11)
[ ] 完善文档 (AC: 12)
当前共享基础设施位置:
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 - 用户Schemarole.schema.ts - 角色Schemapackages/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 - 文件Schemapackages/server/src/api/files/ - 文件API路由"composite": true"main"、"types" 和 "exports" 必须指向 src 目录(pnpm workspace 直接引用源码)// 共享基础设施层
// 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:*"
}
}
GenericCrudService - 通用CRUD服务基类ConcreteCrudService - 具体CRUD服务实现createCrudRoutes - 通用CRUD路由生成器CrudOptions - CRUD配置选项类型必须与 packages/server 完全一致的依赖版本:
typeorm: ^0.3.20hono: ^4.8.5zod: ^4.1.12@hono/zod-openapi: 1.0.2jsonwebtoken: ^9.0.2bcrypt: ^6.0.0pg: ^8.16.3axios: ^1.12.2开发依赖版本对齐:
typescript: ^5.8.3vitest: ^3.2.4@types/* 相关依赖版本保持一致tests/ 目录(遵循现有测试策略)[Source: architecture/testing-strategy.md#测试金字塔策略]
tests/unit/ - 单元测试tests/integration/ - 集成测试pnpm test 在每个 package 中运行| 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 |
此部分由开发代理在实现过程中填写
Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
hono/testing 进行 API 路由测试packages/server/src/middleware/auth.middleware.ts 迁移到 auth-module✅ file-module 包创建完成
"composite": true)✅ server package 依赖重构完成
新增文件:
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 - 用户 Schemapackages/user-module/src/schemas/role.schema.ts - 角色 Schemapackages/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 - 认证 Schemapackages/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 - 文件 Schemapackages/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 - 集成测试断言工具依赖关系: