# 贡献指南

感谢你对 DS2API 的贡献！

## 开发环境设置

### 后端

```bash
# 1. 克隆仓库
git clone https://github.com/CJackHwang/ds2api.git
cd ds2api

# 2. 创建虚拟环境（推荐）
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 配置
cp config.example.json config.json
# 编辑 config.json

# 5. 启动
python dev.py
```

### 前端 (WebUI)

```bash
cd webui
npm install
npm run dev
```

## 代码规范

- **Python**: 遵循 PEP 8，使用 4 空格缩进
- **JavaScript/React**: 使用 4 空格缩进，使用函数组件
- **提交信息**: 使用语义化提交格式（如 `feat:`, `fix:`, `docs:`）

## 提交 PR

1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/xxx`)
3. 提交更改 (`git commit -m 'feat: 添加xxx功能'`)
4. 推送分支 (`git push origin feature/xxx`)
5. 创建 Pull Request

## WebUI 构建

> **重要**: 修改 `webui/` 目录后 **无需手动构建**！

当 PR 合并到 `main` 分支后，GitHub Actions 会自动：
1. 构建 WebUI
2. 提交构建产物到 `static/admin/`

如果需要本地构建（测试用）：
```bash
./scripts/build-webui.sh
```

## 项目结构

```
ds2api/
├── app.py              # FastAPI 应用入口
├── dev.py              # 开发服务器
├── core/               # 核心模块
│   ├── auth.py         # 账号认证与轮询
│   ├── config.py       # 配置管理
│   ├── deepseek.py     # DeepSeek API 调用
│   ├── models.py       # 模型定义
│   ├── pow.py          # PoW 计算
│   └── sse_parser.py   # SSE 解析
├── routes/             # API 路由
│   ├── openai.py       # OpenAI 兼容接口
│   ├── claude.py       # Claude 兼容接口
│   ├── home.py         # 首页路由
│   └── admin/          # 管理接口
├── webui/              # React WebUI 源码
├── static/admin/       # WebUI 构建产物（自动生成）
└── scripts/            # 辅助脚本
```

## 问题反馈

- 使用 [GitHub Issues](https://github.com/CJackHwang/ds2api/issues) 报告问题
- 提供详细的复现步骤和日志信息
