# Story 008.001: Server多租户包替换和集成

## Status
Ready for Review

## Story
**As a** 系统管理员，
**I want** 将server从单租户包改为多租户包，
**so that** 系统支持多租户数据隔离和租户管理功能

## Acceptance Criteria
1. 在server的index.ts文件中，将单租户包替换为多租户包（如`@d8d/user-module` → `@d8d/user-module-mt`）
2. 包括包导入、实体初始化和路由注册
3. 多租户模块包直接依赖多租户认证模块的认证中间件
4. 更新server包测试中的包导入路径
5. 验证路由配置正确，API接口可访问，通过集成测试验证

## Tasks / Subtasks
- [x] 检查多租户包是否存在，确认包结构和版本
- [x] 修改packages/server/src/index.ts文件中的包导入
  - [x] 将`@d8d/user-module`改为`@d8d/user-module-mt`
  - [x] 将`@d8d/auth-module`改为`@d8d/auth-module-mt`
  - [x] 将`@d8d/file-module`改为`@d8d/file-module-mt`
  - [x] 将`@d8d/geo-areas`改为`@d8d/geo-areas-mt`
  - [x] 将`@d8d/mini-payment`改为`@d8d/mini-payment-mt`
  - [x] 将`@d8d/advertisements-module`改为`@d8d/advertisements-module-mt`
  - [x] 将`@d8d/delivery-address-module`改为`@d8d/delivery-address-module-mt`
  - [x] 将`@d8d/goods-module`改为`@d8d/goods-module-mt`
  - [x] 将`@d8d/merchant-module`改为`@d8d/merchant-module-mt`
  - [x] 将`@d8d/orders-module`改为`@d8d/orders-module-mt`
  - [x] 将`@d8d/supplier-module`改为`@d8d/supplier-module-mt`
- [x] 更新实体导入和初始化
  - [x] 修改UserEntity、Role、File等实体的导入路径
  - [x] 更新initializeDataSource中的实体列表
- [x] 更新路由注册
  - [x] 修改userRoutes、authRoutes、fileApiRoutes、roleRoutes的导入路径
  - [x] 确保路由路径保持不变（/api/v1/...）
- [x] 更新server包的package.json依赖
  - [x] 将所有单租户包依赖更新为多租户包依赖
  - [x] 确保依赖包名与代码导入一致
- [x] 验证多租户认证中间件集成
  - [x] 确认多租户认证模块包中已包含租户上下文管理
  - [x] 验证认证中间件设置租户上下文：`c.set('tenantId', user.tenantId)`
- [x] 更新server包测试
  - [x] 修改packages/server/tests/integration/auth.integration.test.ts中的包导入
  - [x] 修改packages/server/tests/integration/users.integration.test.ts中的包导入
  - [x] 修改packages/server/tests/integration/files.integration.test.ts中的包导入
  - [x] 更新测试中的服务导入路径
  - [x] 确保测试数据包含租户上下文
- [x] 运行server包集成测试
  - [x] 运行server包的所有测试
  - [x] 验证路由配置正确，API接口可访问
  - [x] 确认多租户上下文管理正常工作

## Dev Notes

### 项目结构信息
- **Server入口文件**: `packages/server/src/index.ts`
- **当前包导入**: 第4-6行导入单租户包
  - `@d8d/user-module`
  - `@d8d/auth-module`
  - `@d8d/file-module`
- **实体导入**: 第10-21行导入各模块实体
- **路由注册**: 第125-154行注册API路由
- **多租户包架构**: 基于Epic-007方案，通过复制单租户包创建多租户版本

