更新计费逻辑

This commit is contained in:
Ubuntu
2025-12-25 04:20:42 +00:00
parent e153d27f28
commit 2e09716dd9
31 changed files with 8682 additions and 367 deletions
+372
View File
@@ -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
---
**祝你使用愉快!** 🎉