# 接口分类重构计划

## 一、重构目标

将所有后端接口按照使用端分成四类，通过文件夹和路由前缀清晰区分：

1. **应用端 (app)** - 小程序C端用户使用的接口
2. **商家端 (merchant)** - 小程序商家端 + 商家管理后台使用的接口
3. **平台管理端 (admin)** - 平台管理后台使用的接口
4. **官网 (website)** - 官方网站使用的接口

## 二、目标目录结构

```
apps/server/src/modules/
├── app/                   # 应用端接口 (路由前缀: /api/app/*)
│   ├── auth/              # 用户认证
│   ├── profile/           # 用户资料
│   ├── order/             # 订单管理
│   ├── review/            # 评价管理
│   ├── coupon/            # 优惠券
│   ├── guest/             # 入住人管理
│   ├── activity/          # 活动/邀请
│   ├── finance/           # 钱包/提现
│   └── app.module.ts
│
├── merchant/              # 商家端接口 (路由前缀: /api/merchant/*)
│   ├── auth/              # 商家认证
│   ├── profile/           # 商家资料
│   ├── room/              # 房源管理
│   ├── room-calendar/     # 房态日历
│   ├── order/             # 订单管理
│   ├── review/            # 评价管理
│   ├── statistics/        # 数据统计
│   ├── finance/           # 财务管理
│   └── merchant.module.ts
│
├── admin/                 # 平台管理端接口 (路由前缀: /api/admin/*)
│   ├── auth/              # 管理员认证
│   ├── user/              # 用户管理
│   ├── merchant/          # 商家管理
│   ├── room/              # 房源管理
│   ├── order/             # 订单管理
│   ├── review/            # 评价管理
│   ├── coupon/            # 优惠券管理
│   ├── activity/          # 活动管理
│   ├── config/            # 系统配置
│   ├── website/           # 官网内容管理
│   ├── finance/           # 财务管理
│   │   ├── account/       # 账户管理
│   │   ├── transaction/   # 交易记录
│   │   ├── withdrawal/    # 提现管理
│   │   ├── settlement/    # 结算管理
│   │   ├── reconciliation/# 对账管理
│   │   └── report/        # 财务报表
│   └── admin.module.ts
│
├── website/               # 官网接口 (路由前缀: /api/website/*)
│   ├── info/              # 网站信息
│   ├── room/              # 房源展示（公开）
│   ├── merchant/          # 商家展示（公开）
│   └── website.module.ts
│
└── shared/                # 共享模块（不对外暴露路由）
    ├── upload/            # 文件上传
    └── config/            # 配置服务
```

## 三、接口分类详情

### 3.1 应用端接口 (48个接口)

**路由前缀**: `/api/app/*`

| 模块 | 当前路由 | 新路由 | 文件位置 |
|------|---------|--------|----------|
| 用户认证 | `/user/auth/*` | `/api/app/auth/*` | user/auth/ |
| 用户资料 | `/user/profile/*` | `/api/app/profile/*` | user/profile/ |
| 订单管理 | `/user/orders/*` | `/api/app/orders/*` | user/order/ |
| 评价管理 | `/user/reviews/*` | `/api/app/reviews/*` | user/review/ |
| 优惠券 | `/user/coupons/*` | `/api/app/coupons/*` | user/coupon/ |
| 入住人 | `/user/guests/*` | `/api/app/guests/*` | user/guest/ |
| 活动邀请 | `/user/activity/invite/*` | `/api/app/activity/*` | user/activity/ |
| 钱包财务 | `/user/finance/*` | `/api/app/finance/*` | user/finance/ |

**涉及的Controller文件**:
- `user/auth/auth.controller.ts`
- `user/profile/profile.controller.ts`
- `user/order/order.controller.ts`
- `user/review/review.controller.ts`
- `user/coupon/coupon.controller.ts`
- `user/guest/guest.controller.ts`
- `user/activity/activity.controller.ts`
- `common/finance/finance-user.controller.ts`
- `common/finance/withdrawal-user.controller.ts`
- `common/coupon/coupon-user.controller.ts`