### 技术栈信息
[Source: architecture/tech-stack.md#现有技术栈维护]
- **运行时**: Node.js 20.18.3
- **框架**: Hono 4.8.5 (Web框架和API路由)
- **数据库**: PostgreSQL 17 (通过TypeORM)
- **ORM**: TypeORM 0.3.25 (实体管理)
- **认证**: JWT 9.0.2 (Bearer Token)

### 多租户架构信息
[Source: architecture/source-tree.md#多租户架构]
- **包复制策略**: 基于Epic-007方案，通过复制单租户包创建多租户版本
- **租户隔离**: 通过租户ID实现数据隔离，支持多租户部署
- **后端包**: 10个多租户模块包，支持租户数据隔离
- **认证中间件**: 多租户认证模块包中已实现租户上下文管理

### 关键发现
- 多租户模块包直接依赖多租户认证模块的认证中间件
- 认证中间件中已实现租户上下文管理：`c.set('tenantId', user.tenantId)`
- 无需额外添加租户中间件，多租户包已集成租户上下文管理
- 现有单租户系统完全不变，直接替换为多租户包

### 测试更新注意事项
- **测试包导入更新**：所有server测试文件中的包导入需要相应更新
  - `packages/server/tests/integration/auth.integration.test.ts`：第8行`@d8d/user-module` → `@d8d/user-module-mt`，第10行`@d8d/auth-module` → `@d8d/auth-module-mt`
  - `packages/server/tests/integration/users.integration.test.ts`：需要更新用户模块包导入
  - `packages/server/tests/integration/files.integration.test.ts`：需要更新文件模块包导入
- **测试目的和范围**：server测试主要验证路由配置和API接口集成，具体业务逻辑测试在各模块包内部完成
- **测试数据要求**：多租户包需要租户上下文，测试数据可能需要包含租户ID
- **测试服务实例**：测试中创建的服务实例需要来自多租户包
- **回归测试重点**：验证替换后API接口功能正常，多租户上下文管理正常工作

### 项目结构注意事项
- 保持现有API接口路径不变
- 实体初始化逻辑保持不变
- 路由注册模式保持不变
- 确保向后兼容性，现有单租户功能不受影响

### Testing
[Source: architecture/testing-strategy.md#测试金字塔策略]

#### 测试标准
- **测试框架**: Vitest
- **测试位置**: `packages/server/tests/`
- **覆盖率目标**: ≥ 80%

#### 测试要求
- **集成测试**: 验证路由配置正确和API接口可访问
- **回归测试**: 确保多租户上下文管理正常工作
- **重点**: server测试主要验证路由集成，具体业务逻辑测试在各模块包内部完成

#### 测试执行
```bash
# 运行server包测试
cd packages/server && pnpm test

# 运行集成测试
cd packages/server && pnpm test:integration

# 生成覆盖率报告
cd packages/server && pnpm test:coverage
```

#### 测试验证点
- 路由配置正确，API接口可访问
- 多租户包正确导入和初始化
- 租户上下文管理正常工作
- 测试包导入正确更新
- 测试数据包含租户上下文

## Change Log
| Date | Version | Description | Author |
|------|---------|-------------|--------|
| 2025-11-18 | 1.1 | 添加测试更新任务和注意事项 | Bob |
| 2025-11-18 | 1.0 | 初始故事创建 | Bob |

## Dev Agent Record
*This section is populated by the development agent during implementation*

### Agent Model Used
James - Full Stack Developer

### Debug Log References
- 多租户包替换验证：所有包导入已更新为多租户版本
- 测试验证：多租户上下文管理正常工作，显示"设置租户上下文: 1"和"从存储的租户上下文中获取租户ID: 1"
- API集成：路由配置正确，API接口可访问

### Completion Notes List
1. 多租户包替换已完成，server包现在使用所有多租户模块包
2. 包导入、实体初始化、路由注册和依赖管理已全部更新
3. 多租户认证中间件集成正常，租户上下文管理功能正常工作
4. 测试文件中的包导入已全部更新为多租户版本
5. 集成测试验证了多租户上下文管理和API接口功能

### File List
- `packages/server/src/index.ts` - 更新包导入、实体导入和路由注册
- `packages/server/package.json` - 更新依赖包为多租户版本
- `packages/server/tests/integration/auth.integration.test.ts` - 更新包导入路径
- `packages/server/tests/integration/users.integration.test.ts` - 更新包导入路径
- `packages/server/tests/integration/files.integration.test.ts` - 更新包导入路径

## QA Results
*Results from QA Agent QA review of the completed story implementation*