# Codex Pool Backend

Codex Pool 后端服务 - 标准 Go 项目结构

## 目录结构

```
backend/
├── cmd/
│   └── main.go                  # 程序入口
├── internal/
│   ├── api/
│   │   └── http.go              # HTTP 工具、中间件
│   ├── auth/
│   │   ├── s2a.go               # S2A 授权逻辑
│   │   ├── rod.go               # Rod 浏览器自动化
│   │   └── chromedp.go          # Chromedp 浏览器自动化
│   ├── client/
│   │   └── tls.go               # TLS 指纹 HTTP 客户端
│   ├── config/
│   │   └── config.go            # 配置类型和加载
│   ├── database/
│   │   └── sqlite.go            # SQLite 操作
│   ├── invite/
│   │   └── team.go              # Team 邀请功能
│   ├── logger/
│   │   └── logger.go            # 日志系统
│   ├── mail/
│   │   └── service.go           # 邮箱服务
│   └── register/
│       └── chatgpt.go           # ChatGPT 注册功能
├── config.json                  # 配置文件
├── config.example.json          # 配置示例
└── go.mod
```

## 快速启动

```bash
# 编译
go build -o codex-pool.exe ./cmd

# 运行
./codex-pool.exe
```

## 配置文件

创建 `config.json`：

```json
{
    "port": 8088,
    "cors_origin": "*",
    "s2a_api_base": "https://your-s2a-api.com",
    "s2a_admin_key": "your-admin-key",
    "default_proxy": "",
    "accounts_path": "accounts.json",
    "concurrency": 100,
    "priority": 30,
    "group_ids": [1, 2, 3],
    "mail_services": [
        {
            "name": "主邮箱服务",
            "api_base": "https://mail.example.com",
            "api_token": "your-token",
            "domain": "example.com"
        }
    ]
}
```

## 包说明

| 包 | 说明 |
|---|------|
| `cmd` | 程序入口 |
| `internal/api` | HTTP 响应工具、CORS 中间件 |
| `internal/auth` | S2A 授权、浏览器自动化 |
| `internal/client` | TLS 指纹 HTTP 客户端 |
| `internal/config` | 配置类型、加载函数 |
| `internal/database` | SQLite 数据库操作 |
| `internal/invite` | Team 邀请功能 |
| `internal/logger` | 日志系统 |
| `internal/mail` | 邮箱服务 |
| `internal/register` | ChatGPT 注册功能 |

## API 接口

### 基础
- `GET /api/health` - 健康检查
- `GET /api/config` - 获取配置

### 日志
- `GET /api/logs` - 获取日志
- `POST /api/logs/clear` - 清空日志

### S2A 代理
- `GET /api/s2a/test` - 测试连接

### 邮箱服务
- `GET /api/mail/services` - 获取配置
- `POST /api/mail/services/test` - 测试连接

### Team Owner
- `GET /api/db/owners` - 获取列表
- `GET /api/db/owners/stats` - 获取统计
- `POST /api/db/owners/clear` - 清空

## 清理旧文件

如果已迁移到新结构，可以删除根目录的旧文件：

```powershell
# 删除旧的 .go 文件 (保留 go.mod, go.sum)
Remove-Item main.go, types.go, http.go, api_handlers.go, db_api.go, database.go, mail.go, codex-auth.go, browser-auth-rod.go, browser-auth-cdp.go, client.go, register.go, team-invite.go, log_stream.go, logger.go -ErrorAction SilentlyContinue

# 删除旧的 exe
Remove-Item codex-pool.exe -ErrorAction SilentlyContinue
```

## 开发

```bash
# 安装依赖
go mod tidy

# 运行
go run ./cmd

# 编译
go build -o codex-pool.exe ./cmd
```

## 许可

MIT License