### 3.2 商家端接口 (56个接口)

**路由前缀**: `/api/merchant/*`

| 模块 | 当前路由 | 新路由 | 文件位置 |
|------|---------|--------|----------|
| 商家认证 | `/merchant/auth/*` | `/api/merchant/auth/*` | merchant/auth/ |
| 商家资料 | `/merchant/profile/*` | `/api/merchant/profile/*` | merchant/profile/ |
| 房源管理 | `/merchant/rooms/*` | `/api/merchant/rooms/*` | merchant/room/ |
| 房态日历 | `/merchant/room-calendar/*` | `/api/merchant/room-calendar/*` | merchant/room-calendar/ |
| 订单管理 | `/merchant/orders/*` | `/api/merchant/orders/*` | merchant/order/ |
| 评价管理 | `/merchant/reviews/*` | `/api/merchant/reviews/*` | merchant/review/ |
| 数据统计 | `/merchant/statistics/*` | `/api/merchant/statistics/*` | merchant/statistics/ |
| 财务管理 | `/merchant/finance/*` | `/api/merchant/finance/*` | merchant/finance/ |

**涉及的Controller文件**:
- `merchant/auth/auth.controller.ts`
- `merchant/profile/profile.controller.ts`
- `merchant/room/room.controller.ts`
- `merchant/room-calendar/room-calendar.controller.ts`
- `merchant/order/order.controller.ts`
- `merchant/review/review.controller.ts`
- `merchant/statistics/statistics.controller.ts`
- `merchant/finance/finance.controller.ts`
- `common/finance/transaction-seller.controller.ts`
- `common/finance/withdrawal-merchant.controller.ts`
- `common/finance/settlement-merchant.controller.ts`

### 3.3 平台管理端接口 (72个接口)

**路由前缀**: `/api/admin/*`

| 模块 | 当前路由 | 新路由 | 文件位置 |
|------|---------|--------|----------|
| 管理员认证 | `/admin/auth/*` | `/api/admin/auth/*` | admin/auth/ |
| 用户管理 | `/admin/users/*` | `/api/admin/users/*` | admin/user/ |
| 商家管理 | `/admin/merchants/*` | `/api/admin/merchants/*` | admin/merchant/ |
| 房源管理 | `/admin/rooms/*` | `/api/admin/rooms/*` | admin/room/ |
| 订单管理 | `/admin/orders/*` | `/api/admin/orders/*` | admin/order/ |
| 评价管理 | `/admin/reviews/*` | `/api/admin/reviews/*` | admin/review/ |
| 优惠券管理 | `/admin/coupons/*` | `/api/admin/coupons/*` | admin/coupon/ |
| 活动管理 | `/admin/activity/*` | `/api/admin/activity/*` | admin/activity/ |
| 系统配置 | `/admin/config/*` | `/api/admin/config/*` | admin/config/ |
| 官网管理 | `/admin/website/info/*` | `/api/admin/website/*` | admin/website/ |
| 账户管理 | `/admin/finance/accounts/*` | `/api/admin/finance/accounts/*` | admin/finance/ |
| 交易记录 | `/admin/finance/transactions/*` | `/api/admin/finance/transactions/*` | admin/finance/ |
| 提现管理 | `/admin/finance/withdrawals/*` | `/api/admin/finance/withdrawals/*` | admin/finance/ |
| 结算管理 | `/admin/finance/settlements/*` | `/api/admin/finance/settlements/*` | admin/finance/ |
| 对账管理 | `/admin/finance/reconciliations/*` | `/api/admin/finance/reconciliations/*` | admin/finance/ |
| 财务报表 | `/admin/finance/reports/*` | `/api/admin/finance/reports/*` | admin/finance/ |

