390 lines
7.7 KiB
Markdown
390 lines
7.7 KiB
Markdown
# 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
|