Files
ai_api_web/README.md
2026-01-22 18:26:47 +08:00

390 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Claude Code 蓝星 - 完整网站项目
这是一个基于 Vue 3 + Flask 的完整网站项目,包含用户注册登录、令牌管理、数据看板、使用日志、充值等功能。
## 项目结构
```
.
├── backend/ # Flask 后端
│ ├── app.py # 应用入口
│ ├── config.py # 配置文件
│ ├── requirements.txt # Python 依赖
│ ├── models/ # 数据模型
│ │ ├── user.py # 用户模型
│ │ ├── token.py # 令牌模型
│ │ ├── usage_log.py # 使用日志模型
│ │ └── ...
│ └── routes/ # API 路由
│ ├── auth.py # 认证相关
│ ├── tokens.py # 令牌管理
│ ├── dashboard.py # 数据看板
│ └── ...
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 通用组件
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ └── ...
│ ├── package.json
│ └── vite.config.js
└── README.md
```
## 功能特性
### 前端功能
- ✅ 首页展示(服务介绍、分组选择、功能特色)
- ✅ 用户注册/登录
- ✅ 模型广场(模型浏览、筛选、搜索)
- ✅ 控制台数据看板
- ✅ 令牌管理(增删改查、批量操作)
- ✅ 使用日志查询
- ✅ 账户充值(支付宝/微信、兑换码)
- ✅ 邀请奖励系统
- ✅ 个人设置
### 后端功能
- ✅ JWT 认证系统
- ✅ 用户注册/登录 API
- ✅ 模型管理 API列表、筛选、搜索
- ✅ 令牌管理 API
- ✅ 数据统计 API
- ✅ 使用日志 API
- ✅ 充值订单 API
- ✅ 邀请奖励 API
## 技术栈
### 前端
- Vue 3 (Composition API)
- Vue Router 4
- Pinia (状态管理)
- Element Plus (UI 组件库)
- Axios (HTTP 客户端)
- Vite (构建工具)
### 后端
- Flask
- Flask-SQLAlchemy (ORM)
- Flask-JWT-Extended (JWT 认证)
- Flask-CORS (跨域支持)
- bcrypt (密码加密)
- SQLite/MySQL (数据库)
## 快速开始
### 后端设置
1. 进入后端目录:
```bash
cd backend
```
2. 创建虚拟环境(推荐):
```bash
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
```
3. 安装依赖:
```bash
pip install -r requirements.txt
```
4. 配置环境变量(可选):
创建 `.env` 文件:
```
SECRET_KEY=your-secret-key
JWT_SECRET_KEY=your-jwt-secret-key
DATABASE_URL=sqlite:///claude_code.db
CORS_ORIGINS=http://localhost:5173
```
5. 运行后端服务:
```bash
python app.py
```
后端服务将在 `http://localhost:5000` 启动。
### 前端设置
1. 进入前端目录:
```bash
cd frontend
```
2. 安装依赖:
```bash
npm install
```
3. 启动开发服务器:
```bash
npm run dev
```
前端服务将在 `http://localhost:5173` 启动并且已经配置为允许所有IP访问。
**从其他设备访问:**
- 确保前端和后端服务器在同一网络下
- 使用服务器IP地址访问`http://<服务器IP>:5173`
- 例如:`http://192.168.1.100:5173`
- 后端API已配置为允许跨域访问
## API 文档
### 认证相关
#### 用户注册
```
POST /api/auth/register
Body: {
"username": "string",
"password": "string",
"confirm_password": "string",
"invite_code": "string" (可选)
}
```
#### 用户登录
```
POST /api/auth/login
Body: {
"username": "string",
"password": "string"
}
```
#### 获取当前用户
```
GET /api/auth/me
Headers: {
"Authorization": "Bearer {token}"
}
```
### 令牌管理
#### 获取令牌列表
```
GET /api/tokens?keyword=xxx&key=xxx
Headers: {
"Authorization": "Bearer {token}"
}
```
#### 创建令牌
```
POST /api/tokens
Headers: {
"Authorization": "Bearer {token}"
}
Body: {
"name": "string",
"group": "string",
"remaining_quota": number (可选),
"total_quota": number (可选),
"ip_restriction": "string" (可选)
}
```
#### 更新令牌
```
PUT /api/tokens/{id}
Headers: {
"Authorization": "Bearer {token}"
}
Body: {
"name": "string",
...
}
```
#### 删除令牌
```
DELETE /api/tokens/{id}
Headers: {
"Authorization": "Bearer {token}"
}
```
### 数据看板
#### 获取统计数据
```
GET /api/dashboard/stats
Headers: {
"Authorization": "Bearer {token}"
}
```
### 使用日志
#### 获取使用日志
```
GET /api/logs/usage?page=1&per_page=20&start_date=xxx&end_date=xxx&token_name=xxx&model_name=xxx&group=xxx
Headers: {
"Authorization": "Bearer {token}"
}
```
### 模型广场
#### 获取模型列表
```
GET /api/models?page=1&per_page=20&provider=xxx&tags=xxx&token_group=xxx&billing_type=xxx&endpoint_type=xxx&search=xxx&show_recharge_price=true&show_multiplier=true
```
#### 获取单个模型详情
```
GET /api/models/{id}
```
#### 获取筛选选项
```
GET /api/models/filters
```
### 充值相关
#### 获取充值信息
```
GET /api/recharge/info
Headers: {
"Authorization": "Bearer {token}"
}
```
#### 创建充值订单
```
POST /api/recharge/create
Headers: {
"Authorization": "Bearer {token}"
}
Body: {
"amount": number,
"payment_method": "alipay" | "wechat"
}
```
#### 兑换码充值
```
POST /api/recharge/exchange
Headers: {
"Authorization": "Bearer {token}"
}
Body: {
"code": "string"
}
```
## 数据库模型
### User (用户)
- id: 主键
- username: 用户名(唯一)
- email: 邮箱(可选)
- password_hash: 密码哈希
- balance: 账户余额
- total_consumption: 历史消耗
- request_count: 请求次数
- user_group: 用户分组
- invite_code: 邀请码
- invited_by: 邀请人ID
### Token (令牌)
- id: 主键
- user_id: 用户ID
- name: 令牌名称
- key: API密钥
- status: 状态enabled/disabled
- remaining_quota: 剩余额度
- total_quota: 总额度
- group: 分组
- available_models: 可用模型
- ip_restriction: IP限制
- expires_at: 过期时间
### UsageLog (使用日志)
- id: 主键
- user_id: 用户ID
- token_id: 令牌ID
- log_type: 日志类型
- model: 模型名称
- input_tokens: 输入Token数
- output_tokens: 输出Token数
- cost: 花费
- created_at: 创建时间
### Model (模型)
- id: 主键
- name: 模型名称(唯一)
- provider: 供应商Anthropic、OpenAI等
- description: 模型描述
- input_price: 输入价格每100万tokens
- output_price: 输出价格每100万tokens
- billing_type: 计费类型pay_as_you_go按量计费、per_request按次计费
- endpoint_type: 端点类型anthropic、openai
- tags: 标签JSON数组
- available_groups: 可用分组JSON数组
- multiplier: 倍率
- is_active: 是否激活
## 开发说明
### 初始化模型数据
运行以下命令初始化示例模型数据:
```bash
cd backend
python init_models.py
```
这将创建6个示例模型供测试使用。
### 数据库迁移
项目使用 SQLite 作为默认数据库,首次运行会自动创建表结构。
如需使用 MySQL修改 `config.py` 中的 `SQLALCHEMY_DATABASE_URI`
### 生产环境部署
1. 修改后端配置:
- 设置强密码的 `SECRET_KEY``JWT_SECRET_KEY`
- 配置生产数据库
- 设置正确的 `CORS_ORIGINS`
2. 构建前端:
```bash
cd frontend
npm run build
```
3. 部署:
- 后端:使用 Gunicorn 或 uWSGI
- 前端:将 `dist` 目录部署到 Nginx 或其他静态文件服务器
## 注意事项
1. 默认使用 SQLite 数据库,生产环境建议使用 MySQL 或 PostgreSQL
2. JWT token 默认 24 小时过期,可在 `config.py` 中调整
3. 充值功能需要集成真实的支付接口(支付宝、微信等)
4. 邀请奖励的返佣比例需要在业务逻辑中实现
## 许可证
MIT License
## 联系方式
如有问题,请联系管理员微信: cursor2028