**涉及的Controller文件**:
- `admin/auth/auth.controller.ts`
- `admin/user/user.controller.ts`
- `admin/merchant/merchant.controller.ts`
- `admin/room/room.controller.ts`
- `admin/order/order.controller.ts`
- `admin/review/review.controller.ts`
- `admin/coupon/coupon.controller.ts`
- `admin/activity/activity.controller.ts`
- `admin/config/config.controller.ts`
- `admin/website/website.controller.ts`
- `common/finance/account-admin.controller.ts`
- `common/finance/transaction-admin.controller.ts`
- `common/finance/withdrawal-admin.controller.ts`
- `common/finance/settlement-admin.controller.ts`
- `common/finance/reconciliation-admin.controller.ts`
- `common/finance/report-admin.controller.ts`
- `common/coupon/coupon-admin.controller.ts`

### 3.4 官网接口 (12个接口)

**路由前缀**: `/api/website/*`

| 模块 | 当前路由 | 新路由 | 文件位置 |
|------|---------|--------|----------|
| 网站信息 | `/website/info/*` | `/api/website/info/*` | website/info/ |
| 房源展示 | `/public/rooms/*` | `/api/website/rooms/*` | website/room/ |
| 商家展示 | `/public/merchants/*` | `/api/website/merchants/*` | website/merchant/ |

**涉及的Controller文件**:
- `website/info/info.controller.ts`
- 需要新建: `website/room/room.controller.ts` (公开房源查询)
- 需要新建: `website/merchant/merchant.controller.ts` (公开商家查询)

## 四、执行步骤

### 步骤1: 重命名和移动目录 (30分钟)

```bash
# 1. 重命名 user 为 app
cd apps/server/src/modules
mv user app

# 2. 保持 merchant 不变

# 3. 保持 admin 不变

# 4. 保持 website 不变

# 5. 重命名 common 为 shared
mv common shared
```

### 步骤2: 移动 common 中的 controller 到对应模块 (45分钟)

#### 2.1 移动应用端相关的 controller

```bash
# 移动用户优惠券
mv shared/coupon/coupon-user.controller.ts app/coupon/
mv shared/coupon/coupon-user.service.ts app/coupon/

# 移动用户财务
mv shared/finance/finance-user.controller.ts app/finance/
mv shared/finance/withdrawal-user.controller.ts app/finance/
```

#### 2.2 移动商家端相关的 controller

```bash
# 移动商家财务
mv shared/finance/transaction-seller.controller.ts merchant/finance/
mv shared/finance/withdrawal-merchant.controller.ts merchant/finance/
mv shared/finance/settlement-merchant.controller.ts merchant/finance/
```

#### 2.3 移动平台管理端相关的 controller

```bash
# 移动管理优惠券
mv shared/coupon/coupon-admin.controller.ts admin/coupon/

# 移动管理财务
mv shared/finance/account-admin.controller.ts admin/finance/
mv shared/finance/transaction-admin.controller.ts admin/finance/
mv shared/finance/withdrawal-admin.controller.ts admin/finance/
mv shared/finance/settlement-admin.controller.ts admin/finance/
mv shared/finance/reconciliation-admin.controller.ts admin/finance/
mv shared/finance/report-admin.controller.ts admin/finance/
```

### 步骤3: 修改所有 Controller 的路由前缀 (60分钟)

使用 VS Code 全局查找替换功能 (`Ctrl+Shift+H`)：

#### 3.1 应用端路由

在 `apps/server/src/modules/app` 目录下：

```
查找: @Controller\('user/auth
替换: @Controller('api/app/auth

查找: @Controller\('user/profile
替换: @Controller('api/app/profile

查找: @Controller\('user/orders
替换: @Controller('api/app/orders

查找: @Controller\('user/reviews
替换: @Controller('api/app/reviews

查找: @Controller\('user/coupons
替换: @Controller('api/app/coupons

查找: @Controller\('user/guests
替换: @Controller('api/app/guests

查找: @Controller\('user/activity
替换: @Controller('api/app/activity

查找: @Controller\('user/finance
替换: @Controller('api/app/finance

查找: @Controller\('user
替换: @Controller('api/app
```

#### 3.2 商家端路由

在 `apps/server/src/modules/merchant` 目录下：

