# 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. 现有功能通过回归测试验证无影响
9. 所有新包的依赖版本与 packages/server 保持一致

## Tasks / Subtasks
- [ ] 创建 shared-types package (AC: 1)
  - [ ] 创建 package.json 配置
  - [ ] 迁移通用类型定义（ApiResponse、Pagination、QueryParams等）
  - [ ] 配置 TypeScript 编译选项（包含 `"composite": true`）
  - [ ] 编写基础测试（放在 tests/unit/）
- [ ] 创建 database-core package (AC: 2)
  - [ ] 创建 package.json 配置
  - [ ] 迁移数据库连接配置和基础实体
  - [ ] 提供数据库连接管理服务
  - [ ] 配置 TypeScript 编译选项（包含 `"composite": true`）
  - [ ] 编写单元测试（放在 tests/unit/）
- [ ] 创建 auth-core package (AC: 3)
  - [ ] 创建 package.json 配置
  - [ ] 迁移认证相关的核心服务
  - [ ] 提供 JWT 令牌管理
  - [ ] 配置 TypeScript 编译选项（包含 `"composite": true`）
  - [ ] 编写单元测试（放在 tests/unit/）
- [ ] 创建 utils-core package (AC: 4)
  - [ ] 创建 package.json 配置
  - [ ] 迁移通用工具函数
  - [ ] 提供常用工具类
  - [ ] 配置 TypeScript 编译选项（包含 `"composite": true`）
  - [ ] 编写单元测试（放在 tests/unit/）
- [ ] 配置 pnpm workspace 依赖关系 (AC: 5)
  - [ ] 更新根目录 package.json workspace 配置
  - [ ] 配置各 package 间的依赖关系
  - [ ] 验证依赖解析正确
- [ ] 重构 server package 依赖 (AC: 6)
  - [ ] 更新 server package.json 依赖
  - [ ] 重构代码导入路径
  - [ ] 验证编译通过
- [ ] 执行回归测试 (AC: 7, 8)
  - [ ] 运行所有单元测试（tests/unit/）
  - [ ] 运行集成测试（tests/integration/）
  - [ ] 验证现有功能无回归
- [ ] 验证依赖版本对齐 (AC: 9)
  - [ ] 检查所有新包的依赖版本与 packages/server 保持一致
  - [ ] 验证关键依赖版本（typeorm、hono、zod等）完全一致
  - [ ] 确保开发依赖版本也保持一致

## 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 编译
- 遵循现有的代码风格和命名规范
- 提供完整的类型定义导出
- 配置适当的构建脚本
- **依赖版本对齐**: 所有外部依赖版本必须与 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": {}
}

// 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:*"
  }
}
```

### 关键依赖版本对齐要求
**必须与 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
- **测试位置**: 每个 package 的 `tests/` 目录（遵循现有测试策略）
  - `tests/unit/` - 单元测试
  - `tests/integration/` - 集成测试
- **测试要求**: 单元测试覆盖核心功能，集成测试验证包间协作
- **测试执行**: `pnpm test` 在每个 package 中运行

## Change Log
| Date | Version | Description | Author |
|------|---------|-------------|--------|
| 2025-11-10 | 1.0 | 初始创建故事文档 | Bob (Scrum Master) |
| 2025-11-10 | 1.1 | 添加依赖版本对齐要求 | Bob (Scrum Master) |
| 2025-11-10 | 1.2 | 添加 TypeScript composite 配置要求 | Bob (Scrum Master) |
| 2025-11-10 | 1.3 | 修正 Package 输出配置指向 src 目录 | Bob (Scrum Master) |

## Dev Agent Record
*此部分由开发代理在实现过程中填写*

### Agent Model Used
{{agent_model_name_version}}

### Debug Log References

### Completion Notes List

### File List