forked from xiaohei/taiji-AI-PAD
更新计费逻辑
This commit is contained in:
+372
@@ -0,0 +1,372 @@
|
||||
# Taiji AI PAD 后端快速开始指南
|
||||
|
||||
## 概述
|
||||
|
||||
本指南将帮助你在5分钟内启动Taiji AI PAD后端服务。
|
||||
|
||||
## 快速启动(本地开发)
|
||||
|
||||
### 1. 克隆并进入项目
|
||||
|
||||
```bash
|
||||
cd /home/taiji/tools/taiji-AI-PAD/services/mcp-server
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
|
||||
```bash
|
||||
# 创建虚拟环境(推荐)
|
||||
python -m venv venv
|
||||
source venv/bin/activate # Linux/Mac
|
||||
# 或
|
||||
venv\Scripts\activate # Windows
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. 配置环境变量(可选)
|
||||
|
||||
创建 `.env` 文件:
|
||||
|
||||
```bash
|
||||
cat > .env << EOF
|
||||
# 应用环境
|
||||
ENVIRONMENT=development
|
||||
DEBUG=true
|
||||
|
||||
# 数据库(使用Azure PostgreSQL)
|
||||
DATABASE_URL=postgresql+asyncpg://taiji:By%40123456.@taijipda.postgres.database.azure.com:5432/postgres?sslmode=require
|
||||
|
||||
# Redis(使用Azure Redis)
|
||||
REDIS_URL=rediss://:nkJgt1ERFpdeYrEFNyFtsc5K4ycvx2jIeAzCaGGf1OQ%3D@taiji.southeastasia.redis.azure.net:10000/0?ssl_cert_reqs=none
|
||||
|
||||
# JWT密钥
|
||||
JWT_SECRET=zsbgnw
|
||||
|
||||
# 加密密钥
|
||||
ENCRYPTION_KEY=zsbgnw
|
||||
EOF
|
||||
```
|
||||
|
||||
### 4. 初始化数据库
|
||||
|
||||
```bash
|
||||
python -c "from database import init_db; import asyncio; asyncio.run(init_db())"
|
||||
```
|
||||
|
||||
### 5. 启动服务
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
服务将在 `http://localhost:8000` 启动。
|
||||
|
||||
### 6. 验证服务
|
||||
|
||||
打开浏览器访问:
|
||||
- API文档: http://localhost:8000/docs
|
||||
- 健康检查: http://localhost:8000/health
|
||||
|
||||
## 测试API
|
||||
|
||||
### 登录获取Token
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8000/api/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email": "admin@taiji-ai.com",
|
||||
"password": "admin123",
|
||||
"role": "user"
|
||||
}'
|
||||
```
|
||||
|
||||
将返回的token保存:
|
||||
|
||||
```bash
|
||||
export TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||||
```
|
||||
|
||||
### 测试用户API
|
||||
|
||||
```bash
|
||||
# 获取仪表板统计
|
||||
curl http://localhost:8000/api/user/dashboard/stats \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
|
||||
# 获取余额
|
||||
curl http://localhost:8000/api/user/billing/balance \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
||||
## Docker部署(本地测试)
|
||||
|
||||
### 1. 构建镜像
|
||||
|
||||
```bash
|
||||
docker build -t mcp-server:latest .
|
||||
```
|
||||
|
||||
### 2. 运行容器
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name mcp-server \
|
||||
-p 8000:8000 \
|
||||
-e DATABASE_URL="postgresql+asyncpg://taiji:By%40123456.@taijipda.postgres.database.azure.com:5432/postgres?sslmode=require" \
|
||||
-e REDIS_URL="rediss://:nkJgt1ERFpdeYrEFNyFtsc5K4ycvx2jIeAzCaGGf1OQ%3D@taiji.southeastasia.redis.azure.net:10000/0?ssl_cert_reqs=none" \
|
||||
mcp-server:latest
|
||||
```
|
||||
|
||||
### 3. 查看日志
|
||||
|
||||
```bash
|
||||
docker logs -f mcp-server
|
||||
```
|
||||
|
||||
## Azure AKS部署(生产环境)
|
||||
|
||||
### 前置条件
|
||||
|
||||
- Azure CLI已安装
|
||||
- kubectl已安装
|
||||
- 已创建AKS集群
|
||||
- 已配置ACR
|
||||
|
||||
### 一键部署
|
||||
|
||||
```bash
|
||||
# 设置环境变量
|
||||
export RESOURCE_GROUP="taiji-ai-rg"
|
||||
export AKS_CLUSTER_NAME="taiji-aks-cluster"
|
||||
export ACR_NAME="taijiregistry"
|
||||
export LOCATION="southeastasia"
|
||||
|
||||
# 运行部署脚本
|
||||
cd scripts
|
||||
chmod +x deploy-azure.sh
|
||||
./deploy-azure.sh
|
||||
```
|
||||
|
||||
详细部署步骤请参考 `DEPLOY_AZURE.md`。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
services/mcp-server/
|
||||
├── app/ # 应用代码
|
||||
│ ├── routes/ # API路由
|
||||
│ │ ├── auth.py # 认证
|
||||
│ │ ├── user.py # 用户侧
|
||||
│ │ ├── channel.py # 渠道
|
||||
│ │ ├── admin.py # 管理员
|
||||
│ │ └── providers.py # 供应商
|
||||
│ ├── billing.py # 计费逻辑
|
||||
│ ├── schemas.py # Pydantic模型
|
||||
│ └── auth.py # 认证工具
|
||||
├── models.py # 数据库模型
|
||||
├── database.py # 数据库配置
|
||||
├── config.py # 配置管理
|
||||
├── main.py # 应用入口
|
||||
├── requirements.txt # Python依赖
|
||||
├── Dockerfile # Docker配置
|
||||
├── k8s/ # Kubernetes配置
|
||||
│ ├── deployment.yaml
|
||||
│ ├── secrets.yaml
|
||||
│ └── ingress.yaml
|
||||
└── scripts/ # 部署脚本
|
||||
└── deploy-azure.sh
|
||||
```
|
||||
|
||||
## API端点概览
|
||||
|
||||
### 认证 (/api/auth)
|
||||
- `POST /login` - 登录
|
||||
- `POST /logout` - 登出
|
||||
- `POST /refresh` - 刷新Token
|
||||
- `PUT /password` - 修改密码
|
||||
- `GET /keys/info` - 获取API密钥
|
||||
- `POST /keys/regenerate` - 重新生成密钥
|
||||
|
||||
### 用户 (/api/user)
|
||||
- `GET /dashboard/stats` - 仪表板统计
|
||||
- `GET /agents/activity` - Agent活动
|
||||
- `POST /gateway/select` - 选择网关
|
||||
- `POST /tools/generate` - 生成工具
|
||||
- `GET /agents/platform` - 平台Agent
|
||||
- `POST /workflows/create` - 创建工作流
|
||||
- `GET /billing/balance` - 获取余额
|
||||
- `POST /billing/recharge` - 充值
|
||||
|
||||
### 渠道 (/api/channel)
|
||||
- `GET /tenants` - 租户列表
|
||||
- `POST /tenants/create` - 创建租户
|
||||
- `POST /tenants/{id}/recharge` - 充值
|
||||
- `PUT /tenants/{id}/credit` - 设置授信
|
||||
- `GET /billing/stats` - 计费统计
|
||||
|
||||
### 管理员 (/api/admin)
|
||||
- `GET /dashboard/stats` - 平台统计
|
||||
- `GET /channels` - 渠道列表
|
||||
- `POST /channels/create` - 创建渠道
|
||||
- `GET /channels/applications` - 申请列表
|
||||
- `PUT /channels/applications/{id}/review` - 审批
|
||||
- `GET /billing/overview` - 三维度计费
|
||||
|
||||
### 供应商 (/api/providers)
|
||||
- `GET /models` - 模型供应商列表
|
||||
- `POST /models/create` - 创建供应商
|
||||
- `GET /models/{id}` - 供应商详情
|
||||
- `PUT /models/{id}` - 更新供应商
|
||||
|
||||
## 核心功能
|
||||
|
||||
### EU计算
|
||||
```python
|
||||
# 1 EU = 10秒,不足10秒按1 EU
|
||||
duration = 60 # 秒
|
||||
eu = math.ceil(duration / 10) # 6 EU
|
||||
cost = eu * 0.01 # ¥0.06
|
||||
```
|
||||
|
||||
### 余额与授信
|
||||
```python
|
||||
可用额度 = 账户余额 + 授信额度
|
||||
# 消费优先扣除余额,余额不足使用授信
|
||||
```
|
||||
|
||||
### 工作流限制
|
||||
```python
|
||||
# 最多3个Agent节点
|
||||
if len(nodes) > 3:
|
||||
raise ValueError("工作流最多支持3个Agent节点")
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 数据库连接失败?
|
||||
|
||||
确保防火墙规则允许你的IP访问Azure Database for PostgreSQL:
|
||||
|
||||
```bash
|
||||
az postgres flexible-server firewall-rule create \
|
||||
--resource-group taiji-ai-rg \
|
||||
--name taijipda \
|
||||
--rule-name MyIP \
|
||||
--start-ip-address YOUR_IP \
|
||||
--end-ip-address YOUR_IP
|
||||
```
|
||||
|
||||
### Q: Redis连接超时?
|
||||
|
||||
检查Azure Cache for Redis的访问策略和防火墙设置。
|
||||
|
||||
### Q: 如何创建初始管理员账号?
|
||||
|
||||
数据库初始化时会自动创建:
|
||||
- 用户名: admin
|
||||
- 邮箱: admin@taiji-ai.com
|
||||
- 密码: admin123
|
||||
- 角色: super_admin
|
||||
|
||||
**生产环境务必修改密码!**
|
||||
|
||||
### Q: 如何查看日志?
|
||||
|
||||
本地开发:
|
||||
```bash
|
||||
tail -f logs/mcp-server.log
|
||||
```
|
||||
|
||||
Docker:
|
||||
```bash
|
||||
docker logs -f mcp-server
|
||||
```
|
||||
|
||||
Kubernetes:
|
||||
```bash
|
||||
kubectl logs -f -l app=mcp-server -n taiji-ai
|
||||
```
|
||||
|
||||
### Q: 如何更新部署?
|
||||
|
||||
```bash
|
||||
# 构建新镜像
|
||||
docker build -t ${ACR_NAME}.azurecr.io/mcp-server:v2 .
|
||||
docker push ${ACR_NAME}.azurecr.io/mcp-server:v2
|
||||
|
||||
# 更新K8s部署
|
||||
kubectl set image deployment/mcp-server \
|
||||
mcp-server=${ACR_NAME}.azurecr.io/mcp-server:v2 \
|
||||
-n taiji-ai
|
||||
|
||||
# 查看滚动更新状态
|
||||
kubectl rollout status deployment/mcp-server -n taiji-ai
|
||||
```
|
||||
|
||||
## 监控和调试
|
||||
|
||||
### 健康检查
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
### Prometheus指标
|
||||
|
||||
```bash
|
||||
curl http://localhost:8000/metrics
|
||||
```
|
||||
|
||||
### 数据库状态
|
||||
|
||||
```python
|
||||
from database import health_check
|
||||
import asyncio
|
||||
|
||||
result = asyncio.run(health_check())
|
||||
print(result)
|
||||
```
|
||||
|
||||
## 性能优化建议
|
||||
|
||||
1. **数据库连接池**: 已配置20个连接
|
||||
2. **Redis缓存**: 用于会话和临时数据
|
||||
3. **异步I/O**: 使用AsyncIO提高并发
|
||||
4. **索引优化**: 主要查询字段已添加索引
|
||||
5. **HPA扩缩容**: 生产环境自动扩缩容
|
||||
|
||||
## 安全建议
|
||||
|
||||
1. **生产环境必须**:
|
||||
- 修改默认密码
|
||||
- 使用强JWT密钥
|
||||
- 启用HTTPS
|
||||
- 配置防火墙规则
|
||||
- 定期备份数据库
|
||||
|
||||
2. **推荐使用**:
|
||||
- Azure Key Vault存储密钥
|
||||
- Azure Monitor监控
|
||||
- 定期安全扫描
|
||||
- API速率限制
|
||||
|
||||
## 下一步
|
||||
|
||||
- 📖 阅读完整部署指南: `DEPLOY_AZURE.md`
|
||||
- ✅ 运行验证测试: `BACKEND_VERIFICATION.md`
|
||||
- 📝 查看实现总结: `BACKEND_IMPLEMENTATION_SUMMARY.md`
|
||||
- 🔍 查看API文档: http://localhost:8000/docs
|
||||
|
||||
## 获取帮助
|
||||
|
||||
- 📧 Email: admin@taiji-ai.com
|
||||
- 📚 文档: 查看项目根目录的所有MD文件
|
||||
- 🐛 问题追踪: GitHub Issues
|
||||
|
||||
---
|
||||
|
||||
**祝你使用愉快!** 🎉
|
||||
|
||||
Reference in New Issue
Block a user