```
查找: @Controller\('merchant/auth
替换: @Controller('api/merchant/auth

查找: @Controller\('merchant/profile
替换: @Controller('api/merchant/profile

查找: @Controller\('merchant/rooms
替换: @Controller('api/merchant/rooms

查找: @Controller\('merchant/room-calendar
替换: @Controller('api/merchant/room-calendar

查找: @Controller\('merchant/orders
替换: @Controller('api/merchant/orders

查找: @Controller\('merchant/reviews
替换: @Controller('api/merchant/reviews

查找: @Controller\('merchant/statistics
替换: @Controller('api/merchant/statistics

查找: @Controller\('merchant/finance
替换: @Controller('api/merchant/finance

# 处理旧的 seller 前缀
查找: @Controller\('seller/
替换: @Controller('api/merchant/
```

#### 3.3 平台管理端路由

在 `apps/server/src/modules/admin` 目录下：

```
查找: @Controller\('admin/
替换: @Controller('api/admin/
```

#### 3.4 官网路由

在 `apps/server/src/modules/website` 目录下：

```
查找: @Controller\('website/
替换: @Controller('api/website/

查找: @Controller\('public/
替换: @Controller('api/website/
```

### 步骤4: 更新模块导入和注册 (45分钟)

#### 4.1 更新各模块的 module.ts 文件

需要修改的文件：
- `app/app.module.ts` (重命名自 user.module.ts)
- `merchant/merchant.module.ts`
- `admin/admin.module.ts`
- `website/website.module.ts`

#### 4.2 更新根模块 app.module.ts

```typescript
import { AppModule as AppClientModule } from './modules/app/app.module';
import { MerchantModule } from './modules/merchant/merchant.module';
import { AdminModule } from './modules/admin/admin.module';
import { WebsiteModule } from './modules/website/website.module';
import { SharedModule } from './modules/shared/shared.module';

@Module({
  imports: [
    // ... 其他配置
    AppClientModule,
    MerchantModule,
    AdminModule,
    WebsiteModule,
    SharedModule,
  ],
})
export class AppModule {}
```

### 步骤5: 更新前端 API 调用路径 (90分钟)

#### 5.1 小程序端 (apps/miniapp/src/api/)

在整个 `apps/miniapp/src/api` 目录下执行替换：

```
查找: '/user/auth/
替换: '/api/app/auth/

查找: '/user/profile
替换: '/api/app/profile

查找: '/user/orders
替换: '/api/app/orders

查找: '/user/reviews
替换: '/api/app/reviews

查找: '/user/coupons
替换: '/api/app/coupons

查找: '/user/guests
替换: '/api/app/guests

查找: '/user/activity
替换: '/api/app/activity

查找: '/user/finance
替换: '/api/app/finance

查找: '/user
替换: '/api/app

# 公开接口
查找: '/public/rooms
替换: '/api/website/rooms

查找: '/public/merchants
替换: '/api/website/merchants
```

#### 5.2 商家管理后台 (apps/merchant-admin/src/api/)

在整个 `apps/merchant-admin/src/api` 目录下执行替换：

```
查找: '/merchant/auth/
替换: '/api/merchant/auth/

查找: '/merchant/
替换: '/api/merchant/

查找: '/seller/
替换: '/api/merchant/
```

#### 5.3 平台管理后台 (apps/platform-admin/src/api/)

在整个 `apps/platform-admin/src/api` 目录下执行替换：

```
查找: '/admin/
替换: '/api/admin/
```

#### 5.4 官网 (apps/official-website/)

```
查找: '/website/
替换: '/api/website/

查找: '/public/
替换: '/api/website/
```

### 步骤6: 更新 Swagger 配置 (15分钟)

修改 `apps/server/src/main.ts`，为不同模块添加 API 标签分组：

```typescript
const config = new DocumentBuilder()
  .setTitle('酒店民宿短租预订平台 API')
  .setDescription('API 文档')
  .setVersion('1.0')
  .addBearerAuth()
  .addTag('应用端', '小程序C端用户使用的接口')
  .addTag('商家端', '小程序商家端和商家管理后台使用的接口')
  .addTag('平台管理端', '平台管理后台使用的接口')
  .addTag('官网', '官方网站使用的接口')
  .build();
```

