# Server测试迁移优化 - Brownfield Epic

## Epic Goal
将当前web目录中对packages/server的测试迁移到packages/server目录中，实现更好的代码组织和测试架构，使packages/server成为一个真正独立的、可测试的库包。

## Epic Description

### 现有系统上下文
- **当前测试结构**：所有测试集中在web/tests目录下，包括对packages/server的单元测试和集成测试
- **packages/server现状**：纯库包，没有任何测试配置和测试文件
- **技术栈**：Node.js + TypeScript + Hono + TypeORM + PostgreSQL + Vitest
- **集成点**：数据库连接、服务层、工具类、API路由

### 迁移详情
- **迁移内容**：将web/tests中针对packages/server的单元测试和部分集成测试迁移到packages/server目录
- **保留内容**：前端组件测试、E2E测试、需要web特定环境的集成测试
- **目标架构**：
  - packages/server成为独立的可测试库包
  - web目录专注于前端和端到端测试
  - 测试工具类在适当位置共享

### 迁移优先级
1. **高优先级**：服务层单元测试（UserService、FileService、MinioService等）
2. **中优先级**：工具类单元测试（backup、restore、jwt等）
3. **低优先级**：集成测试（需要评估依赖关系）

## Stories

1. **Story 005.001**: 为packages/server配置测试环境
   - 在packages/server/package.json中添加测试脚本
   - 创建packages/server/vitest.config.ts配置文件
   - 建立packages/server/tests目录结构
   - 配置测试依赖和工具

2. **Story 005.002**: 迁移服务层单元测试
   - 迁移UserService相关测试
   - 迁移FileService相关测试
   - 迁移MinioService相关测试
   - 迁移AuthService相关测试
   - 验证迁移后测试正常运行

3. **Story 005.003**: 迁移工具类单元测试
   - 迁移backup工具测试
   - 迁移restore工具测试
   - 迁移jwt工具测试
   - 迁移其他工具类测试
   - 验证迁移后测试正常运行

4. **Story 005.004**: 评估和迁移集成测试
   - 分析集成测试对web环境的依赖
   - 迁移适合的集成测试到packages/server
   - 更新测试工具类的共享使用
   - 验证集成测试正常运行

5. **Story 005.005**: 清理和优化
   - 清理web目录中已迁移的测试文件
   - 更新CI/CD配置支持新的测试结构
   - 更新文档说明新的测试架构
   - 验证整体测试覆盖率

## 兼容性要求

- [ ] 现有API保持不变
- [ ] 测试功能对等（迁移前后测试覆盖相同功能）
- [ ] 现有测试继续正常工作
- [ ] 性能影响最小
- [ ] CI/CD流水线支持新的测试结构

## 风险缓解

- **主要风险**：测试迁移导致测试失败或遗漏
- **缓解措施**：逐步迁移，保持新旧测试并行运行一段时间
- **次要风险**：测试工具类依赖关系复杂
- **缓解措施**：仔细分析依赖，创建适当的共享机制
- **回滚计划**：恢复原有测试文件，删除packages/server中的测试配置

## 完成定义

- [ ] Story 005.001完成且验收标准满足
- [ ] 服务层单元测试成功迁移
- [ ] 工具类单元测试成功迁移
- [ ] 集成测试评估完成
- [ ] 测试通过率100%
- [ ] CI/CD流水线支持新的测试结构

## 验证检查清单

### 范围验证
- [ ] Epic目标清晰可实现
- [ ] 故事范围适当
- [ ] 迁移策略合理
- [ ] 集成复杂度可控

### 风险评估
- [ ] 对现有系统风险低
- [ ] 回滚计划可行
- [ ] 测试覆盖无遗漏
- [ ] 团队具备迁移知识

### 完整性检查
- [ ] Epic目标清晰可实现
- [ ] 故事范围适当
- [ ] 成功标准可衡量
- [ ] 依赖项已识别