# 架构设计文档

## 系统架构图

```
┌─────────────────────────────────────────────────────────────┐
│                         客户端层                              │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │
│  │  同事A   │  │  同事B   │  │  同事C   │  │  ...    │        │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘        │
└───────┼────────────┼────────────┼────────────┼─────────────┘
        │            │            │            │
        └────────────┴────────────┴────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                      API 代理服务层                           │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │  Nginx / 负载均衡 (可选)                                  │ │
│  └─────────────────────────┬───────────────────────────────┘ │
│                            ▼                                │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │              FastAPI 应用 (Python)                       │ │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐     │ │
│  │  │  认证中间件  │→│  路由转发   │→│  用量采集   │     │ │
│  │  │  (API Key)  │  │  (百炼API)  │  │  (异步写入)  │     │ │
│  │  └─────────────┘  └─────────────┘  └─────────────┘     │ │
│  └─────────────────────────────────────────────────────────┘ │
└────────────────────────────┬────────────────────────────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────┐
│                        数据层                                │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   MySQL     │  │   Redis     │  │  日志文件    │         │
│  │  (用量统计)  │  │  (限流缓存)  │  │  (审计备份)  │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘
```

## 核心组件

### 1. 认证中间件
- 验证 `Authorization: Bearer {user_key}`
- 查询用户状态和日限额
- 拒绝无效或超限的请求

### 2. 路由转发
- 透明转发 HTTP 请求到阿里百炼
- 保持请求体和响应格式完全一致
- 支持流式响应（SSE）

### 3. 用量采集
- 解析响应中的 `usage` 字段
- 异步写入数据库（不阻塞响应）
- 实时更新 Redis 计数器

### 4. 数据存储
- **MySQL**: 持久化存储用户、用量统计、调用日志
- **Redis**: 限流计数、缓存热点数据
- **日志文件**: 审计备份，保留30天

## 数据流

```
1. 客户端请求 → 代理服务
2. 认证中间件验证 API Key
3. 限流检查（Redis）
4. 转发请求到阿里百炼
5. 接收响应
6. 解析 usage 数据
7. 异步写入数据库
8. 返回响应给客户端
```

## 扩展性设计

- **水平扩展**: 无状态服务，可部署多实例
- **数据库**: 支持读写分离
- **缓存**: Redis Cluster 支持高并发