在各个 Controller 中添加对应的 `@ApiTags` 装饰器。

### 步骤7: 测试验证 (60分钟)

#### 7.1 后端测试

```bash
# 启动后端服务
cd apps/server
pnpm run start:dev

# 检查控制台是否有错误
# 访问 Swagger 文档
# http://localhost:3000/api/docs
```

#### 7.2 前端测试

```bash
# 启动小程序
cd apps/miniapp
pnpm run dev:mp-weixin

# 启动商家后台
cd apps/merchant-admin
pnpm run dev

# 启动平台后台
cd apps/platform-admin
pnpm run dev

# 启动官网
cd apps/official-website
pnpm run dev
```

#### 7.3 功能测试清单

- [ ] 应用端
  - [ ] 用户登录/注册
  - [ ] 浏览房源
  - [ ] 创建订单
  - [ ] 查看订单列表
  - [ ] 发表评价
  - [ ] 优惠券领取
  - [ ] 钱包充值/提现

- [ ] 商家端
  - [ ] 商家登录
  - [ ] 房源管理（增删改查）
  - [ ] 订单管理
  - [ ] 数据统计
  - [ ] 财务管理

- [ ] 平台管理端
  - [ ] 管理员登录
  - [ ] 用户管理
  - [ ] 商家审核
  - [ ] 订单管理
  - [ ] 财务管理
  - [ ] 系统配置

- [ ] 官网
  - [ ] 首页展示
  - [ ] 房源浏览
  - [ ] 商家展示

## 五、风险控制

### 5.1 备份策略

在开始重构前，创建 Git 分支：

```bash
git checkout -b refactor/interface-classification
git add .
git commit -m "feat: 开始接口分类重构"
```

### 5.2 回滚方案

如果出现问题，可以快速回滚：

```bash
git checkout dev
git branch -D refactor/interface-classification
```

### 5.3 分阶段提交

建议按以下阶段提交代码：

1. 第一次提交：目录重命名和移动
2. 第二次提交：Controller 路由前缀修改
3. 第三次提交：模块导入更新
4. 第四次提交：前端 API 路径更新
5. 第五次提交：测试通过后的最终调整

## 六、预计时间

| 步骤 | 预计时间 | 说明 |
|------|---------|------|
| 步骤1: 目录重命名移动 | 30分钟 | 使用命令行批量操作 |
| 步骤2: 移动 controller | 45分钟 | 手动移动并调整导入 |
| 步骤3: 修改路由前缀 | 60分钟 | VS Code 批量替换 |
| 步骤4: 更新模块注册 | 45分钟 | 修改 module.ts 文件 |
| 步骤5: 更新前端路径 | 90分钟 | 四个前端项目批量替换 |
| 步骤6: 更新 Swagger | 15分钟 | 添加 API 分组 |
| 步骤7: 测试验证 | 60分钟 | 全面功能测试 |
| **总计** | **5.75小时** | 约半个工作日 |

## 七、注意事项

1. **路径别名**: 确保所有 `@/` 路径别名正确指向新的目录结构
2. **导入语句**: 检查所有 import 语句是否正确
3. **DTO 共享**: 如果有共享的 DTO，考虑放在 `shared/dto` 目录
4. **Guard 和 Decorator**: 确保认证守卫和装饰器路径正确
5. **测试文件**: 同步更新所有 `.spec.ts` 测试文件
6. **环境变量**: 检查是否有硬编码的路径需要更新
7. **文档更新**: 更新 CLAUDE.md 和其他文档中的路径说明

## 八、后续优化建议

1. **API 版本控制**: 考虑添加 `/api/v1/` 版本前缀
2. **接口文档**: 为每个模块生成独立的 Swagger 文档
3. **权限控制**: 基于路由前缀实现更细粒度的权限控制
4. **监控日志**: 按模块分类记录 API 调用日志
5. **性能优化**: 为不同端的接口设置不同的缓存策略
