更新租户对接文档

This commit is contained in:
zhanggangyong
2026-01-08 07:53:38 +00:00
parent 6fb4f29208
commit c94367994e
10 changed files with 1448 additions and 5331 deletions
+848
View File
@@ -0,0 +1,848 @@
# API 接口完整清单 - 详细版
> 生成时间: 2026-01-08
>
> 本文档列出了 taiji-AI-PAD 平台所有后端 API 接口、对应功能和业务逻辑。
---
## 目录
1. [认证模块 (Auth)](#1-认证模块-auth)
2. [用户侧平台 (User)](#2-用户侧平台-user)
3. [渠道合作伙伴 (Channel)](#3-渠道合作伙伴-channel)
4. [超级管理员 (Admin)](#4-超级管理员-admin)
5. [供应商管理 (Providers)](#5-供应商管理-providers)
6. [计费与资源管理 (Billing Admin)](#6-计费与资源管理-billing-admin)
7. [Agent 管理 (Agents)](#7-agent-管理-agents)
8. [工具管理 (Tools)](#8-工具管理-tools)
9. [会话管理 (Sessions)](#9-会话管理-sessions)
10. [监控与健康检查 (Monitoring)](#10-监控与健康检查-monitoring)
11. [WebSocket 接口](#11-websocket-接口)
12. [前端集成接口 (Frontend Integration)](#12-前端集成接口-frontend-integration)
13. [平台 Agent 配额管理](#13-平台-agent-配额管理)
14. [Data Ingestion 服务](#14-data-ingestion-服务)
---
## 1. 认证模块 (Auth)
**路由前缀**: `/api/auth`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/login` | POST | 统一登录接口 | 支持用户/渠道/管理员登录,根据邮箱后缀或角色判断登录类型,返回 JWT Token |
| `/logout` | POST | 登出 | 将当前 Token 加入黑名单,使其失效 |
| `/refresh` | POST | 刷新令牌 | 使用 Refresh Token 获取新的 Access Token |
| `/password` | PUT | 修改密码 | 验证旧密码后更新为新密码 |
| `/keys/info` | GET | 获取 API 密钥信息 | 返回当前用户的 API Key 信息(脱敏显示) |
| `/keys/regenerate` | POST | 重新生成 API 密钥 | 生成新的 API Key,旧 Key 立即失效 |
**权限说明**:
- 所有接口需要认证(除 `/login` 外)
- 支持角色: `super_admin`, `billing_admin`, `operations_admin`, `channel_admin`, `user`
---
## 2. 用户侧平台 (User)
**路由前缀**: `/api/user`
### 2.1 仪表板
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/dashboard/stats` | GET | 获取仪表板统计 | 返回活跃 Agent 数、总请求数、EU 余额、系统健康度 |
| `/agents/activity` | GET | 获取 Agent 活动 | 返回最近 20 条执行记录 |
| `/resources/usage` | GET | 获取资源使用情况 | 返回 Agent 数、EU 消耗、CPU/内存使用 |
### 2.2 服务网关
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/gateway/select` | POST | 选择网关类型 | 选择 MCP/A2A/API 网关类型 |
| `/gateway/api/create` | POST | 创建网关 API | 创建新的网关 API 配置 |
| `/gateway/apis` | GET | 获取网关 API 列表 | 返回所有已配置的网关 API |
| `/gateway/monitoring` | GET | 网关监控 | 返回网关状态、吞吐量、错误率 |
### 2.3 自定义 Agent 配额
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/custom-agent-quota` | GET | 获取自定义 Agent 配额 | 返回 CPU/内存配额及使用情况 |
### 2.4 数据与工具
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/tools/generate` | POST | 生成工具 | 根据配置生成新工具 |
| `/tools/list` | GET | 获取工具列表 | 返回所有可用工具 |
| `/data-templates/create` | POST | 创建数据模板 | 创建新的数据模板配置 |
### 2.5 代理工厂
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/agents/platform` | GET | 获取平台 Agent 列表 | 返回所有可用的平台 Agent |
| `/agents/deploy` | POST | 部署 Agent | 部署指定的 Agent 实例 |
| `/agents/deployed` | GET | 获取已部署 Agent | 返回当前用户已部署的 Agent |
### 2.6 编排中心(工作流)
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/workflows/create` | POST | 创建工作流 | 创建新的工作流配置 |
| `/workflows/list` | GET | 获取工作流列表 | 返回所有工作流 |
| `/workflows/{id}` | PUT | 更新工作流 | 更新工作流配置 |
| `/workflows/{id}` | DELETE | 删除工作流 | 删除指定工作流 |
| `/workflows/{id}/run` | POST | 运行工作流 | 执行工作流,按顺序调用各节点 |
### 2.7 模型使用(LiteLLM 集成)
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/models` | GET | 获取可用模型列表 | 从 LiteLLM 获取租户可用的模型 |
| `/models/{model}/chat` | POST | 模型对话 | 调用 LiteLLM 进行模型对话 |
| `/models/usage` | GET | 获取模型使用统计 | 返回模型调用次数、Token 消耗 |
### 2.8 计费与资源
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/billing/balance` | GET | 获取余额 | 返回当前 EU 余额 |
| `/billing/history` | GET | 获取计费历史 | 返回计费记录列表 |
| `/billing/recharge` | POST | 充值 | 增加 EU 余额 |
### 2.9 平台 Agent 使用
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/platform-agents` | GET | 获取平台 Agent 配额 | 返回用户可用的平台 Agent 配额 |
| `/platform-agents/{template}/instances` | GET | 获取 Agent 实例列表 | 返回指定模板的运行实例 |
| `/platform-agents/{agent_name}` | DELETE | 停止 Agent | 停止并释放 Agent 实例 |
| `/platform-agents/quota` | GET | 获取配额使用情况 | 返回配额使用详情 |
| `/platform-agents/{agent_name}/status` | GET | 获取 Agent 状态 | 从 K8s 获取实时状态 |
### 2.10 自定义 Agent 管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/custom-agents` | GET | 获取自定义 Agent 列表 | 返回用户创建的自定义 Agent |
| `/custom-agents` | POST | 创建自定义 Agent | 创建新的自定义 Agent,检查配额 |
| `/custom-agents/{id}` | DELETE | 删除自定义 Agent | 删除 Agent 并释放配额 |
| `/custom-agents/{id}/scale` | POST | 扩缩容 | 调整 Agent 副本数 |
| `/custom-agents/{id}/logs` | GET | 获取日志 | 获取 Agent 运行日志 |
| `/custom-agents/{id}/restart` | POST | 重启 Agent | 重启 Agent 实例 |
### 2.11 Agent 计费统计
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/agents/billing/stats` | GET | 获取 Agent 计费统计 | 返回 Agent 使用费用统计 |
| `/agents/billing/records` | GET | 获取计费记录 | 返回详细计费记录 |
---
## 3. 渠道合作伙伴 (Channel)
**路由前缀**: `/api/channel`
### 3.1 认证
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/auth/login` | POST | 渠道登录 | 渠道管理员登录,返回带 channelId 的 Token |
### 3.2 仪表板
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/dashboard/stats` | GET | 获取仪表板统计 | 返回租户数、Agent 数、EU 消耗 |
### 3.3 租户管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/tenants` | GET | 获取租户列表 | 返回渠道下所有租户 |
| `/tenants/create` | POST | 创建租户 | 创建新租户,同时在 LiteLLM 创建 Key |
| `/tenants/{id}` | GET | 获取租户详情 | 返回租户详细信息 |
| `/tenants/{id}` | PUT | 更新租户 | 更新租户信息 |
| `/tenants/{id}` | DELETE | 删除租户 | 软删除租户 |
| `/tenants/{id}/status` | PUT | 更新租户状态 | 启用/停用租户 |
| `/tenants/{id}/permissions` | PUT | 更新租户权限 | 设置租户权限列表 |
| `/tenants/{id}/resources` | PUT | 更新租户资源 | 分配资源配额 |
| `/tenants/{id}/billing` | PUT | 更新租户计费 | 设置计费参数 |
| `/tenants/{id}/recharge` | POST | 租户充值 | 为租户充值 EU |
| `/tenants/{id}/credit` | PUT | 设置授信额度 | 设置租户授信额度 |
### 3.4 租户模型分配(LiteLLM 集成)
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/tenants/{id}/models` | GET | 获取租户模型 | 返回租户可用的模型列表 |
| `/tenants/{id}/models` | PUT | 分配租户模型 | 更新租户的 LiteLLM Key 模型权限 |
### 3.5 管理员管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/admins` | GET | 获取管理员列表 | 返回渠道下的管理员 |
| `/admins/create` | POST | 创建管理员 | 创建渠道管理员 |
| `/admins/{id}/permissions` | PUT | 更新管理员权限 | 设置管理员权限 |
### 3.6 资源申请
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/resources/agents` | GET | 获取 Agent 资源 | 返回渠道可用的 Agent 配额 |
| `/resources/models` | GET | 获取模型资源 | 返回渠道可用的模型 |
| `/resources/apply` | POST | 申请资源 | 提交资源申请 |
### 3.7 计费统计
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/billing/stats` | GET | 获取计费统计 | 返回渠道计费汇总 |
### 3.8 供应商管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/providers/available` | GET | 获取可用供应商 | 返回所有可申请的供应商 |
| `/providers/applications` | GET | 获取供应商申请 | 返回渠道的供应商申请列表 |
| `/providers/applications` | POST | 申请供应商 | 提交供应商使用申请 |
| `/providers/authorized` | GET | 获取已授权供应商 | 返回已授权的供应商列表 |
### 3.9 平台 Agent 资源申请
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/available-platform-agents` | GET | 获取可用平台 Agent | 返回所有可申请的平台 Agent 模板 |
| `/applications/platform-agents` | GET | 获取申请列表 | 返回渠道的平台 Agent 申请 |
| `/applications/platform-agents` | POST | 申请平台 Agent | 提交平台 Agent 配额申请 |
| `/platform-agents` | GET | 获取已分配配额 | 返回渠道已有的平台 Agent 配额 |
| `/tenants/{id}/platform-agents` | POST | 分配给租户 | 将配额分配给租户并启动 Pod |
### 3.10 Agent 计费统计
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/agents/billing/overview` | GET | 获取 Agent 计费概览 | 返回渠道下 Agent 计费汇总 |
---
## 4. 超级管理员 (Admin)
**路由前缀**: `/api/admin`
### 4.1 管理员管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/admins` | GET | 获取管理员列表 | 返回所有活跃管理员(仅超级管理员) |
| `/admins/create` | POST | 创建管理员 | 创建 billing_admin 或 operations_admin |
| `/admins/{id}` | DELETE | 删除管理员 | 软删除管理员 |
### 4.2 仪表板
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/dashboard/stats` | GET | 获取平台统计 | 返回渠道数、租户数、Agent 数、收入等 |
| `/dashboard/recent-logins` | GET | 获取最近登录 | 返回最近登录的租户列表 |
### 4.3 渠道管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/channels` | GET | 获取渠道列表 | 返回所有渠道及统计信息 |
| `/channels/create` | POST | 创建渠道 | 创建渠道,同时在 LiteLLM 创建 Team |
| `/channels/{id}` | PUT | 更新渠道 | 更新渠道信息 |
| `/channels/{id}` | DELETE | 删除渠道 | 软删除渠道,同时删除 LiteLLM Team |
| `/channels/{id}/resources` | GET | 获取渠道资源 | 返回渠道的资源配置 |
| `/channels/{id}/resources` | PUT | 分配渠道资源 | 分配模型、Agent、配额,更新 LiteLLM Team |
| `/channels/{id}/commission` | PUT | 更新佣金比例 | 设置渠道佣金比例 |
| `/channels/{id}/admins` | GET | 获取渠道管理员 | 返回渠道下的管理员列表 |
| `/tenants` | GET | 获取租户列表 | 返回指定渠道的租户(需指定 channel_id) |
### 4.4 资源分配统计
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/resources/allocation-stats` | GET | 获取资源分配统计 | 返回平台端/自定义 Agent 统计、配额统计 |
### 4.5 申请审批
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/channels/applications` | GET | 获取申请列表 | 返回所有渠道申请 |
| `/channels/applications/{id}/review` | PUT | 审批申请 | 批准或拒绝申请 |
### 4.6 资源管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/resources/litellm-models` | GET | 获取 LiteLLM 模型 | 从 LiteLLM 获取所有可用模型 |
| `/resources/models` | GET | 获取模型供应商 | 返回所有模型供应商 |
| `/resources/agents` | GET | 获取所有 Agent | 返回平台端 + 自定义 Agent |
| `/resources/agents/{id}` | DELETE | 删除 Agent | 软删除 Agent |
| `/resources/agents/{id}/config` | PUT | 更新 Agent 配置 | 更新资源配置 |
### 4.7 监控
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/monitoring/agents` | GET | 监控 Agent | 返回 Agent 健康状态和性能指标 |
### 4.8 计费(三维度)
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/billing/overview` | GET | 获取计费概览 | 返回渠道/租户/调用记录三维度统计 |
### 4.9 供应商申请审批
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/providers/applications` | GET | 获取供应商申请 | 返回所有供应商申请 |
| `/providers/applications/{id}/review` | PUT | 审批供应商申请 | 批准或拒绝,创建授权记录 |
| `/providers/access` | GET | 获取供应商授权 | 返回所有渠道供应商授权 |
| `/providers/access/{id}` | PUT | 更新授权 | 更新授权状态或限制 |
| `/providers/access/{id}` | DELETE | 撤销授权 | 撤销供应商授权 |
### 4.10 角色管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/roles` | GET | 获取角色列表 | 返回所有可用角色及权限 |
### 4.11 平台 Agent 模板管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/platform-agents/templates` | GET | 获取模板列表 | 从 Agent Manager 获取所有模板 |
| `/platform-agents/templates/{name}/config` | GET | 获取模板配置 | 返回管理员配置 |
| `/platform-agents/templates/{name}/config` | PUT | 配置模板 | 设置资源限制、最大 Pod 数等 |
### 4.12 平台 Agent 申请审批
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/applications/platform-agents` | GET | 获取申请列表 | 返回所有平台 Agent 申请 |
| `/applications/platform-agents/{id}/review` | PUT | 审批申请 | 批准或拒绝,创建配额记录 |
### 4.13 平台 Agent 分配管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/platform-agents/allocations` | GET | 获取分配情况 | 返回所有渠道的配额分配 |
| `/platform-agents/allocate` | POST | 直接分配配额 | 无需申请直接分配 |
| `/platform-agents/allocate` | DELETE | 撤销配额 | 撤销渠道的配额 |
| `/platform-agents/status` | GET | 获取运行状态 | 从 K8s 获取所有平台 Agent 状态 |
---
## 5. 供应商管理 (Providers)
**路由前缀**: `/api/providers`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/models` | GET | 获取模型供应商列表 | 返回所有活跃供应商(普通用户只看基本信息) |
| `/models/create` | POST | 创建模型供应商 | 创建新供应商配置,加密 API Key |
| `/models/{id}` | GET | 获取供应商详情 | 返回供应商详细配置 |
| `/models/{id}` | PUT | 更新供应商 | 更新供应商配置 |
| `/models/{id}` | DELETE | 删除供应商 | 软删除供应商 |
| `/models/{id}/test` | POST | 测试供应商连接 | 测试 API 连接是否正常 |
**权限**: `manage:providers` (super_admin, provider_admin)
---
## 6. 计费与资源管理 (Billing Admin)
**路由前缀**: `/api/billing-admin`
### 6.1 配额管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/quota/user/{user_id}` | GET | 获取用户配额 | 返回用户配额信息 |
| `/quota/channel/{channel_id}` | GET | 获取渠道配额 | 返回渠道配额信息 |
| `/quota/alerts` | GET | 获取配额预警 | 返回活跃的配额预警 |
| `/quota/alerts/{id}/acknowledge` | PUT | 确认预警 | 标记预警已确认 |
| `/quota/alerts/{id}/resolve` | PUT | 解决预警 | 标记预警已解决 |
### 6.2 资源监控
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/resources/overview` | GET | 获取资源概览 | 返回平台资源使用概览 |
| `/resources/user/{user_id}` | GET | 获取用户资源 | 返回用户资源使用汇总 |
| `/resources/trends` | GET | 获取资源趋势 | 返回资源使用趋势数据 |
| `/resources/agent/{agent_id}` | GET | 获取 Agent 资源 | 返回 Agent 资源统计 |
### 6.3 事件管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/events/pending` | GET | 获取待处理事件 | 返回待处理的计费事件 |
| `/events/retry-failed` | POST | 重试失败事件 | 重试失败的计费事件 |
| `/events/stats` | GET | 获取事件统计 | 返回事件处理统计 |
### 6.4 追踪管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/traces/execution/{execution_id}` | GET | 获取执行追踪 | 返回执行追踪详情 |
| `/traces` | GET | 查询追踪记录 | 分页查询追踪记录 |
| `/traces/stats` | GET | 获取追踪统计 | 返回追踪统计数据 |
### 6.5 审计日志
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/audit/logs` | GET | 查询审计日志 | 分页查询审计日志 |
| `/audit/summary` | GET | 获取审计汇总 | 返回审计日志汇总 |
| `/audit/user/{user_id}/activity` | GET | 获取用户活动 | 返回用户活动历史 |
### 6.6 供应商健康检查
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/providers/health` | GET | 获取供应商健康状态 | 返回所有供应商健康状态 |
| `/providers/{id}/health` | GET | 获取单个供应商健康 | 返回供应商健康详情 |
| `/providers/health-check` | POST | 执行健康检查 | 触发所有供应商健康检查 |
### 6.7 模型定价管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/pricing/models` | GET | 获取模型定价 | 返回模型定价列表 |
| `/pricing/models` | POST | 创建/更新定价 | 设置模型定价 |
| `/pricing/calculate` | POST | 计算成本 | 计算模型调用成本 |
---
## 7. Agent 管理 (Agents)
**路由前缀**: `/agents`
### 7.1 模板管理
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/templates` | GET | 获取所有模板 | 从 Agent Manager 获取所有模板 |
| `/templates/platform` | GET | 获取平台模板 | 返回平台 Agent 模板 |
| `/templates/custom` | GET | 获取自定义模板 | 返回自定义 Agent 模板 |
| `/templates/{name}` | GET | 获取模板详情 | 返回指定模板的详细信息 |
### 7.2 Agent CRUD
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/` | POST | 创建 Agent | 创建 Agent,如有模板则在 K8s 创建 Pod |
| `/` | GET | 获取 Agent 列表 | 返回分页的 Agent 列表 |
| `/{agent_id}` | GET | 获取 Agent 详情 | 返回 Agent 详细信息 |
| `/{agent_id}` | DELETE | 删除 Agent | 删除 Agent 和关联的 K8s Pod |
### 7.3 Agent 状态和监控
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/{agent_id}/status` | GET | 获取 Agent 状态 | 从 K8s 获取实时状态 |
| `/{agent_id}/metrics` | GET | 获取 Agent 资源使用 | 返回 CPU/内存使用情况 |
### 7.4 Agent 执行
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/{agent_id}/execute` | POST | 执行 Agent | 执行 MCP 请求,记录计费 |
---
## 8. 工具管理 (Tools)
**路由前缀**: `/tools`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/` | GET | 获取工具列表 | 分页返回工具列表,支持筛选 |
| `/{tool_id}` | GET | 获取工具详情 | 返回工具详细信息 |
| `/` | POST | 创建工具 | 创建新工具 |
| `/{tool_id}` | PUT | 更新工具 | 更新工具配置 |
| `/{tool_id}` | DELETE | 删除工具 | 删除工具 |
| `/categories/list` | GET | 获取工具分类 | 返回所有工具分类 |
---
## 9. 会话管理 (Sessions)
**路由前缀**: `/sessions`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/` | POST | 创建会话 | 创建新的用户会话 |
| `/` | GET | 获取会话列表 | 分页返回用户会话 |
| `/{session_id}` | GET | 获取会话详情 | 返回会话详细信息 |
| `/{session_id}/complete` | PUT | 完成会话 | 标记会话为已完成 |
| `/{session_id}` | DELETE | 删除会话 | 删除会话 |
| `/cleanup` | POST | 清理旧会话 | 清理指定天数前的已完成会话 |
---
## 10. 监控与健康检查 (Monitoring)
### 10.1 健康检查
**路由前缀**: 无
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/health` | GET | 健康检查 | 返回系统健康状态快照 |
### 10.2 监控
**路由前缀**: `/api/v1/monitoring`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/metrics` | GET | 获取系统指标 | 返回 CPU、内存等系统指标 |
| `/stats` | GET | 获取服务统计 | 返回指定子系统的统计数据 |
| `/trends` | GET | 获取性能趋势 | 返回执行或 EU 消耗趋势 |
| `/alerts` | GET | 获取系统告警 | 返回告警列表 |
| `/dashboard` | GET | 获取监控仪表板 | 聚合健康、指标、统计、告警数据 |
---
## 11. WebSocket 接口
**路由前缀**: 无
| 接口 | 协议 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/ws/{agent_name_or_id}` | WebSocket | Agent 实时交互 | 支持连接池、消息队列、心跳机制的 MCP 交互 |
**消息类型**:
- `ping/pong`: 心跳消息
- `mcp_request`: MCP 请求
- `mcp_response`: MCP 响应
- `error`: 错误消息
- `welcome`: 欢迎消息
- `heartbeat`: 服务端心跳
---
## 12. 前端集成接口 (Frontend Integration)
**路由前缀**: `/api`
> 这些接口主要用于前端开发阶段,部分使用内存存储。
### 12.1 用户仪表板
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/user/dashboard/stats` | GET | 用户仪表板统计 |
| `/user/agents/activity` | GET | Agent 活动记录 |
| `/user/resources/usage` | GET | 资源使用情况 |
### 12.2 服务网关
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/gateway/select` | POST | 选择网关类型 |
| `/gateway/api/create` | POST | 创建网关 API |
| `/gateway/apis` | GET | 获取网关 API 列表 |
| `/gateway/monitoring` | GET | 网关监控 |
### 12.3 工具与数据
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/tools/generate` | POST | 生成工具 |
| `/tools/list` | GET | 获取工具列表 |
| `/data-templates/create` | POST | 创建数据模板 |
### 12.4 Agent 工厂
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/agents/platform` | GET | 获取平台 Agent |
| `/agents/deploy` | POST | 部署 Agent |
| `/agents/deployed` | GET | 获取已部署 Agent |
### 12.5 工作流
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/workflows/create` | POST | 创建工作流 |
| `/workflows/list` | GET | 获取工作流列表 |
| `/workflows/{id}` | PUT | 更新工作流 |
| `/workflows/{id}` | DELETE | 删除工作流 |
| `/workflows/{id}/run` | POST | 运行工作流 |
### 12.6 计费
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/billing/balance` | GET | 获取余额 |
| `/billing/history` | GET | 获取计费历史 |
| `/billing/recharge` | POST | 充值 |
### 12.7 渠道合作伙伴
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/channel/auth/login` | POST | 渠道登录 |
| `/channel/dashboard/stats` | GET | 渠道仪表板统计 |
| `/channel/agents/available` | GET | 可用 Agent |
| `/channel/tenants` | GET | 租户列表 |
| `/channel/tenants/create` | POST | 创建租户 |
| `/channel/tenants/{id}/resources` | PUT | 更新租户资源 |
| `/channel/tenants/{id}/billing` | PUT | 更新租户计费 |
| `/channel/tenants/{id}` | DELETE | 删除租户 |
| `/channel/tenants/{id}/status` | PUT | 更新租户状态 |
| `/channel/tenants/{id}/permissions` | PUT | 更新租户权限 |
| `/channel/resources/agents` | GET | 获取 Agent 资源 |
| `/channel/resources/models` | GET | 获取模型资源 |
| `/channel/resources/apply` | POST | 申请资源 |
| `/channel/billing/stats` | GET | 计费统计 |
| `/channel/admins` | GET | 管理员列表 |
| `/channel/admins/create` | POST | 创建管理员 |
| `/channel/admins/{id}/permissions` | PUT | 更新管理员权限 |
### 12.8 超级管理员
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/admin/auth/login` | POST | 管理员登录 |
| `/admin/dashboard/stats` | GET | 平台统计 |
| `/admin/channels` | GET | 渠道列表 |
| `/admin/channels/create` | POST | 创建渠道 |
| `/admin/channels/{id}/commission` | PUT | 更新佣金 |
| `/admin/channels/{id}/resources` | GET | 获取渠道资源 |
| `/admin/channels/{id}/resources` | PUT | 更新渠道资源 |
| `/admin/channels/applications` | GET | 申请列表 |
| `/admin/channels/applications/{id}/approve` | PUT | 审批申请 |
| `/admin/resources/models` | GET | 模型列表 |
| `/admin/resources/models/add` | POST | 添加模型 |
| `/admin/resources/agents` | GET | Agent 列表 |
| `/admin/resources/agents/{id}` | PUT | 更新 Agent |
| `/admin/monitoring/agents` | GET | Agent 监控 |
| `/admin/billing/overview` | GET | 计费概览 |
| `/admin/roles` | GET | 角色列表 |
| `/admin/channels/{id}/admins` | GET | 渠道管理员 |
| `/admin/admins/create` | POST | 创建管理员 |
| `/admin/providers/stats` | GET | 供应商统计 |
| `/admin/channels/backend/stats` | GET | 后端统计 |
### 12.9 供应商管理
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/providers/auth/login` | POST | 供应商登录 |
| `/providers/models` | GET | 模型列表 |
| `/providers/models/add` | POST | 添加模型 |
| `/providers/data` | GET | 供应商数据 |
---
## 13. 平台 Agent 配额管理
### 13.1 渠道路由
**路由前缀**: `/api/channel`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/available-platform-agents` | GET | 获取可用平台 Agent | 返回所有可申请的模板及当前配额 |
| `/applications/platform-agents` | POST | 申请平台 Agent | 提交配额申请 |
| `/applications/platform-agents` | GET | 获取申请列表 | 返回渠道的申请记录 |
| `/platform-agents` | GET | 获取已分配配额 | 返回渠道的配额列表 |
| `/tenants/{id}/platform-agents` | POST | 分配给租户 | 分配配额并启动 Pod |
### 13.2 管理员路由
**路由前缀**: `/api/admin`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/applications/platform-agents` | GET | 获取所有申请 | 返回所有渠道的申请 |
| `/applications/platform-agents/{id}/review` | PUT | 审批申请 | 批准或拒绝,创建配额 |
| `/platform-agents/templates` | GET | 获取模板列表 | 返回模板及管理员配置 |
| `/platform-agents/templates/{name}/config` | PUT | 配置模板 | 设置资源限制等 |
| `/platform-agents/templates/{name}/config` | GET | 获取模板配置 | 返回管理员配置 |
### 13.3 用户路由
**路由前缀**: `/api/user`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/platform-agents` | GET | 获取配额列表 | 返回用户的平台 Agent 配额 |
| `/platform-agents/{template}/instances` | GET | 获取实例列表 | 返回运行中的实例 |
| `/platform-agents/{agent_name}` | DELETE | 停止 Agent | 停止实例并释放配额 |
| `/platform-agents/quota` | GET | 获取配额使用情况 | 返回配额使用详情 |
| `/platform-agents/{agent_name}/status` | GET | 获取 Agent 状态 | 从 K8s 获取实时状态 |
---
## 14. Data Ingestion 服务
**服务端口**: 8001
### 14.1 健康检查
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/health` | GET | 健康检查 |
### 14.2 RapidAPI 集成
**路由前缀**: `/rapidapi`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/sync` | POST | 同步端点 | 后台同步 RapidAPI 端点 |
| `/test` | POST | 测试端点 | 代理测试 RapidAPI 调用 |
### 14.3 OpenAPI 解析
**路由前缀**: `/openapi`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/parse` | POST | 解析 OpenAPI 规范 | 下载并解析 OpenAPI 文档,生成工具 |
### 14.4 APILLAMA 处理
**路由前缀**: `/apillama`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/process` | POST | 处理 API 文档 | 使用 APILLAMA 转换 API 文档为结构化 Schema |
### 14.5 工具管理
**路由前缀**: `/tools`
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/generate` | POST | 生成工具 | 为 API 端点生成工具定义 |
| `/` | GET | 获取工具列表 | 从 Redis 返回生成的工具 |
| `/{tool_name}` | GET | 获取工具详情 | 返回单个工具定义 |
| `/{tool_name}` | DELETE | 删除工具 | 从 Redis 删除工具 |
### 14.6 统计与缓存
| 接口 | 方法 | 功能描述 | 业务逻辑 |
|------|------|----------|----------|
| `/stats` | GET | 获取统计信息 | 返回工具和缓存统计 |
| `/cache/clear` | POST | 清理缓存 | 清理处理缓存(保留工具注册) |
### 14.7 指标
| 接口 | 方法 | 功能描述 |
|------|------|----------|
| `/metrics` | GET | Prometheus 指标 |
---
## 附录:权限系统
### 角色定义
| 角色 | 描述 | 主要权限 |
|------|------|----------|
| `super_admin` | 超级管理员 | 所有权限 |
| `billing_admin` | 计费管理员 | 完整写入权限,管理租户、计费 |
| `operations_admin` | 运维管理员 | 只读权限,查看和监控 |
| `channel_admin` | 渠道管理员 | 渠道内部管理权限 |
| `user` | 普通用户 | 标准用户权限 |
### 权限列表
- `view:overview` - 查看概览
- `view:tenants` - 查看租户
- `view:resources` - 查看资源
- `view:billing` - 查看计费
- `view:applications` - 查看申请
- `manage:tenants` - 管理租户
- `manage:resources` - 管理资源
- `manage:billing` - 管理计费
- `manage:applications` - 管理申请
- `manage:providers` - 管理供应商
- `manage:channels` - 管理渠道
- `manage:admins` - 管理管理员
---
## 附录:LiteLLM 集成
### 集成点
1. **渠道创建** - 同时创建 LiteLLM Team
2. **渠道资源分配** - 更新 LiteLLM Team 的 models 列表
3. **租户创建** - 创建 LiteLLM Key(关联到渠道 Team)
4. **租户模型分配** - 更新 LiteLLM Key 的 models 权限
5. **模型调用** - 通过 LiteLLM Gateway 代理调用
### LiteLLM 客户端接口
| 方法 | 功能 |
|------|------|
| `create_team()` | 创建 Team |
| `update_team()` | 更新 Team(models、metadata) |
| `delete_team()` | 删除 Team |
| `create_key()` | 创建 Key |
| `update_key()` | 更新 Key(models) |
| `delete_key()` | 删除 Key |
| `list_models()` | 获取可用模型列表 |
---
## 附录:Agent Manager 集成
### 集成点
1. **获取模板列表** - 平台/自定义模板
2. **创建 Agent** - 在 K8s 中创建 Pod
3. **删除 Agent** - 删除 K8s Pod
4. **获取状态** - 获取 Pod 实时状态
5. **获取资源指标** - 获取 CPU/内存使用
### Agent Manager 客户端接口
| 方法 | 功能 |
|------|------|
| `list_templates()` | 获取所有模板 |
| `list_platform_templates()` | 获取平台模板 |
| `list_custom_templates()` | 获取自定义模板 |
| `get_template()` | 获取模板详情 |
| `create_agent()` | 创建 Agent Pod |
| `delete_agent()` | 删除 Agent Pod |
| `get_agent_status()` | 获取 Agent 状态 |
| `get_agent_metrics()` | 获取资源指标 |
| `list_agents()` | 获取所有运行中的 Agent |
---
## 统计
| 模块 | 接口数量 |
|------|----------|
| 认证模块 | 6 |
| 用户侧平台 | ~50 |
| 渠道合作伙伴 | ~40 |
| 超级管理员 | ~50 |
| 供应商管理 | 6 |
| 计费与资源管理 | 20 |
| Agent 管理 | 10 |
| 工具管理 | 6 |
| 会话管理 | 6 |
| 监控与健康检查 | 6 |
| WebSocket | 1 |
| 前端集成 | ~60 |
| 平台 Agent 配额 | 15 |
| Data Ingestion | 10 |
| **总计** | **~286** |
-640
View File
@@ -1,640 +0,0 @@
# Taiji-AI-PAD 项目 API 接口完整清单
本文档列出了项目中所有的 API 接口,包括接口路径、HTTP 方法、功能描述和权限要求。
---
## 目录
1. [MCP-Server 服务接口](#mcp-server-服务接口)
- [认证模块 (auth.py)](#1-认证模块-authpy)
- [超级管理员 API (admin.py)](#2-超级管理员-api-adminpy)
- [用户侧平台 API (user.py)](#3-用户侧平台-api-userpy)
- [渠道合作伙伴 API (channel.py)](#4-渠道合作伙伴-api-channelpy)
- [Agent 管理 (agents.py)](#5-agent-管理-agentspy)
- [供应商管理 (providers.py)](#6-供应商管理-providerspy)
- [会话管理 (sessions.py)](#7-会话管理-sessionspy)
- [工具管理 (tools.py)](#8-工具管理-toolspy)
- [WebSocket (websocket.py)](#9-websocket-websocketpy)
- [计费与资源管理 (billing_admin.py)](#10-计费与资源管理-billing_adminpy)
- [配额管理 (quota_management.py)](#11-配额管理-quota_managementpy)
- [平台 Agent 配额 (platform_agent_quota.py)](#12-平台-agent-配额-platform_agent_quotapy)
- [审计日志管理 (audit_management.py)](#13-审计日志管理-audit_managementpy)
- [事件管理 (event_management.py)](#14-事件管理-event_managementpy)
- [追踪管理 (trace_management.py)](#15-追踪管理-trace_managementpy)
- [定价管理 (pricing_management.py)](#16-定价管理-pricing_managementpy)
- [供应商健康检查 (provider_health_management.py)](#17-供应商健康检查-provider_health_managementpy)
- [资源监控 (resource_monitoring.py)](#18-资源监控-resource_monitoringpy)
- [前端集成 (frontend_integration.py)](#19-前端集成-frontend_integrationpy)
- [监控 (monitoring.py)](#20-监控-monitoringpy)
- [健康检查 (health.py)](#21-健康检查-healthpy)
- [Prometheus 指标 (metrics.py)](#22-prometheus-指标-metricspy)
2. [Data-Ingestion 服务接口](#data-ingestion-服务接口)
---
## MCP-Server 服务接口
### 1. 认证模块 (auth.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/auth/login` | 统一登录接口,支持用户/渠道/管理员/供应商登录 | 无 |
| POST | `/api/auth/logout` | 用户登出,将 token 加入黑名单 | 已认证用户 |
| POST | `/api/auth/refresh` | 刷新访问令牌 | 已认证用户 |
| PUT | `/api/auth/password` | 修改密码 | 已认证用户 |
| GET | `/api/auth/keys/info` | 获取当前用户的 API 密钥信息 | 已认证用户 |
| POST | `/api/auth/keys/regenerate` | 重新生成 API 密钥 | 已认证用户 |
---
### 2. 超级管理员 API (admin.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/admin/admins` | 获取管理员列表 | super_admin |
| POST | `/api/admin/admins/create` | 创建管理员 | super_admin |
| DELETE | `/api/admin/admins/{admin_id}` | 删除管理员 | super_admin |
| GET | `/api/admin/dashboard/recent-logins` | 获取最近登录的租户列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/dashboard/stats` | 获取平台全局统计数据 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/tenants` | 获取所有租户列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/channels` | 获取渠道列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/admin/channels/create` | 创建渠道 | super_admin, billing_admin |
| PUT | `/api/admin/channels/{channel_id}` | 更新渠道信息 | super_admin, billing_admin |
| DELETE | `/api/admin/channels/{channel_id}` | 删除渠道 | super_admin |
| GET | `/api/admin/channels/{channel_id}/resources` | 获取渠道资源配置 | super_admin, billing_admin, operations_admin |
| PUT | `/api/admin/channels/{channel_id}/resources` | 分配渠道资源 | super_admin, billing_admin |
| PUT | `/api/admin/channels/{channel_id}/commission` | 更新渠道佣金比例 | super_admin, billing_admin |
| GET | `/api/admin/resources/allocation-stats` | 获取资源分配统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/channels/applications` | 获取渠道资源申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/channels/applications/{application_id}/review` | 审批渠道资源申请 | super_admin, billing_admin |
| GET | `/api/admin/resources/models` | 获取模型供应商列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/resources/agents` | 获取所有 Agent 资源 | super_admin, billing_admin, operations_admin |
| DELETE | `/api/admin/resources/agents/{agent_id}` | 删除 Agent 资源 | super_admin |
| PUT | `/api/admin/resources/agents/{agent_id}/config` | 更新 Agent 配置 | super_admin, billing_admin |
| GET | `/api/admin/monitoring/agents` | 监控 Agent 健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/billing/overview` | 获取三维度计费统计 | super_admin, billing_admin |
| GET | `/api/admin/providers/applications` | 获取供应商申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/providers/applications/{application_id}/review` | 审批供应商申请 | super_admin, billing_admin |
| GET | `/api/admin/providers/access` | 获取渠道供应商授权列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/admin/providers/access/{access_id}` | 更新供应商授权 | super_admin, billing_admin |
| DELETE | `/api/admin/providers/access/{access_id}` | 撤销供应商授权 | super_admin |
| GET | `/api/admin/channels/{channel_id}/admins` | 获取渠道管理员列表 | super_admin, billing_admin |
| GET | `/api/admin/roles` | 获取可用角色列表 | super_admin |
| GET | `/api/admin/platform-agents/templates` | 获取平台 Agent 模板列表 | super_admin, billing_admin |
| GET | `/api/admin/applications/platform-agents` | 获取平台 Agent 申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/applications/platform-agents/{application_id}/review` | 审批平台 Agent 申请 | super_admin, billing_admin |
| GET | `/api/admin/platform-agents/allocations` | 查看平台 Agent 分配情况 | super_admin, billing_admin, operations_admin |
| POST | `/api/admin/platform-agents/allocate` | 直接分配平台 Agent 配额 | super_admin, billing_admin |
| DELETE | `/api/admin/platform-agents/allocate` | 撤销平台 Agent 配额 | super_admin |
| GET | `/api/admin/platform-agents/status` | 查看平台 Agent 运行状态 | super_admin, billing_admin, operations_admin |
---
### 3. 用户侧平台 API (user.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/dashboard/stats` | 获取用户仪表板统计数据 | 已认证用户 |
| GET | `/api/user/agents/activity` | 获取 Agent 活动数据 | 已认证用户 |
| POST | `/api/user/gateway/select` | 选择网关类型 (MCP/A2A/API) | 已认证用户 |
| POST | `/api/user/gateway/api/create` | 创建网关 API | 已认证用户 |
| GET | `/api/user/gateway/apis` | 获取网关 API 列表 | 已认证用户 |
| GET | `/api/user/gateway/monitoring` | 获取网关监控数据 | 已认证用户 |
| GET | `/api/user/custom-agent-quota` | 获取自定义 Agent 配额 | 已认证用户 |
| POST | `/api/user/tools/generate` | 生成工具(创建自定义 Agent) | 已认证用户 |
| POST | `/api/user/data-templates/create` | 创建数据模板 | 已认证用户 |
| GET | `/api/user/agents/platform` | 获取平台 Agent 列表 | 已认证用户 |
| POST | `/api/user/agents/deploy` | 部署 Agent 到 K8s | 已认证用户 |
| POST | `/api/user/workflows/create` | 创建工作流 | 已认证用户 |
| GET | `/api/user/billing/balance` | 获取余额信息 | 已认证用户 |
| POST | `/api/user/billing/recharge` | 充值余额 | 已认证用户 |
| GET | `/api/user/billing/history` | 获取计费历史 | 已认证用户 |
| GET | `/api/user/platform-agents/available` | 获取可用平台 Agent | 已认证用户 |
| POST | `/api/user/platform-agents/use` | 使用平台 Agent | 已认证用户 |
| DELETE | `/api/user/platform-agents/{instance_name}` | 停止平台 Agent | 已认证用户 |
| GET | `/api/user/platform-agents/instances` | 获取平台 Agent 实例列表 | 已认证用户 |
| GET | `/api/user/custom-agents/templates` | 获取自定义 Agent 模板 | 已认证用户 |
| POST | `/api/user/custom-agents` | 创建自定义 Agent | 已认证用户 |
| DELETE | `/api/user/custom-agents/{name}` | 删除自定义 Agent | 已认证用户 |
| PUT | `/api/user/custom-agents/{name}/scale` | 扩缩容自定义 Agent | 已认证用户 |
| GET | `/api/user/custom-agents` | 获取自定义 Agent 列表 | 已认证用户 |
| GET | `/api/user/custom-agents/{name}/logs` | 获取 Agent 日志 | 已认证用户 |
| POST | `/api/user/custom-agents/{name}/restart` | 重启 Agent | 已认证用户 |
| GET | `/api/user/agent-billing/stats` | 获取 Agent 计费统计 | 已认证用户 |
| GET | `/api/user/agent-billing/history` | 获取 Agent 计费历史 | 已认证用户 |
---
### 4. 渠道合作伙伴 API (channel.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/channel/tenants` | 获取渠道下租户列表 | channel_admin |
| POST | `/api/channel/tenants/create` | 创建租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/resources` | 分配租户资源 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/billing` | 更新租户计费设置 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/recharge` | 为租户充值 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/credit` | 设置租户授信额度 | channel_admin |
| DELETE | `/api/channel/tenants/{tenant_id}` | 删除租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/status` | 更新租户状态 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/permissions` | 更新租户权限 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/password` | 重置租户密码 | channel_admin |
| GET | `/api/channel/tenants/{tenant_id}/custom-agent-quota` | 获取租户自定义 Agent 配额 | channel_admin |
| POST | `/api/channel/admins/create` | 创建渠道管理员 | channel_admin |
| GET | `/api/channel/admins` | 获取渠道管理员列表 | channel_admin |
| POST | `/api/channel/resources/apply` | 申请资源 | channel_admin |
| GET | `/api/channel/billing/stats` | 获取渠道计费统计 | channel_admin |
| GET | `/api/channel/providers` | 获取可用供应商列表 | channel_admin |
| POST | `/api/channel/providers/apply` | 申请使用供应商 | channel_admin |
| GET | `/api/channel/providers/applications` | 获取供应商申请列表 | channel_admin |
| GET | `/api/channel/providers/access` | 获取已授权供应商列表 | channel_admin |
| GET | `/api/channel/available-platform-agents` | 查看可用平台 Agent 模板 | channel_admin |
| POST | `/api/channel/applications/platform-agents` | 申请平台 Agent | channel_admin |
| GET | `/api/channel/applications/platform-agents` | 查看平台 Agent 申请列表 | channel_admin |
| GET | `/api/channel/platform-agents` | 查看渠道平台 Agent 配额 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/platform-agents` | 分配平台 Agent 给租户 | channel_admin |
| GET | `/api/channel/tenants/{tenant_id}/platform-agents/usage` | 查看租户平台 Agent 使用情况 | channel_admin |
| GET | `/api/channel/agent-billing/stats` | 获取渠道 Agent 计费统计 | channel_admin |
| GET | `/api/channel/agent-billing/history` | 获取渠道 Agent 计费历史 | channel_admin |
| GET | `/api/channel/agent-billing/tenant-summary` | 获取租户 Agent 计费汇总 | channel_admin |
---
### 5. Agent 管理 (agents.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/agents/templates` | 获取所有 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/platform` | 获取平台 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/custom` | 获取自定义 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/{template_name}` | 获取模板详情 | 已认证用户 |
| POST | `/agents` | 创建 Agent | 已认证用户 |
| GET | `/agents` | 获取 Agent 列表 | 已认证用户 |
| GET | `/agents/{agent_id}` | 获取 Agent 详情 | 已认证用户 |
| DELETE | `/agents/{agent_id}` | 删除 Agent | 已认证用户 |
| GET | `/agents/{agent_id}/status` | 获取 Agent 实时状态 | 已认证用户 |
| GET | `/agents/{agent_id}/metrics` | 获取 Agent 资源使用 | 已认证用户 |
| POST | `/agents/{agent_id}/execute` | 执行 Agent 任务 | 已认证用户 |
---
### 6. 供应商管理 (providers.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/providers/models` | 获取所有模型供应商 | 已认证用户 |
| POST | `/api/providers/models/create` | 创建模型供应商 | super_admin, billing_admin |
| GET | `/api/providers/models/{provider_id}` | 获取供应商详情 | 已认证用户 |
| PUT | `/api/providers/models/{provider_id}` | 更新供应商配置 | super_admin, billing_admin |
| DELETE | `/api/providers/models/{provider_id}` | 删除供应商 | super_admin |
| POST | `/api/providers/models/{provider_id}/test` | 测试供应商连接 | super_admin, billing_admin |
---
### 7. 会话管理 (sessions.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/sessions` | 创建会话 | 已认证用户 |
| GET | `/sessions` | 获取会话列表 | 已认证用户 |
| GET | `/sessions/{session_id}` | 获取会话详情 | 已认证用户 |
| PUT | `/sessions/{session_id}/complete` | 完成会话 | 已认证用户 |
| DELETE | `/sessions/{session_id}` | 删除会话 | 已认证用户 |
| POST | `/sessions/cleanup` | 清理旧会话 | 已认证用户 |
---
### 8. 工具管理 (tools.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/tools` | 获取工具列表 | 已认证用户 |
| GET | `/tools/{tool_id}` | 获取工具详情 | 已认证用户 |
| POST | `/tools` | 创建工具 | 已认证用户 |
| PUT | `/tools/{tool_id}` | 更新工具 | 已认证用户 |
| DELETE | `/tools/{tool_id}` | 删除工具 | 已认证用户 |
| GET | `/tools/categories/list` | 获取工具分类列表 | 已认证用户 |
---
### 9. WebSocket (websocket.py)
| 协议 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| WS | `/ws/{agent_name_or_id}` | WebSocket 实时 MCP 交互 | 已认证用户 |
**功能说明**:
- 支持连接池管理(最大 1000 连接)
- 心跳机制(每 30 秒)
- 消息队列
- 自动清理超时连接(90 秒无心跳)
---
### 10. 计费与资源管理 (billing_admin.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/quota/user/{user_id}` | 获取用户配额信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/channel/{channel_id}` | 获取渠道配额信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/alerts` | 获取配额预警列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/acknowledge` | 确认配额预警 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/resolve` | 解决配额预警 | super_admin, billing_admin |
| GET | `/api/billing-admin/resources/overview` | 获取平台资源概览 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/user/{user_id}` | 获取用户资源使用汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/trends` | 获取资源使用趋势 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/agent/{agent_id}` | 获取 Agent 资源统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/events/pending` | 获取待处理事件 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/events/retry-failed` | 重试失败事件 | super_admin, billing_admin |
| GET | `/api/billing-admin/events/stats` | 获取事件统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/execution/{execution_id}` | 获取执行追踪详情 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces` | 查询追踪记录 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/stats` | 获取追踪统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/logs` | 查询审计日志 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/summary` | 获取审计日志汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/user/{user_id}/activity` | 获取用户活动历史 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/health` | 获取所有供应商健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/{provider_id}/health` | 获取单个供应商健康详情 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/providers/health-check` | 执行所有供应商健康检查 | super_admin, billing_admin |
| GET | `/api/billing-admin/pricing/models` | 获取模型定价列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/pricing/models` | 创建或更新模型定价 | super_admin, billing_admin |
| POST | `/api/billing-admin/pricing/calculate` | 计算模型调用成本 | super_admin, billing_admin, operations_admin |
---
### 11. 配额管理 (quota_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/quota/user/{user_id}` | 获取用户配额汇总信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/channel/{channel_id}` | 获取渠道配额汇总信息 | super_admin, billing_admin |
| GET | `/api/billing-admin/quota/alerts` | 获取配额预警列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/acknowledge` | 确认配额预警 | super_admin, billing_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/resolve` | 解决配额预警 | super_admin, billing_admin |
---
### 12. 平台 Agent 配额 (platform_agent_quota.py)
#### 渠道路由 (channel_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/channel/available-platform-agents` | 获取可用平台 Agent 模板 | channel_admin |
| POST | `/api/channel/applications/platform-agents` | 申请平台 Agent 配额 | channel_admin |
| GET | `/api/channel/applications/platform-agents` | 查看渠道平台 Agent 申请列表 | channel_admin |
| GET | `/api/channel/platform-agents` | 查看渠道已分配的平台 Agent 配额 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/platform-agents` | 分配平台 Agent 给租户 | channel_admin |
#### 管理员路由 (admin_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/admin/applications/platform-agents` | 查看所有平台 Agent 申请 | admin, super_admin |
| PUT | `/api/admin/applications/platform-agents/{application_id}/review` | 审批平台 Agent 申请 | admin, super_admin |
| GET | `/api/admin/platform-agents/templates` | 获取平台 Agent 模板列表 | admin, super_admin |
| PUT | `/api/admin/platform-agents/templates/{template_name}/config` | 配置平台 Agent 模板 | admin, super_admin |
| GET | `/api/admin/platform-agents/templates/{template_name}/config` | 获取平台 Agent 模板配置 | admin, super_admin |
#### 用户路由 (user_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/platform-agents` | 查看用户可用的平台 Agent 配额 | 已认证用户 |
| GET | `/api/user/platform-agents/{template}/instances` | 查看用户的平台 Agent 实例 | 已认证用户 |
| DELETE | `/api/user/platform-agents/{agent_name}` | 停止平台 Agent 实例 | 已认证用户 |
| GET | `/api/user/platform-agents/quota` | 查看用户平台 Agent 配额使用情况 | 已认证用户 |
| GET | `/api/user/platform-agents/{agent_name}/status` | 查看平台 Agent 实例状态 | 已认证用户 |
---
### 13. 审计日志管理 (audit_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/audit/logs` | 查询审计日志(分页) | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/summary` | 获取审计日志汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/user/{user_id}/activity` | 获取用户活动历史 | super_admin, billing_admin, operations_admin |
---
### 14. 事件管理 (event_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/events/pending` | 获取待处理的计费事件列表 | super_admin, billing_admin |
| POST | `/api/billing-admin/events/retry-failed` | 重试失败的计费事件 | super_admin, billing_admin |
| GET | `/api/billing-admin/events/stats` | 获取计费事件统计 | super_admin, billing_admin, operations_admin |
---
### 15. 追踪管理 (trace_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/traces/execution/{execution_id}` | 获取执行追踪详情 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces` | 查询追踪记录(分页) | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/stats` | 获取追踪统计 | super_admin, billing_admin, operations_admin |
---
### 16. 定价管理 (pricing_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/pricing/models` | 获取模型定价列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/pricing/models` | 创建或更新模型定价 | super_admin, billing_admin |
| POST | `/api/billing-admin/pricing/calculate` | 计算模型调用成本 | super_admin, billing_admin, operations_admin |
---
### 17. 供应商健康检查 (provider_health_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/providers/health` | 获取所有供应商健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/{provider_id}/health` | 获取供应商健康详情 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/providers/health-check` | 执行供应商健康检查 | super_admin, billing_admin |
---
### 18. 资源监控 (resource_monitoring.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/resources/overview` | 获取平台资源概览 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/user/{user_id}` | 获取用户资源使用汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/trends` | 获取资源使用趋势 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/agent/{agent_id}` | 获取 Agent 资源统计 | super_admin, billing_admin, operations_admin |
---
### 19. 前端集成 (frontend_integration.py)
#### 用户仪表板
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/dashboard/stats` | 获取用户仪表板统计 | 已认证用户 |
| GET | `/api/user/agents/activity` | 获取 Agent 活动数据 | 已认证用户 |
| GET | `/api/user/resources/usage` | 获取用户资源使用情况 | 已认证用户 |
#### 服务网关
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/gateway/select` | 选择网关类型 | 已认证用户 |
| POST | `/api/gateway/api/create` | 创建网关 API | 已认证用户 |
| GET | `/api/gateway/apis` | 获取网关 API 列表 | 已认证用户 |
| GET | `/api/gateway/monitoring` | 获取网关监控数据 | 已认证用户 |
#### 数据与工具
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/tools/generate` | 生成工具 | 已认证用户 |
| GET | `/api/tools/list` | 获取工具列表 | 已认证用户 |
| POST | `/api/data-templates/create` | 创建数据模板 | 已认证用户 |
#### Agent 工厂
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/agents/platform` | 获取平台 Agent 列表 | 已认证用户 |
| POST | `/api/agents/deploy` | 部署 Agent | 已认证用户 |
| GET | `/api/agents/deployed` | 获取已部署 Agent 列表 | 已认证用户 |
#### 工作流
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/workflows/create` | 创建工作流 | 已认证用户 |
| GET | `/api/workflows/list` | 获取工作流列表 | 已认证用户 |
| PUT | `/api/workflows/{workflow_id}` | 更新工作流 | 已认证用户 |
| DELETE | `/api/workflows/{workflow_id}` | 删除工作流 | 已认证用户 |
#### 计费与资源
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing/balance` | 获取余额 | 已认证用户 |
| GET | `/api/billing/history` | 获取计费历史 | 已认证用户 |
| POST | `/api/billing/recharge` | 充值 | 已认证用户 |
#### 渠道合作伙伴
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/channel/auth/login` | 渠道登录 | 无 |
| GET | `/api/channel/dashboard/stats` | 渠道仪表板统计 | channel_admin |
| GET | `/api/channel/agents/available` | 获取可用 Agent | channel_admin |
| GET | `/api/channel/tenants` | 获取租户列表 | channel_admin |
| POST | `/api/channel/tenants/create` | 创建租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/resources` | 更新租户资源 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/billing` | 更新租户计费 | channel_admin |
| DELETE | `/api/channel/tenants/{tenant_id}` | 删除租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/status` | 更新租户状态 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/permissions` | 更新租户权限 | channel_admin |
| GET | `/api/channel/resources/agents` | 获取渠道 Agent 资源 | channel_admin |
| GET | `/api/channel/resources/models` | 获取渠道模型资源 | channel_admin |
| POST | `/api/channel/resources/apply` | 申请资源 | channel_admin |
| GET | `/api/channel/billing/stats` | 获取渠道计费统计 | channel_admin |
| GET | `/api/channel/admins` | 获取渠道管理员列表 | channel_admin |
| POST | `/api/channel/admins/create` | 创建渠道管理员 | channel_admin |
| PUT | `/api/channel/admins/{admin_id}/permissions` | 更新管理员权限 | channel_admin |
#### 超级管理员
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/admin/auth/login` | 管理员登录 | 无 |
| GET | `/api/admin/dashboard/stats` | 管理员仪表板统计 | super_admin |
| GET | `/api/admin/channels` | 获取渠道列表 | super_admin |
| POST | `/api/admin/channels/create` | 创建渠道 | super_admin |
| PUT | `/api/admin/channels/{channel_id}/commission` | 更新渠道佣金 | super_admin |
| GET | `/api/admin/channels/{channel_id}/resources` | 获取渠道资源 | super_admin |
| PUT | `/api/admin/channels/{channel_id}/resources` | 更新渠道资源 | super_admin |
| GET | `/api/admin/channels/applications` | 获取渠道申请列表 | super_admin |
| PUT | `/api/admin/channels/applications/{request_id}/approve` | 审批渠道申请 | super_admin |
| GET | `/api/admin/resources/models` | 获取模型资源 | super_admin |
| POST | `/api/admin/resources/models/add` | 添加模型资源 | super_admin |
| GET | `/api/admin/resources/agents` | 获取 Agent 资源 | super_admin |
| PUT | `/api/admin/resources/agents/{agent_id}` | 更新 Agent 资源 | super_admin |
| GET | `/api/admin/monitoring/agents` | 监控 Agent | super_admin |
| GET | `/api/admin/billing/overview` | 计费概览 | super_admin |
| GET | `/api/admin/roles` | 获取角色列表 | super_admin |
| GET | `/api/admin/channels/{channel_id}/admins` | 获取渠道管理员 | super_admin |
| POST | `/api/admin/admins/create` | 创建管理员 | super_admin |
| GET | `/api/admin/providers/stats` | 获取供应商统计 | super_admin |
| GET | `/api/admin/channels/backend/stats` | 获取后端统计 | super_admin |
#### 供应商管理
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/providers/auth/login` | 供应商登录 | 无 |
| GET | `/api/providers/models` | 获取供应商模型 | provider_admin |
| POST | `/api/providers/models/add` | 添加供应商模型 | provider_admin |
| GET | `/api/providers/data` | 获取供应商数据 | provider_admin |
---
### 20. 监控 (monitoring.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/v1/monitoring/metrics` | 获取系统指标 | 无 |
| GET | `/api/v1/monitoring/stats` | 获取服务统计 | 无 |
| GET | `/api/v1/monitoring/trends` | 获取性能趋势 | 无 |
| GET | `/api/v1/monitoring/alerts` | 获取系统告警 | 无 |
| GET | `/api/v1/monitoring/dashboard` | 获取监控仪表板 | 无 |
---
### 21. 健康检查 (health.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/health` | 系统健康检查 | 无 |
---
### 22. Prometheus 指标 (metrics.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/metrics` | 暴露 Prometheus 指标 | 无 |
---
## Data-Ingestion 服务接口
### 1. APILLAMA 处理 (apillama.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/apillama/process` | 将 API 文档转换为结构化 schema | 无 |
---
### 2. 健康检查 (health.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/health` | 服务健康检查 | 无 |
---
### 3. Prometheus 指标 (metrics.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/metrics` | 暴露 Prometheus 指标 | 无 |
---
### 4. OpenAPI 解析 (openapi.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/openapi/parse` | 下载并解析 OpenAPI 文档 | 无 |
---
### 5. RapidAPI 集成 (rapidapi.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/rapidapi/sync` | 触发 RapidAPI 端点同步 | 无 |
| POST | `/rapidapi/test` | 测试 RapidAPI 端点 | 无 |
---
### 6. 统计与缓存 (stats.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/stats` | 获取工具和缓存统计 | 无 |
| POST | `/cache/clear` | 清理缓存 | 无 |
---
### 7. 工具注册 (tools.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/tools/generate` | 为 API 端点生成工具 | 无 |
| GET | `/tools` | 获取工具列表 | 无 |
| GET | `/tools/{tool_name}` | 获取工具详情 | 无 |
| DELETE | `/tools/{tool_name}` | 删除工具 | 无 |
---
## 接口统计
### MCP-Server 服务
| 模块 | 接口数量 |
|------|----------|
| 认证模块 | 6 |
| 超级管理员 API | 35 |
| 用户侧平台 API | 28 |
| 渠道合作伙伴 API | 27 |
| Agent 管理 | 11 |
| 供应商管理 | 6 |
| 会话管理 | 6 |
| 工具管理 | 6 |
| WebSocket | 1 |
| 计费与资源管理 | 24 |
| 配额管理 | 5 |
| 平台 Agent 配额 | 15 |
| 审计日志管理 | 3 |
| 事件管理 | 3 |
| 追踪管理 | 3 |
| 定价管理 | 3 |
| 供应商健康检查 | 3 |
| 资源监控 | 4 |
| 前端集成 | 50+ |
| 监控 | 5 |
| 健康检查 | 1 |
| Prometheus 指标 | 1 |
### Data-Ingestion 服务
| 模块 | 接口数量 |
|------|----------|
| APILLAMA 处理 | 1 |
| 健康检查 | 1 |
| Prometheus 指标 | 1 |
| OpenAPI 解析 | 1 |
| RapidAPI 集成 | 2 |
| 统计与缓存 | 2 |
| 工具注册 | 4 |
---
## 角色权限说明
| 角色 | 说明 |
|------|------|
| `super_admin` | 超级管理员,拥有系统所有权限 |
| `billing_admin` | 计费管理员,完整写入权限,可创建渠道、管理租户、计费操作 |
| `operations_admin` | 运维管理员,只读权限,仅查看和监控 |
| `channel_admin` | 渠道管理员,渠道内部管理权限 |
| `provider_admin` | 供应商管理员,管理供应商模型 |
| `user` | 普通用户,标准用户权限 |
---
## 技术栈
- **Web 框架**: FastAPI
- **ORM**: SQLAlchemy (异步)
- **认证**: JWT (JSON Web Token)
- **权限系统**: RBAC (基于角色的访问控制)
- **Kubernetes 集成**: Agent Manager 客户端
- **实时通信**: WebSocket
- **监控**: Prometheus
- **消息队列**: NATS
- **缓存**: Redis
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-156
View File
@@ -1,156 +0,0 @@
# 租户用户端 - 接口测试报告
> **测试时间**: 2026-01-07
> **测试环境**: Docker Compose 部署,端口 8002
> **测试账号**: 66@66.com / 66
---
## 测试概览
| 状态 | 数量 | 说明 |
|------|------|------|
| ✅ 测试通过 | 30 | 接口正常工作 |
| ⚠️ 业务限制 | 2 | 接口正常但受业务规则限制 |
| **总计** | **32** | - |
---
## 详细测试结果
### 认证模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B1 | 用户登录 | `POST /api/auth/login` | ✅ 通过 | 返回token和用户信息 |
| B2 | 用户登出 | `POST /api/auth/logout` | ✅ 通过 | 成功登出 |
| B3 | 刷新Token | `POST /api/auth/refresh` | ✅ 通过 | 返回新token |
| B4 | 修改密码 | `PUT /api/auth/password` | ✅ 通过 | 需要正确的旧密码 |
| B5 | 重新生成API密钥 | `POST /api/auth/keys/regenerate` | ✅ 通过 | 返回新API密钥 |
| D1 | 获取API密钥信息 | `GET /api/auth/keys/info` | ✅ 通过 | 返回脱敏的密钥信息 |
### 概览模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| D2 | 用户仪表板统计 | `GET /api/user/dashboard/stats` | ✅ 通过 | 返回activeAgents, totalRequests等 |
| D3 | 监控仪表盘 | `GET /api/v1/monitoring/dashboard` | ✅ 通过 | 返回健康状态和指标 |
| D4 | 计费余额 | `GET /api/user/billing/balance` | ✅ 通过 | 返回balance, monthlySpent |
| D5 | 监控趋势数据 | `GET /api/v1/monitoring/trends` | ✅ 通过 | 支持metric和period参数 |
### 服务网关模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B6 | 创建API | `POST /api/user/gateway/api/create` | ✅ 通过 | 支持json和url方式 |
| B7 | 选择网关类型 | `POST /api/user/gateway/select` | ✅ 通过 | 支持MCP, A2A, API |
| D6 | 网关API列表 | `GET /api/user/gateway/apis` | ✅ 通过 | 返回用户创建的API列表 |
| D7 | 网关监控数据 | `GET /api/user/gateway/monitoring` | ✅ 通过 | 返回uptime, latency等 |
| D8 | 模型提供商列表 | `GET /api/providers/models` | ✅ 通过 | 返回可用的模型提供商 |
### 数据与工具模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B8 | 生成工具 | `POST /api/user/tools/generate` | ✅ 通过 | frameworkTemplate需为MCP/A2A/API |
| B9 | 创建数据模板 | `POST /api/user/data-templates/create` | ✅ 通过 | 支持json_api和cloud_storage类型 |
| D9 | 工具列表 | `GET /tools` | ✅ 通过 | 支持分页和过滤 |
| D10 | 统计信息 | `GET /stats` | ⚠️ 不适用 | 此接口在data-ingestion服务 |
### 代理工厂模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B10 | 部署Agent | `POST /api/user/agents/deploy` | ✅ 通过 | 需要有效的agentId |
| B11 | 创建自定义Agent | `POST /api/user/custom-agents` | ⚠️ 业务限制 | 需要渠道分配配额 |
| D11 | 平台Agent列表 | `GET /api/user/agents/platform` | ✅ 通过 | 返回可用的平台Agent |
| D12 | 已部署Agent列表 | `GET /agents` | ✅ 通过 | 返回用户的Agent列表 |
| D13 | 自定义Agent列表 | `GET /api/user/custom-agents` | ✅ 通过 | 返回用户的自定义Agent |
### 编排中心模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B12 | 创建工作流 | `POST /api/user/workflows/create` | ✅ 通过 | 支持最多3个节点 |
| B13 | 运行工作流 | `POST /api/user/workflows/{id}/run` | ✅ 通过 | 返回执行结果 |
| B14 | 删除工作流 | `DELETE /api/user/workflows/{id}` | ✅ 通过 | 成功删除工作流 |
| D14 | 工作流列表 | `GET /api/user/workflows` | ✅ 通过 | 返回用户的工作流列表 |
### 计费与资源模块
| 序号 | 接口名称 | 路径 | 状态 | 备注 |
|------|----------|------|------|------|
| B15 | 充值 | `POST /api/user/billing/recharge` | ✅ 通过 | 返回支付URL |
| B16 | 导出账单 | `GET /api/user/billing/history?export=` | ✅ 通过 | 返回下载URL |
| D15 | 计费余额 | `GET /api/user/billing/balance` | ✅ 通过 | 同D4 |
| D16 | 计费历史 | `GET /api/user/billing/history` | ✅ 通过 | 支持时间范围和分页 |
---
## 修复记录
### 本次测试中修复的问题
1. **D8 模型提供商列表** - 移除了权限检查,允许所有认证用户访问
2. **D9 工具列表** - 修复了 `user_id` 键访问错误,改用 `.get()` 方法
3. **D9 工具列表** - 修复了 `ToolResponse.owner_id` 字段验证,允许为空
4. **D12 已部署Agent列表** - 修复了 `AgentCard.role` 和 `goal` 字段验证,允许为空
5. **D13 自定义Agent列表** - 添加了 `is_platform_agent`, `start_time`, `end_time` 字段到数据库
6. **B13 运行工作流** - 新增了 `POST /api/user/workflows/{id}/run` 接口
7. **B14 删除工作流** - 新增了 `DELETE /api/user/workflows/{id}` 接口
8. **D14 工作流列表** - 新增了 `GET /api/user/workflows` 接口
### 数据库迁移
执行了迁移脚本 `010_add_agent_billing_fields.sql`,添加了以下字段:
- `agent_billing_records.is_platform_agent` (BOOLEAN)
- `agent_billing_records.start_time` (TIMESTAMP)
- `agent_billing_records.end_time` (TIMESTAMP)
---
## 接口路径差异说明
根据文档,以下接口存在路径差异,前端需要调整:
| 接口 | 前端期望路径 | 后端实际路径 |
|------|-------------|-------------|
| 创建自定义Agent | `/api/user/agents/custom/create` | `/api/user/custom-agents` |
| 自定义Agent列表 | `/api/user/agents/custom` | `/api/user/custom-agents` |
| 工作流列表 | `/api/user/workflows` | `/api/user/workflows` ✅ 已添加 |
| 删除工作流 | `/api/user/workflows/{id}` | `/api/user/workflows/{id}` ✅ 已添加 |
---
## 测试命令示例
```bash
# 登录获取Token
curl -X POST http://localhost:8002/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "66@66.com", "password": "66", "role": "user"}'
# 使用Token访问接口
TOKEN="your_token_here"
curl -X GET http://localhost:8002/api/user/dashboard/stats \
-H "Authorization: Bearer $TOKEN"
```
---
## 总结
所有32个接口均已测试完成:
- **30个接口** 完全正常工作
- **2个接口** 受业务规则限制(需要配额或在其他服务)
测试过程中发现并修复了8个问题,包括字段验证、权限检查和缺失接口等。
---
## 版本历史
| 版本 | 日期 | 更新内容 |
|------|------|----------|
| v1.0.0 | 2026-01-07 | 初始测试报告 |
| v1.1.0 | 2026-01-07 | 修复所有发现的问题,完成全部接口测试 |
-640
View File
@@ -1,640 +0,0 @@
# Taiji-AI-PAD 项目 API 接口完整清单
本文档列出了项目中所有的 API 接口,包括接口路径、HTTP 方法、功能描述和权限要求。
---
## 目录
1. [MCP-Server 服务接口](#mcp-server-服务接口)
- [认证模块 (auth.py)](#1-认证模块-authpy)
- [超级管理员 API (admin.py)](#2-超级管理员-api-adminpy)
- [用户侧平台 API (user.py)](#3-用户侧平台-api-userpy)
- [渠道合作伙伴 API (channel.py)](#4-渠道合作伙伴-api-channelpy)
- [Agent 管理 (agents.py)](#5-agent-管理-agentspy)
- [供应商管理 (providers.py)](#6-供应商管理-providerspy)
- [会话管理 (sessions.py)](#7-会话管理-sessionspy)
- [工具管理 (tools.py)](#8-工具管理-toolspy)
- [WebSocket (websocket.py)](#9-websocket-websocketpy)
- [计费与资源管理 (billing_admin.py)](#10-计费与资源管理-billing_adminpy)
- [配额管理 (quota_management.py)](#11-配额管理-quota_managementpy)
- [平台 Agent 配额 (platform_agent_quota.py)](#12-平台-agent-配额-platform_agent_quotapy)
- [审计日志管理 (audit_management.py)](#13-审计日志管理-audit_managementpy)
- [事件管理 (event_management.py)](#14-事件管理-event_managementpy)
- [追踪管理 (trace_management.py)](#15-追踪管理-trace_managementpy)
- [定价管理 (pricing_management.py)](#16-定价管理-pricing_managementpy)
- [供应商健康检查 (provider_health_management.py)](#17-供应商健康检查-provider_health_managementpy)
- [资源监控 (resource_monitoring.py)](#18-资源监控-resource_monitoringpy)
- [前端集成 (frontend_integration.py)](#19-前端集成-frontend_integrationpy)
- [监控 (monitoring.py)](#20-监控-monitoringpy)
- [健康检查 (health.py)](#21-健康检查-healthpy)
- [Prometheus 指标 (metrics.py)](#22-prometheus-指标-metricspy)
2. [Data-Ingestion 服务接口](#data-ingestion-服务接口)
---
## MCP-Server 服务接口
### 1. 认证模块 (auth.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/auth/login` | 统一登录接口,支持用户/渠道/管理员/供应商登录 | 无 |
| POST | `/api/auth/logout` | 用户登出,将 token 加入黑名单 | 已认证用户 |
| POST | `/api/auth/refresh` | 刷新访问令牌 | 已认证用户 |
| PUT | `/api/auth/password` | 修改密码 | 已认证用户 |
| GET | `/api/auth/keys/info` | 获取当前用户的 API 密钥信息 | 已认证用户 |
| POST | `/api/auth/keys/regenerate` | 重新生成 API 密钥 | 已认证用户 |
---
### 2. 超级管理员 API (admin.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/admin/admins` | 获取管理员列表 | super_admin |
| POST | `/api/admin/admins/create` | 创建管理员 | super_admin |
| DELETE | `/api/admin/admins/{admin_id}` | 删除管理员 | super_admin |
| GET | `/api/admin/dashboard/recent-logins` | 获取最近登录的租户列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/dashboard/stats` | 获取平台全局统计数据 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/tenants` | 获取所有租户列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/channels` | 获取渠道列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/admin/channels/create` | 创建渠道 | super_admin, billing_admin |
| PUT | `/api/admin/channels/{channel_id}` | 更新渠道信息 | super_admin, billing_admin |
| DELETE | `/api/admin/channels/{channel_id}` | 删除渠道 | super_admin |
| GET | `/api/admin/channels/{channel_id}/resources` | 获取渠道资源配置 | super_admin, billing_admin, operations_admin |
| PUT | `/api/admin/channels/{channel_id}/resources` | 分配渠道资源 | super_admin, billing_admin |
| PUT | `/api/admin/channels/{channel_id}/commission` | 更新渠道佣金比例 | super_admin, billing_admin |
| GET | `/api/admin/resources/allocation-stats` | 获取资源分配统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/channels/applications` | 获取渠道资源申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/channels/applications/{application_id}/review` | 审批渠道资源申请 | super_admin, billing_admin |
| GET | `/api/admin/resources/models` | 获取模型供应商列表 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/resources/agents` | 获取所有 Agent 资源 | super_admin, billing_admin, operations_admin |
| DELETE | `/api/admin/resources/agents/{agent_id}` | 删除 Agent 资源 | super_admin |
| PUT | `/api/admin/resources/agents/{agent_id}/config` | 更新 Agent 配置 | super_admin, billing_admin |
| GET | `/api/admin/monitoring/agents` | 监控 Agent 健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/admin/billing/overview` | 获取三维度计费统计 | super_admin, billing_admin |
| GET | `/api/admin/providers/applications` | 获取供应商申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/providers/applications/{application_id}/review` | 审批供应商申请 | super_admin, billing_admin |
| GET | `/api/admin/providers/access` | 获取渠道供应商授权列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/admin/providers/access/{access_id}` | 更新供应商授权 | super_admin, billing_admin |
| DELETE | `/api/admin/providers/access/{access_id}` | 撤销供应商授权 | super_admin |
| GET | `/api/admin/channels/{channel_id}/admins` | 获取渠道管理员列表 | super_admin, billing_admin |
| GET | `/api/admin/roles` | 获取可用角色列表 | super_admin |
| GET | `/api/admin/platform-agents/templates` | 获取平台 Agent 模板列表 | super_admin, billing_admin |
| GET | `/api/admin/applications/platform-agents` | 获取平台 Agent 申请列表 | super_admin, billing_admin |
| PUT | `/api/admin/applications/platform-agents/{application_id}/review` | 审批平台 Agent 申请 | super_admin, billing_admin |
| GET | `/api/admin/platform-agents/allocations` | 查看平台 Agent 分配情况 | super_admin, billing_admin, operations_admin |
| POST | `/api/admin/platform-agents/allocate` | 直接分配平台 Agent 配额 | super_admin, billing_admin |
| DELETE | `/api/admin/platform-agents/allocate` | 撤销平台 Agent 配额 | super_admin |
| GET | `/api/admin/platform-agents/status` | 查看平台 Agent 运行状态 | super_admin, billing_admin, operations_admin |
---
### 3. 用户侧平台 API (user.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/dashboard/stats` | 获取用户仪表板统计数据 | 已认证用户 |
| GET | `/api/user/agents/activity` | 获取 Agent 活动数据 | 已认证用户 |
| POST | `/api/user/gateway/select` | 选择网关类型 (MCP/A2A/API) | 已认证用户 |
| POST | `/api/user/gateway/api/create` | 创建网关 API | 已认证用户 |
| GET | `/api/user/gateway/apis` | 获取网关 API 列表 | 已认证用户 |
| GET | `/api/user/gateway/monitoring` | 获取网关监控数据 | 已认证用户 |
| GET | `/api/user/custom-agent-quota` | 获取自定义 Agent 配额 | 已认证用户 |
| POST | `/api/user/tools/generate` | 生成工具(创建自定义 Agent) | 已认证用户 |
| POST | `/api/user/data-templates/create` | 创建数据模板 | 已认证用户 |
| GET | `/api/user/agents/platform` | 获取平台 Agent 列表 | 已认证用户 |
| POST | `/api/user/agents/deploy` | 部署 Agent 到 K8s | 已认证用户 |
| POST | `/api/user/workflows/create` | 创建工作流 | 已认证用户 |
| GET | `/api/user/billing/balance` | 获取余额信息 | 已认证用户 |
| POST | `/api/user/billing/recharge` | 充值余额 | 已认证用户 |
| GET | `/api/user/billing/history` | 获取计费历史 | 已认证用户 |
| GET | `/api/user/platform-agents/available` | 获取可用平台 Agent | 已认证用户 |
| POST | `/api/user/platform-agents/use` | 使用平台 Agent | 已认证用户 |
| DELETE | `/api/user/platform-agents/{instance_name}` | 停止平台 Agent | 已认证用户 |
| GET | `/api/user/platform-agents/instances` | 获取平台 Agent 实例列表 | 已认证用户 |
| GET | `/api/user/custom-agents/templates` | 获取自定义 Agent 模板 | 已认证用户 |
| POST | `/api/user/custom-agents` | 创建自定义 Agent | 已认证用户 |
| DELETE | `/api/user/custom-agents/{name}` | 删除自定义 Agent | 已认证用户 |
| PUT | `/api/user/custom-agents/{name}/scale` | 扩缩容自定义 Agent | 已认证用户 |
| GET | `/api/user/custom-agents` | 获取自定义 Agent 列表 | 已认证用户 |
| GET | `/api/user/custom-agents/{name}/logs` | 获取 Agent 日志 | 已认证用户 |
| POST | `/api/user/custom-agents/{name}/restart` | 重启 Agent | 已认证用户 |
| GET | `/api/user/agent-billing/stats` | 获取 Agent 计费统计 | 已认证用户 |
| GET | `/api/user/agent-billing/history` | 获取 Agent 计费历史 | 已认证用户 |
---
### 4. 渠道合作伙伴 API (channel.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/channel/tenants` | 获取渠道下租户列表 | channel_admin |
| POST | `/api/channel/tenants/create` | 创建租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/resources` | 分配租户资源 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/billing` | 更新租户计费设置 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/recharge` | 为租户充值 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/credit` | 设置租户授信额度 | channel_admin |
| DELETE | `/api/channel/tenants/{tenant_id}` | 删除租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/status` | 更新租户状态 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/permissions` | 更新租户权限 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/password` | 重置租户密码 | channel_admin |
| GET | `/api/channel/tenants/{tenant_id}/custom-agent-quota` | 获取租户自定义 Agent 配额 | channel_admin |
| POST | `/api/channel/admins/create` | 创建渠道管理员 | channel_admin |
| GET | `/api/channel/admins` | 获取渠道管理员列表 | channel_admin |
| POST | `/api/channel/resources/apply` | 申请资源 | channel_admin |
| GET | `/api/channel/billing/stats` | 获取渠道计费统计 | channel_admin |
| GET | `/api/channel/providers` | 获取可用供应商列表 | channel_admin |
| POST | `/api/channel/providers/apply` | 申请使用供应商 | channel_admin |
| GET | `/api/channel/providers/applications` | 获取供应商申请列表 | channel_admin |
| GET | `/api/channel/providers/access` | 获取已授权供应商列表 | channel_admin |
| GET | `/api/channel/available-platform-agents` | 查看可用平台 Agent 模板 | channel_admin |
| POST | `/api/channel/applications/platform-agents` | 申请平台 Agent | channel_admin |
| GET | `/api/channel/applications/platform-agents` | 查看平台 Agent 申请列表 | channel_admin |
| GET | `/api/channel/platform-agents` | 查看渠道平台 Agent 配额 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/platform-agents` | 分配平台 Agent 给租户 | channel_admin |
| GET | `/api/channel/tenants/{tenant_id}/platform-agents/usage` | 查看租户平台 Agent 使用情况 | channel_admin |
| GET | `/api/channel/agent-billing/stats` | 获取渠道 Agent 计费统计 | channel_admin |
| GET | `/api/channel/agent-billing/history` | 获取渠道 Agent 计费历史 | channel_admin |
| GET | `/api/channel/agent-billing/tenant-summary` | 获取租户 Agent 计费汇总 | channel_admin |
---
### 5. Agent 管理 (agents.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/agents/templates` | 获取所有 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/platform` | 获取平台 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/custom` | 获取自定义 Agent 模板 | 已认证用户 |
| GET | `/agents/templates/{template_name}` | 获取模板详情 | 已认证用户 |
| POST | `/agents` | 创建 Agent | 已认证用户 |
| GET | `/agents` | 获取 Agent 列表 | 已认证用户 |
| GET | `/agents/{agent_id}` | 获取 Agent 详情 | 已认证用户 |
| DELETE | `/agents/{agent_id}` | 删除 Agent | 已认证用户 |
| GET | `/agents/{agent_id}/status` | 获取 Agent 实时状态 | 已认证用户 |
| GET | `/agents/{agent_id}/metrics` | 获取 Agent 资源使用 | 已认证用户 |
| POST | `/agents/{agent_id}/execute` | 执行 Agent 任务 | 已认证用户 |
---
### 6. 供应商管理 (providers.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/providers/models` | 获取所有模型供应商 | 已认证用户 |
| POST | `/api/providers/models/create` | 创建模型供应商 | super_admin, billing_admin |
| GET | `/api/providers/models/{provider_id}` | 获取供应商详情 | 已认证用户 |
| PUT | `/api/providers/models/{provider_id}` | 更新供应商配置 | super_admin, billing_admin |
| DELETE | `/api/providers/models/{provider_id}` | 删除供应商 | super_admin |
| POST | `/api/providers/models/{provider_id}/test` | 测试供应商连接 | super_admin, billing_admin |
---
### 7. 会话管理 (sessions.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/sessions` | 创建会话 | 已认证用户 |
| GET | `/sessions` | 获取会话列表 | 已认证用户 |
| GET | `/sessions/{session_id}` | 获取会话详情 | 已认证用户 |
| PUT | `/sessions/{session_id}/complete` | 完成会话 | 已认证用户 |
| DELETE | `/sessions/{session_id}` | 删除会话 | 已认证用户 |
| POST | `/sessions/cleanup` | 清理旧会话 | 已认证用户 |
---
### 8. 工具管理 (tools.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/tools` | 获取工具列表 | 已认证用户 |
| GET | `/tools/{tool_id}` | 获取工具详情 | 已认证用户 |
| POST | `/tools` | 创建工具 | 已认证用户 |
| PUT | `/tools/{tool_id}` | 更新工具 | 已认证用户 |
| DELETE | `/tools/{tool_id}` | 删除工具 | 已认证用户 |
| GET | `/tools/categories/list` | 获取工具分类列表 | 已认证用户 |
---
### 9. WebSocket (websocket.py)
| 协议 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| WS | `/ws/{agent_name_or_id}` | WebSocket 实时 MCP 交互 | 已认证用户 |
**功能说明**:
- 支持连接池管理(最大 1000 连接)
- 心跳机制(每 30 秒)
- 消息队列
- 自动清理超时连接(90 秒无心跳)
---
### 10. 计费与资源管理 (billing_admin.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/quota/user/{user_id}` | 获取用户配额信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/channel/{channel_id}` | 获取渠道配额信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/alerts` | 获取配额预警列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/acknowledge` | 确认配额预警 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/resolve` | 解决配额预警 | super_admin, billing_admin |
| GET | `/api/billing-admin/resources/overview` | 获取平台资源概览 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/user/{user_id}` | 获取用户资源使用汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/trends` | 获取资源使用趋势 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/agent/{agent_id}` | 获取 Agent 资源统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/events/pending` | 获取待处理事件 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/events/retry-failed` | 重试失败事件 | super_admin, billing_admin |
| GET | `/api/billing-admin/events/stats` | 获取事件统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/execution/{execution_id}` | 获取执行追踪详情 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces` | 查询追踪记录 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/stats` | 获取追踪统计 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/logs` | 查询审计日志 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/summary` | 获取审计日志汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/user/{user_id}/activity` | 获取用户活动历史 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/health` | 获取所有供应商健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/{provider_id}/health` | 获取单个供应商健康详情 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/providers/health-check` | 执行所有供应商健康检查 | super_admin, billing_admin |
| GET | `/api/billing-admin/pricing/models` | 获取模型定价列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/pricing/models` | 创建或更新模型定价 | super_admin, billing_admin |
| POST | `/api/billing-admin/pricing/calculate` | 计算模型调用成本 | super_admin, billing_admin, operations_admin |
---
### 11. 配额管理 (quota_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/quota/user/{user_id}` | 获取用户配额汇总信息 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/quota/channel/{channel_id}` | 获取渠道配额汇总信息 | super_admin, billing_admin |
| GET | `/api/billing-admin/quota/alerts` | 获取配额预警列表 | super_admin, billing_admin, operations_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/acknowledge` | 确认配额预警 | super_admin, billing_admin |
| PUT | `/api/billing-admin/quota/alerts/{alert_id}/resolve` | 解决配额预警 | super_admin, billing_admin |
---
### 12. 平台 Agent 配额 (platform_agent_quota.py)
#### 渠道路由 (channel_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/channel/available-platform-agents` | 获取可用平台 Agent 模板 | channel_admin |
| POST | `/api/channel/applications/platform-agents` | 申请平台 Agent 配额 | channel_admin |
| GET | `/api/channel/applications/platform-agents` | 查看渠道平台 Agent 申请列表 | channel_admin |
| GET | `/api/channel/platform-agents` | 查看渠道已分配的平台 Agent 配额 | channel_admin |
| POST | `/api/channel/tenants/{tenant_id}/platform-agents` | 分配平台 Agent 给租户 | channel_admin |
#### 管理员路由 (admin_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/admin/applications/platform-agents` | 查看所有平台 Agent 申请 | admin, super_admin |
| PUT | `/api/admin/applications/platform-agents/{application_id}/review` | 审批平台 Agent 申请 | admin, super_admin |
| GET | `/api/admin/platform-agents/templates` | 获取平台 Agent 模板列表 | admin, super_admin |
| PUT | `/api/admin/platform-agents/templates/{template_name}/config` | 配置平台 Agent 模板 | admin, super_admin |
| GET | `/api/admin/platform-agents/templates/{template_name}/config` | 获取平台 Agent 模板配置 | admin, super_admin |
#### 用户路由 (user_router)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/platform-agents` | 查看用户可用的平台 Agent 配额 | 已认证用户 |
| GET | `/api/user/platform-agents/{template}/instances` | 查看用户的平台 Agent 实例 | 已认证用户 |
| DELETE | `/api/user/platform-agents/{agent_name}` | 停止平台 Agent 实例 | 已认证用户 |
| GET | `/api/user/platform-agents/quota` | 查看用户平台 Agent 配额使用情况 | 已认证用户 |
| GET | `/api/user/platform-agents/{agent_name}/status` | 查看平台 Agent 实例状态 | 已认证用户 |
---
### 13. 审计日志管理 (audit_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/audit/logs` | 查询审计日志(分页) | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/summary` | 获取审计日志汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/audit/user/{user_id}/activity` | 获取用户活动历史 | super_admin, billing_admin, operations_admin |
---
### 14. 事件管理 (event_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/events/pending` | 获取待处理的计费事件列表 | super_admin, billing_admin |
| POST | `/api/billing-admin/events/retry-failed` | 重试失败的计费事件 | super_admin, billing_admin |
| GET | `/api/billing-admin/events/stats` | 获取计费事件统计 | super_admin, billing_admin, operations_admin |
---
### 15. 追踪管理 (trace_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/traces/execution/{execution_id}` | 获取执行追踪详情 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces` | 查询追踪记录(分页) | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/traces/stats` | 获取追踪统计 | super_admin, billing_admin, operations_admin |
---
### 16. 定价管理 (pricing_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/pricing/models` | 获取模型定价列表 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/pricing/models` | 创建或更新模型定价 | super_admin, billing_admin |
| POST | `/api/billing-admin/pricing/calculate` | 计算模型调用成本 | super_admin, billing_admin, operations_admin |
---
### 17. 供应商健康检查 (provider_health_management.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/providers/health` | 获取所有供应商健康状态 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/providers/{provider_id}/health` | 获取供应商健康详情 | super_admin, billing_admin, operations_admin |
| POST | `/api/billing-admin/providers/health-check` | 执行供应商健康检查 | super_admin, billing_admin |
---
### 18. 资源监控 (resource_monitoring.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing-admin/resources/overview` | 获取平台资源概览 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/user/{user_id}` | 获取用户资源使用汇总 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/trends` | 获取资源使用趋势 | super_admin, billing_admin, operations_admin |
| GET | `/api/billing-admin/resources/agent/{agent_id}` | 获取 Agent 资源统计 | super_admin, billing_admin, operations_admin |
---
### 19. 前端集成 (frontend_integration.py)
#### 用户仪表板
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/user/dashboard/stats` | 获取用户仪表板统计 | 已认证用户 |
| GET | `/api/user/agents/activity` | 获取 Agent 活动数据 | 已认证用户 |
| GET | `/api/user/resources/usage` | 获取用户资源使用情况 | 已认证用户 |
#### 服务网关
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/gateway/select` | 选择网关类型 | 已认证用户 |
| POST | `/api/gateway/api/create` | 创建网关 API | 已认证用户 |
| GET | `/api/gateway/apis` | 获取网关 API 列表 | 已认证用户 |
| GET | `/api/gateway/monitoring` | 获取网关监控数据 | 已认证用户 |
#### 数据与工具
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/tools/generate` | 生成工具 | 已认证用户 |
| GET | `/api/tools/list` | 获取工具列表 | 已认证用户 |
| POST | `/api/data-templates/create` | 创建数据模板 | 已认证用户 |
#### Agent 工厂
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/agents/platform` | 获取平台 Agent 列表 | 已认证用户 |
| POST | `/api/agents/deploy` | 部署 Agent | 已认证用户 |
| GET | `/api/agents/deployed` | 获取已部署 Agent 列表 | 已认证用户 |
#### 工作流
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/workflows/create` | 创建工作流 | 已认证用户 |
| GET | `/api/workflows/list` | 获取工作流列表 | 已认证用户 |
| PUT | `/api/workflows/{workflow_id}` | 更新工作流 | 已认证用户 |
| DELETE | `/api/workflows/{workflow_id}` | 删除工作流 | 已认证用户 |
#### 计费与资源
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/billing/balance` | 获取余额 | 已认证用户 |
| GET | `/api/billing/history` | 获取计费历史 | 已认证用户 |
| POST | `/api/billing/recharge` | 充值 | 已认证用户 |
#### 渠道合作伙伴
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/channel/auth/login` | 渠道登录 | 无 |
| GET | `/api/channel/dashboard/stats` | 渠道仪表板统计 | channel_admin |
| GET | `/api/channel/agents/available` | 获取可用 Agent | channel_admin |
| GET | `/api/channel/tenants` | 获取租户列表 | channel_admin |
| POST | `/api/channel/tenants/create` | 创建租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/resources` | 更新租户资源 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/billing` | 更新租户计费 | channel_admin |
| DELETE | `/api/channel/tenants/{tenant_id}` | 删除租户 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/status` | 更新租户状态 | channel_admin |
| PUT | `/api/channel/tenants/{tenant_id}/permissions` | 更新租户权限 | channel_admin |
| GET | `/api/channel/resources/agents` | 获取渠道 Agent 资源 | channel_admin |
| GET | `/api/channel/resources/models` | 获取渠道模型资源 | channel_admin |
| POST | `/api/channel/resources/apply` | 申请资源 | channel_admin |
| GET | `/api/channel/billing/stats` | 获取渠道计费统计 | channel_admin |
| GET | `/api/channel/admins` | 获取渠道管理员列表 | channel_admin |
| POST | `/api/channel/admins/create` | 创建渠道管理员 | channel_admin |
| PUT | `/api/channel/admins/{admin_id}/permissions` | 更新管理员权限 | channel_admin |
#### 超级管理员
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/admin/auth/login` | 管理员登录 | 无 |
| GET | `/api/admin/dashboard/stats` | 管理员仪表板统计 | super_admin |
| GET | `/api/admin/channels` | 获取渠道列表 | super_admin |
| POST | `/api/admin/channels/create` | 创建渠道 | super_admin |
| PUT | `/api/admin/channels/{channel_id}/commission` | 更新渠道佣金 | super_admin |
| GET | `/api/admin/channels/{channel_id}/resources` | 获取渠道资源 | super_admin |
| PUT | `/api/admin/channels/{channel_id}/resources` | 更新渠道资源 | super_admin |
| GET | `/api/admin/channels/applications` | 获取渠道申请列表 | super_admin |
| PUT | `/api/admin/channels/applications/{request_id}/approve` | 审批渠道申请 | super_admin |
| GET | `/api/admin/resources/models` | 获取模型资源 | super_admin |
| POST | `/api/admin/resources/models/add` | 添加模型资源 | super_admin |
| GET | `/api/admin/resources/agents` | 获取 Agent 资源 | super_admin |
| PUT | `/api/admin/resources/agents/{agent_id}` | 更新 Agent 资源 | super_admin |
| GET | `/api/admin/monitoring/agents` | 监控 Agent | super_admin |
| GET | `/api/admin/billing/overview` | 计费概览 | super_admin |
| GET | `/api/admin/roles` | 获取角色列表 | super_admin |
| GET | `/api/admin/channels/{channel_id}/admins` | 获取渠道管理员 | super_admin |
| POST | `/api/admin/admins/create` | 创建管理员 | super_admin |
| GET | `/api/admin/providers/stats` | 获取供应商统计 | super_admin |
| GET | `/api/admin/channels/backend/stats` | 获取后端统计 | super_admin |
#### 供应商管理
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/api/providers/auth/login` | 供应商登录 | 无 |
| GET | `/api/providers/models` | 获取供应商模型 | provider_admin |
| POST | `/api/providers/models/add` | 添加供应商模型 | provider_admin |
| GET | `/api/providers/data` | 获取供应商数据 | provider_admin |
---
### 20. 监控 (monitoring.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/api/v1/monitoring/metrics` | 获取系统指标 | 无 |
| GET | `/api/v1/monitoring/stats` | 获取服务统计 | 无 |
| GET | `/api/v1/monitoring/trends` | 获取性能趋势 | 无 |
| GET | `/api/v1/monitoring/alerts` | 获取系统告警 | 无 |
| GET | `/api/v1/monitoring/dashboard` | 获取监控仪表板 | 无 |
---
### 21. 健康检查 (health.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/health` | 系统健康检查 | 无 |
---
### 22. Prometheus 指标 (metrics.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/metrics` | 暴露 Prometheus 指标 | 无 |
---
## Data-Ingestion 服务接口
### 1. APILLAMA 处理 (apillama.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/apillama/process` | 将 API 文档转换为结构化 schema | 无 |
---
### 2. 健康检查 (health.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/health` | 服务健康检查 | 无 |
---
### 3. Prometheus 指标 (metrics.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/metrics` | 暴露 Prometheus 指标 | 无 |
---
### 4. OpenAPI 解析 (openapi.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/openapi/parse` | 下载并解析 OpenAPI 文档 | 无 |
---
### 5. RapidAPI 集成 (rapidapi.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/rapidapi/sync` | 触发 RapidAPI 端点同步 | 无 |
| POST | `/rapidapi/test` | 测试 RapidAPI 端点 | 无 |
---
### 6. 统计与缓存 (stats.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| GET | `/stats` | 获取工具和缓存统计 | 无 |
| POST | `/cache/clear` | 清理缓存 | 无 |
---
### 7. 工具注册 (tools.py)
| 方法 | 路径 | 功能描述 | 权限要求 |
|------|------|----------|----------|
| POST | `/tools/generate` | 为 API 端点生成工具 | 无 |
| GET | `/tools` | 获取工具列表 | 无 |
| GET | `/tools/{tool_name}` | 获取工具详情 | 无 |
| DELETE | `/tools/{tool_name}` | 删除工具 | 无 |
---
## 接口统计
### MCP-Server 服务
| 模块 | 接口数量 |
|------|----------|
| 认证模块 | 6 |
| 超级管理员 API | 35 |
| 用户侧平台 API | 28 |
| 渠道合作伙伴 API | 27 |
| Agent 管理 | 11 |
| 供应商管理 | 6 |
| 会话管理 | 6 |
| 工具管理 | 6 |
| WebSocket | 1 |
| 计费与资源管理 | 24 |
| 配额管理 | 5 |
| 平台 Agent 配额 | 15 |
| 审计日志管理 | 3 |
| 事件管理 | 3 |
| 追踪管理 | 3 |
| 定价管理 | 3 |
| 供应商健康检查 | 3 |
| 资源监控 | 4 |
| 前端集成 | 50+ |
| 监控 | 5 |
| 健康检查 | 1 |
| Prometheus 指标 | 1 |
### Data-Ingestion 服务
| 模块 | 接口数量 |
|------|----------|
| APILLAMA 处理 | 1 |
| 健康检查 | 1 |
| Prometheus 指标 | 1 |
| OpenAPI 解析 | 1 |
| RapidAPI 集成 | 2 |
| 统计与缓存 | 2 |
| 工具注册 | 4 |
---
## 角色权限说明
| 角色 | 说明 |
|------|------|
| `super_admin` | 超级管理员,拥有系统所有权限 |
| `billing_admin` | 计费管理员,完整写入权限,可创建渠道、管理租户、计费操作 |
| `operations_admin` | 运维管理员,只读权限,仅查看和监控 |
| `channel_admin` | 渠道管理员,渠道内部管理权限 |
| `provider_admin` | 供应商管理员,管理供应商模型 |
| `user` | 普通用户,标准用户权限 |
---
## 技术栈
- **Web 框架**: FastAPI
- **ORM**: SQLAlchemy (异步)
- **认证**: JWT (JSON Web Token)
- **权限系统**: RBAC (基于角色的访问控制)
- **Kubernetes 集成**: Agent Manager 客户端
- **实时通信**: WebSocket
- **监控**: Prometheus
- **消息队列**: NATS
- **缓存**: Redis
File diff suppressed because it is too large Load Diff
@@ -1,527 +0,0 @@
# 模型供应商与租户模型使用设计方案(最终版 v5.0)
> **版本**: v5.0.0
> **创建时间**: 2026-01-07
> **状态**: 待评审
---
## 1. 核心职责分工
### 1.1 职责划分表
| 职责 | 负责方 | 说明 |
|------|--------|------|
| 决定租户能用哪些模型 | **mcp-server** | 业务规则制定者 |
| 决定 RPM/TPM/Budget 数值 | **mcp-server** | 配额分配 |
| 真正拦截超额请求 | **litellm-gateway** | 规则执行者 |
| 管理 Agent 生命周期 | **mcp-server + Agent Manager** | 与 litellm 解耦 |
| 用量统计和计费 | **litellm-gateway** | 原生能力 |
### 1.2 概念映射
| 平台概念 | LiteLLM 对应 | 说明 |
|----------|-------------|------|
| 渠道 | team | 一个渠道 = 一个 team |
| 租户 | team 下的 key 或子 team | 租户归属于渠道 |
| 模型供应商 | model/provider | litellm 配置 |
| 平台 Agent | 不进 LiteLLM | mcp-server 自己管理 |
### 1.3 LiteLLM 不关心的事情
- ❌ Agent 是什么
- ❌ Agent 从哪来
- ❌ Agent 跑在 AKS 还是别的地方
- ❌ Agent 生命周期
**LiteLLM 只看请求里的**:
- ✅ api_key
- ✅ team
- ✅ model
---
## 2. 整体架构
### 2.1 架构图
```mermaid
graph TB
subgraph mcp-server[mcp-server 业务规则制定者]
A1[管理员创建渠道]
A2[分配模型供应商给渠道]
A3[渠道分配模型给租户]
A4[设置 RPM/TPM/Budget]
A5[用户充值更新额度]
end
subgraph litellm[litellm-gateway 规则执行者]
B1[team 管理]
B2[key 管理]
B3[rate_limit 检查]
B4[budget 检查]
B5[用量统计]
end
subgraph agent[Agent 运行层 - 与 litellm 解耦]
C1[Agent Manager]
C2[AKS Pod]
C3[调用模型]
end
A1 --> |创建 team| B1
A3 --> |创建 key + 配额| B2
A4 --> |设置 rate_limit| B3
A5 --> |更新 budget| B4
C2 --> |带 api_key 请求| litellm
litellm --> |检查配额| B3
litellm --> |检查余额| B4
litellm --> |转发| Provider[Azure/Gemini]
```
### 2.2 核心流程
```mermaid
sequenceDiagram
participant Admin as 管理员
participant MCP as mcp-server
participant LiteLLM as litellm-gateway
participant Agent as Agent Pod
participant Azure as Azure/Gemini
Note over Admin,Azure: 1️⃣ 创建渠道
Admin->>MCP: 创建渠道
MCP->>LiteLLM: POST /team/new
Note over MCP,LiteLLM: team_alias: channel-xxx
Note over Admin,Azure: 2️⃣ 分配模型给渠道
Admin->>MCP: 分配模型 azure/gpt-4
MCP->>MCP: 记录到 ResourceAllocation
Note over Admin,Azure: 3️⃣ 渠道分配模型给租户
MCP->>LiteLLM: POST /key/generate
Note over MCP,LiteLLM: team_id, models, rpm_limit, tpm_limit, max_budget
LiteLLM-->>MCP: 返回 api_key
MCP->>MCP: 保存 key 到数据库
Note over Admin,Azure: 4️⃣ 租户创建 Agent
MCP->>MCP: 查询租户的 api_key
MCP->>Agent: 启动 Pod,注入 api_key
Note over Admin,Azure: 5️⃣ Agent 调用模型
Agent->>LiteLLM: POST /chat/completions
Note over Agent,LiteLLM: Authorization: Bearer api_key
LiteLLM->>LiteLLM: 检查 RPM/TPM
LiteLLM->>LiteLLM: 检查 Budget
alt 配额/余额不足
LiteLLM-->>Agent: 429/403 拒绝
else 配额充足
LiteLLM->>Azure: 转发请求
Azure-->>LiteLLM: 返回结果
LiteLLM->>LiteLLM: 记录用量
LiteLLM-->>Agent: 返回结果
end
Note over Admin,Azure: 6️⃣ 用户充值
MCP->>LiteLLM: POST /key/update
Note over MCP,LiteLLM: 更新 max_budget
Note over MCP,LiteLLM: 下一次请求立刻放行,无需重启
```
---
## 3. 详细设计
### 3.1 创建渠道(对应 LiteLLM team)
**mcp-server 操作**:
```python
async def create_channel(channel_name: str, db: AsyncSession):
# 1. 在 mcp-server 创建渠道记录
channel = Channel(name=channel_name, ...)
db.add(channel)
# 2. 在 litellm 创建对应的 team
async with httpx.AsyncClient() as client:
response = await client.post(
f"{settings.litellm_url}/team/new",
json={
"team_alias": f"channel-{channel.id}",
"metadata": {
"channel_id": str(channel.id),
"channel_name": channel_name
}
},
headers={"Authorization": f"Bearer {settings.litellm_master_key}"}
)
data = response.json()
# 保存 litellm team_id
channel.litellm_team_id = data["team_id"]
await db.commit()
return channel
```
### 3.2 分配模型给渠道
**mcp-server 操作**:
```python
async def allocate_models_to_channel(
channel_id: str,
models: list[str], # ["azure/gpt-4", "gemini/gemini-pro"]
db: AsyncSession
):
# 只在 mcp-server 记录,不需要同步到 litellm
# litellm 的 team 不限制模型,模型限制在 key 级别
for model in models:
allocation = ResourceAllocation(
target_id=channel_id,
target_type="channel",
resource_type="model",
resource_id=model
)
db.add(allocation)
await db.commit()
```
### 3.3 渠道分配模型给租户(核心)
**mcp-server 操作**:
```python
async def allocate_model_to_tenant(
tenant_id: str,
channel_id: str,
model_name: str,
rpm_limit: int,
tpm_limit: int,
max_budget: float,
db: AsyncSession
):
# 1. 验证渠道是否有该模型
channel_has_model = await check_channel_has_model(channel_id, model_name, db)
if not channel_has_model:
raise HTTPException(status_code=403, detail="渠道没有该模型的权限")
# 2. 获取渠道的 litellm team_id
channel = await get_channel(channel_id, db)
# 3. 在 litellm 创建 key(绑定 team + model + 配额)
async with httpx.AsyncClient() as client:
response = await client.post(
f"{settings.litellm_url}/key/generate",
json={
"team_id": channel.litellm_team_id,
"models": [model_name],
"rpm_limit": rpm_limit,
"tpm_limit": tpm_limit,
"max_budget": max_budget,
"budget_duration": "monthly", # 或 "total"
"metadata": {
"tenant_id": str(tenant_id),
"channel_id": str(channel_id),
"model": model_name
}
},
headers={"Authorization": f"Bearer {settings.litellm_master_key}"}
)
data = response.json()
# 4. 保存到数据库
tenant_key = TenantModelKey(
tenant_id=tenant_id,
channel_id=channel_id,
model_name=model_name,
litellm_key_id=data["key"],
litellm_key_hash=encrypt(data["key"]), # 加密存储
rpm_limit=rpm_limit,
tpm_limit=tpm_limit,
max_budget=max_budget
)
db.add(tenant_key)
# 5. 同时记录到 ResourceAllocation
allocation = ResourceAllocation(
target_id=tenant_id,
target_type="tenant",
resource_type="model",
resource_id=model_name,
rpm=rpm_limit,
tpm=tpm_limit
)
db.add(allocation)
await db.commit()
return tenant_key
```
### 3.4 租户创建 Agent
**mcp-server 操作**:
```python
async def create_custom_agent(
tenant_id: str,
agent_name: str,
model_name: str,
cpu_request: str,
memory_request: str,
db: AsyncSession
):
# 1. 查询租户的模型 key
tenant_key = await db.execute(
select(TenantModelKey).where(
and_(
TenantModelKey.tenant_id == tenant_id,
TenantModelKey.model_name == model_name,
TenantModelKey.status == "active"
)
)
)
tenant_key = tenant_key.scalar_one_or_none()
if not tenant_key:
raise HTTPException(
status_code=403,
detail=f"您没有使用模型 {model_name} 的权限"
)
# 2. 调用 Agent Manager 创建 Pod
# Agent Manager 不需要知道 litellm 的任何细节
# 只需要注入环境变量
result = await agent_manager.create_agent(
name=agent_name,
cpu_request=cpu_request,
memory_request=memory_request,
env_vars={
"OPENAI_API_BASE": settings.litellm_url,
"OPENAI_API_KEY": decrypt(tenant_key.litellm_key_hash),
"MODEL_NAME": model_name
}
)
return result
```
### 3.5 用户充值更新额度
**mcp-server 操作**:
```python
async def recharge_tenant_budget(
tenant_id: str,
model_name: str,
additional_budget: float,
db: AsyncSession
):
# 1. 获取租户的 key
tenant_key = await get_tenant_model_key(tenant_id, model_name, db)
# 2. 计算新的 budget
new_budget = float(tenant_key.max_budget or 0) + additional_budget
# 3. 更新 litellm key 的 budget
async with httpx.AsyncClient() as client:
await client.post(
f"{settings.litellm_url}/key/update",
json={
"key": tenant_key.litellm_key_id,
"max_budget": new_budget
},
headers={"Authorization": f"Bearer {settings.litellm_master_key}"}
)
# 4. 更新数据库
tenant_key.max_budget = new_budget
await db.commit()
# ✅ 下一次请求立刻放行,无需重启任何服务
```
---
## 4. 数据模型
### 4.1 新增表:TenantModelKey
```sql
CREATE TABLE tenant_model_keys (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES users(id),
channel_id UUID REFERENCES channels(id),
-- 模型信息
model_name VARCHAR(100) NOT NULL,
-- litellm Key 信息
litellm_key_id VARCHAR(255) NOT NULL, -- litellm 返回的完整 key
litellm_key_hash TEXT NOT NULL, -- 加密存储
-- 配额配置(与 litellm 同步)
rpm_limit INTEGER DEFAULT 0,
tpm_limit INTEGER DEFAULT 0,
max_budget NUMERIC(12, 2),
budget_duration VARCHAR(20) DEFAULT 'monthly',
-- 状态
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
UNIQUE(tenant_id, model_name)
);
```
### 4.2 Channel 表增加字段
```sql
ALTER TABLE channels ADD COLUMN litellm_team_id VARCHAR(100);
```
---
## 5. LiteLLM 配置
### 5.1 litellm_config.yaml
```yaml
general_settings:
master_key: "sk-taiji-master-key"
database_url: "postgresql://..." # 可选,用于持久化
model_list:
# Azure GPT-4
- model_name: "azure/gpt-4"
litellm_params:
model: "azure/gpt-4"
api_base: "https://taiji-azure.openai.azure.com"
api_key: "os.environ/AZURE_API_KEY"
api_version: "2024-02-15-preview"
# Azure GPT-3.5
- model_name: "azure/gpt-35-turbo"
litellm_params:
model: "azure/gpt-35-turbo"
api_base: "https://taiji-azure.openai.azure.com"
api_key: "os.environ/AZURE_API_KEY"
api_version: "2024-02-15-preview"
# Google Gemini
- model_name: "gemini/gemini-pro"
litellm_params:
model: "gemini/gemini-pro"
api_key: "os.environ/GOOGLE_API_KEY"
# 启用用量追踪
litellm_settings:
success_callback: ["prometheus"]
track_cost_callback: true
```
### 5.2 LiteLLM Admin API 使用
| API | 用途 | 调用时机 |
|-----|------|----------|
| `POST /team/new` | 创建 team | 创建渠道时 |
| `POST /key/generate` | 创建 key | 分配模型给租户时 |
| `POST /key/update` | 更新 key 配额 | 修改配额/充值时 |
| `POST /key/delete` | 删除 key | 取消分配时 |
| `GET /spend/logs` | 查询用量 | 统计报表时 |
---
## 6. 接口设计
### 6.1 渠道管理接口
| 接口 | 方法 | 功能 | 变更 |
|------|------|------|------|
| `POST /api/admin/channels/create` | POST | 创建渠道 | 同步创建 litellm team |
| `DELETE /api/admin/channels/{id}` | DELETE | 删除渠道 | 同步删除 litellm team |
### 6.2 模型分配接口
| 接口 | 方法 | 功能 | 变更 |
|------|------|------|------|
| `PUT /api/channel/tenants/{id}/models` | PUT | 分配模型给租户 | 创建 litellm key |
| `DELETE /api/channel/tenants/{id}/models/{model}` | DELETE | 取消分配 | 删除 litellm key |
| `PUT /api/channel/tenants/{id}/models/{model}/quota` | PUT | 更新配额 | 更新 litellm key |
### 6.3 租户接口
| 接口 | 方法 | 功能 |
|------|------|------|
| `GET /api/user/models/available` | GET | 获取可用模型列表 |
| `POST /api/user/custom-agents` | POST | 创建 Agent(注入 key) |
| `GET /api/user/models/usage/stats` | GET | 查询用量统计 |
| `POST /api/user/billing/recharge` | POST | 充值(更新 litellm budget) |
---
## 7. 实现计划
### 7.1 任务清单
- [ ] **数据库迁移**
- [ ] 创建 `tenant_model_keys` 表
- [ ] Channel 表增加 `litellm_team_id` 字段
- [ ] **litellm 集成**
- [ ] 实现 litellm Admin API 客户端
- [ ] 创建渠道时同步创建 team
- [ ] 分配模型时创建 key
- [ ] 充值时更新 budget
- [ ] **接口调整**
- [ ] 更新渠道创建接口
- [ ] 实现模型分配接口
- [ ] 更新 Agent 创建接口
- [ ] 实现充值接口
- [ ] **Agent Manager**
- [ ] 支持注入 litellm key 环境变量
---
## 8. 关键行为说明
### 8.1 配额超限行为
| 状态 | LiteLLM 行为 | 说明 |
|------|-------------|------|
| RPM 超限 | 返回 429 | 等待下一分钟自动恢复 |
| TPM 超限 | 返回 429 | 等待下一分钟自动恢复 |
| Budget 用完 | 返回 403 | 需要充值才能恢复 |
### 8.2 充值后恢复
```
用户充值 → mcp-server 调用 litellm API 更新 budget → 下一次请求立刻放行
```
- ✅ 不需要重启任何服务
- ✅ 不需要重新创建 key
- ✅ 实时生效
---
## 9. 总结
### 9.1 核心设计原则
1. **mcp-server 是业务规则制定者**:决定谁能用什么、用多少
2. **litellm-gateway 是规则执行者**:真正拦截超额请求
3. **Agent 与 litellm 解耦**:Agent 只需要带正确的 api_key 调用
4. **实时生效**:配额更新、充值后立刻生效,无需重启
### 9.2 架构优势
| 优势 | 说明 |
|------|------|
| 职责清晰 | mcp-server 管业务,litellm 管执行 |
| 延迟低 | Agent 直接调用 litellm,无需代理 |
| 原生能力 | 充分利用 litellm 的配额和计费能力 |
| 易扩展 | 新增模型只需配置 litellm |
| 实时生效 | 配额更新无需重启 |
@@ -1,621 +0,0 @@
# 渠道资源分配接口整合方案
> **版本**: v1.1.0
> **创建时间**: 2026-01-07
> **更新时间**: 2026-01-08
> **状态**: ✅ 已实施
---
## 1. 背景分析
### 1.1 现有接口
**`PUT /api/channel/tenants/{tenantId}/resources`** ([`channel.py:244`](services/mcp-server/app/routes/channel.py:244))
现有请求参数 ([`schemas.py:303`](services/mcp-server/app/schemas.py:303)):
```python
class AllocateResourcesRequest(BaseModel):
agents: List[ResourceAgentAllocation] # 平台端 Agent 分配
models: List[ResourceModelAllocation] # 模型资源分配
customAgentResources: Optional[CustomAgentResources] # 已废弃
customAgentQuota: Optional[CustomAgentQuotaConfig] # 自定义 Agent 配额
```
现有模型分配参数 ([`schemas.py:269`](services/mcp-server/app/schemas.py:269)):
```python
class ResourceModelAllocation(BaseModel):
modelName: str
rpm: int
tpm: int
```
**注意**:老接口不包含 `maxBudget`(配额)和 `max_budget`(余额)等参数。
### 1.2 LiteLLM 新增接口
**`PUT /api/channel/tenants/{id}/models`** ([`channel.py:1126`](services/mcp-server/app/routes/channel.py:1126))
新增参数:
- `max_budget`: 最大预算
- `budget_duration`: 预算周期(monthly/total)
### 1.3 权限验证流程
模型分配必须遵循以下权限链:
```
供应商 (ModelProvider)
↓ 管理员创建
渠道供应商授权 (ChannelProviderAccess)
↓ 管理员审批
渠道资源分配 (ResourceAllocation: target_type="channel")
↓ 渠道管理员分配
租户资源分配 (ResourceAllocation: target_type="tenant")
```
**关键规则**:渠道只能分配自己有权限的模型给租户,其余一律拒绝。
### 1.4 问题
1. **功能重叠**:两个接口都可以分配模型给租户
2. **参数不一致**:新接口有 `max_budget`、`budget_duration`,旧接口没有
3. **计费逻辑不清晰**:配额(quota)与余额(balance)的关系需要明确
4. **权限验证缺失**:老接口未验证渠道是否有该模型的权限
---
## 2. 整合方案
### 2.1 方案概述
**继续使用现有接口** `PUT /api/channel/tenants/{tenantId}/resources`,**不修改 Schema**,后端代码在调用 LiteLLM 时对配额和余额使用默认值。
### 2.2 Schema 保持不变
老接口的 [`ResourceModelAllocation`](services/mcp-server/app/schemas.py:269) **不做修改**,继续使用现有参数:
```python
class ResourceModelAllocation(BaseModel):
"""模型资源分配"""
modelName: str
rpm: int
tpm: int
```
**说明**:老接口不包含 `maxBudget`(配额)和 `max_budget`(余额)等参数,这些参数由后端代码使用默认值。
### 2.3 后端默认值策略
| 参数 | 来源 | 默认值 | 说明 |
|------|------|--------|------|
| `rpm` | 前端传递 | - | 每分钟请求数限制(必填) |
| `tpm` | 前端传递 | - | 每分钟 Token 数限制(必填) |
| `max_budget` | 后端默认 | **500** | 最大预算金额(美元),除非前端明确传递 |
| `budget_duration` | 后端默认 | `"monthly"` | 预算周期 |
### 2.4 接口行为修改
#### 修改 `allocate_tenant_resources` ([`channel.py:244`](services/mcp-server/app/routes/channel.py:244))
**当前行为**(第 334-350 行):
```python
for model_alloc in req.models:
# 查找模型供应商
result = await db.execute(
select(ModelProvider).where(ModelProvider.name == model_alloc.modelName)
)
model_provider = result.scalar_one_or_none()
if model_provider:
allocation = ResourceAllocation(
target_id=tenant_id,
target_type="tenant",
resource_type="model",
resource_id=str(model_provider.id),
rpm=model_alloc.rpm,
tpm=model_alloc.tpm,
)
db.add(allocation)
```
**修改后行为**:
```python
# 默认配额和余额值
DEFAULT_MAX_BUDGET = 500 # 默认最大预算 $500
DEFAULT_BUDGET_DURATION = "monthly" # 默认月度预算
for model_alloc in req.models:
# 1. 验证渠道是否有该模型的权限
model_allocation_result = await db.execute(
select(ResourceAllocation).where(
and_(
ResourceAllocation.target_id == channel_id,
ResourceAllocation.target_type == "channel",
ResourceAllocation.resource_type == "model",
ResourceAllocation.resource_id == model_alloc.modelName
)
)
)
if not model_allocation_result.scalar_one_or_none():
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=f"渠道没有模型 '{model_alloc.modelName}' 的权限"
)
# 2. 获取配额和余额参数(使用默认值 500)
max_budget = getattr(model_alloc, 'maxBudget', None) or DEFAULT_MAX_BUDGET
budget_duration = getattr(model_alloc, 'budgetDuration', None) or DEFAULT_BUDGET_DURATION
# 3. 检查租户是否已有该模型的 Key
existing_key_result = await db.execute(
select(TenantModelKey).where(
and_(
TenantModelKey.tenant_id == tenant_id,
TenantModelKey.model_name == model_alloc.modelName
)
)
)
existing_key = existing_key_result.scalar_one_or_none()
if existing_key:
# 4a. 更新现有 Key 的配额
await _update_tenant_model_quota(
db=db,
tenant_key=existing_key,
rpm_limit=model_alloc.rpm,
tpm_limit=model_alloc.tpm,
max_budget=max_budget, # 使用默认值 500
budget_duration=budget_duration,
)
else:
# 4b. 创建新的 LiteLLM Key
await _create_tenant_model_key(
db=db,
tenant=tenant,
channel=channel,
model_name=model_alloc.modelName,
rpm_limit=model_alloc.rpm,
tpm_limit=model_alloc.tpm,
max_budget=max_budget, # 使用默认值 500
budget_duration=budget_duration,
)
```
---
## 3. 计费逻辑说明
### 3.1 配额(Quota)vs 余额(Balance)
| 概念 | 说明 | 控制方式 | 用途 |
|------|------|---------|------|
| **余额 (Balance)** | 租户账户中的实际金额 | `POST /api/channel/tenants/{id}/recharge` | 实际扣费来源 |
| **授信额度 (Credit Limit)** | 允许透支的金额 | `PUT /api/channel/tenants/{id}/credit` | 余额不足时的缓冲 |
| **模型配额 (Model Quota)** | 速率限制和预算上限 | `PUT /api/channel/tenants/{id}/resources` | 防止单个模型过度消费 |
### 3.2 计费流程
```mermaid
flowchart TD
A[租户调用模型] --> B{检查模型配额}
B -->|超过 RPM/TPM| C[拒绝请求 - 429]
B -->|超过 maxBudget| D[拒绝请求 - 预算超限]
B -->|配额内| E{检查余额}
E -->|余额 + 授信 >= 费用| F[扣费并执行]
E -->|余额 + 授信 < 费用| G[拒绝请求 - 余额不足]
F --> H[更新余额]
H --> I[记录计费]
```
### 3.3 配额与余额的关系
1. **配额是上限控制**:即使租户有 $10000 余额,如果模型配额设置为 `maxBudget=$500/月`,该模型每月最多消费 $500
2. **余额是实际扣费来源**:所有模型消费都从租户余额中扣除
3. **配额不影响余额**:配额只是限制,不会预扣余额
### 3.4 示例场景
**场景**:租户 A 的配置
- 余额:$1000
- 授信额度:$500
- 模型配额:
- gpt-4: maxBudget=$300/月, rpm=100
- gpt-3.5: maxBudget=$200/月, rpm=200
**结果**:
- 租户可用总额:$1000 + $500 = $1500
- gpt-4 每月最多消费 $300(即使余额充足)
- gpt-3.5 每月最多消费 $200
- 两个模型合计每月最多消费 $500
---
## 4. 实施步骤
### 4.1 Schema 保持不变
**文件**: [`services/mcp-server/app/schemas.py`](services/mcp-server/app/schemas.py)
**无需修改**,继续使用现有的 [`ResourceModelAllocation`](services/mcp-server/app/schemas.py:269):
```python
class ResourceModelAllocation(BaseModel):
"""模型资源分配"""
modelName: str
rpm: int
tpm: int
```
### 4.2 接口逻辑修改
**文件**: [`services/mcp-server/app/routes/channel.py`](services/mcp-server/app/routes/channel.py)
1. **添加默认值常量和辅助函数**(在文件顶部导入区域后):
```python
# ============= 默认值常量 =============
# 配额和余额默认值,除非前端明确传递
DEFAULT_MAX_BUDGET = 500 # 默认最大预算 $500
DEFAULT_BUDGET_DURATION = "monthly" # 默认月度预算
async def _create_tenant_model_key(
db: AsyncSession,
tenant: User,
channel: Channel,
model_name: str,
rpm_limit: int,
tpm_limit: int,
max_budget: float = DEFAULT_MAX_BUDGET, # 默认 500
budget_duration: str = DEFAULT_BUDGET_DURATION, # 默认 monthly
) -> TenantModelKey:
"""创建租户的 LiteLLM Key
Args:
max_budget: 最大预算金额,默认 500 美元
budget_duration: 预算周期,默认 monthly
"""
from app.litellm_client import get_litellm_client, LiteLLMClientError
if not channel.litellm_team_id:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail="渠道尚未关联 LiteLLM team,请联系管理员"
)
litellm_client = get_litellm_client()
key = await litellm_client.generate_key(
team_id=channel.litellm_team_id,
models=[model_name],
rpm_limit=rpm_limit,
tpm_limit=tpm_limit,
max_budget=max_budget, # 使用默认值 500
budget_duration=budget_duration,
key_name=f"tenant-{tenant.id}-{model_name}",
metadata={
"tenant_id": str(tenant.id),
"tenant_name": tenant.name,
"channel_id": str(channel.id),
"channel_name": channel.name,
"model": model_name,
}
)
encrypted_key = litellm_client.encrypt_key(key.key)
tenant_key = TenantModelKey(
tenant_id=str(tenant.id),
channel_id=str(channel.id),
model_name=model_name,
litellm_key_id=key.key,
litellm_key_hash=encrypted_key,
rpm_limit=rpm_limit,
tpm_limit=tpm_limit,
max_budget=max_budget,
budget_duration=budget_duration,
status="active",
)
db.add(tenant_key)
return tenant_key
async def _update_tenant_model_quota(
db: AsyncSession,
tenant_key: TenantModelKey,
rpm_limit: Optional[int],
tpm_limit: Optional[int],
max_budget: float = DEFAULT_MAX_BUDGET, # 默认 500
budget_duration: str = DEFAULT_BUDGET_DURATION, # 默认 monthly
) -> None:
"""更新租户的 LiteLLM Key 配额
Args:
max_budget: 最大预算金额,默认 500 美元
budget_duration: 预算周期,默认 monthly
"""
from app.litellm_client import get_litellm_client, LiteLLMClientError
litellm_client = get_litellm_client()
await litellm_client.update_key(
key=tenant_key.litellm_key_id,
rpm_limit=rpm_limit,
tpm_limit=tpm_limit,
max_budget=max_budget, # 使用默认值 500
budget_duration=budget_duration,
)
# 更新数据库记录
if rpm_limit is not None:
tenant_key.rpm_limit = rpm_limit
if tpm_limit is not None:
tenant_key.tpm_limit = tpm_limit
tenant_key.max_budget = max_budget
tenant_key.budget_duration = budget_duration
```
2. **修改 `allocate_tenant_resources` 函数**(第 334-350 行):
```python
# 分配模型资源(集成 LiteLLM)
# 配额和余额使用默认值 500,除非前端明确传递
for model_alloc in req.models:
# 验证渠道是否有该模型的权限
model_allocation_result = await db.execute(
select(ResourceAllocation).where(
and_(
ResourceAllocation.target_id == str(channel_id),
ResourceAllocation.target_type == "channel",
ResourceAllocation.resource_type == "model",
ResourceAllocation.resource_id == model_alloc.modelName
)
)
)
if not model_allocation_result.scalar_one_or_none():
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail=f"渠道没有模型 '{model_alloc.modelName}' 的权限"
)
# 检查租户是否已有该模型的 Key
existing_key_result = await db.execute(
select(TenantModelKey).where(
and_(
TenantModelKey.tenant_id == tenant_id,
TenantModelKey.model_name == model_alloc.modelName
)
)
)
existing_key = existing_key_result.scalar_one_or_none()
try:
if existing_key:
# 更新现有 Key 的配额(使用默认值 500)
await _update_tenant_model_quota(
db=db,
tenant_key=existing_key,
rpm_limit=model_alloc.rpm,
tpm_limit=model_alloc.tpm,
# max_budget 和 budget_duration 使用函数默认值 500 和 monthly
)
logger.info(f"更新租户 {tenant.name} 的模型 {model_alloc.modelName} 配额")
else:
# 获取渠道信息
channel_result = await db.execute(
select(Channel).where(Channel.id == channel_id)
)
channel = channel_result.scalar_one_or_none()
if channel and channel.litellm_team_id:
# 创建新的 LiteLLM Key(使用默认值 500)
await _create_tenant_model_key(
db=db,
tenant=tenant,
channel=channel,
model_name=model_alloc.modelName,
rpm_limit=model_alloc.rpm,
tpm_limit=model_alloc.tpm,
# max_budget 和 budget_duration 使用函数默认值 500 和 monthly
)
logger.info(f"为租户 {tenant.name} 创建模型 {model_alloc.modelName} 的 LiteLLM Key(默认预算 $500/月)")
else:
# 渠道未配置 LiteLLM,仅记录 ResourceAllocation
logger.warning(f"渠道 {channel_id} 未配置 LiteLLM team,仅记录资源分配")
# 同时记录到 ResourceAllocation(兼容旧逻辑)
allocation = ResourceAllocation(
target_id=tenant_id,
target_type="tenant",
resource_type="model",
resource_id=model_alloc.modelName,
rpm=model_alloc.rpm,
tpm=model_alloc.tpm,
)
db.add(allocation)
except Exception as e:
logger.error(f"模型分配失败: {e}")
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"模型 '{model_alloc.modelName}' 分配失败: {str(e)}"
)
```
### 4.3 保留独立接口
保留以下独立接口用于精细化管理:
| 接口 | 用途 | 说明 |
|------|------|------|
| `GET /api/channel/tenants/{id}/models` | 获取租户模型列表 | 查看已分配的模型及配额 |
| `DELETE /api/channel/tenants/{id}/models/{model}` | 取消单个模型分配 | 精细化管理 |
| `PUT /api/channel/tenants/{id}/models/{model}/quota` | 更新单个模型配额 | 精细化管理 |
---
## 5. 前端对接说明
### 5.1 接口保持不变
前端调用 `PUT /api/channel/tenants/{tenantId}/resources` 时,**无需修改**,继续使用现有参数:
**请求示例**(与现有接口完全一致):
```json
{
"agents": [
{"agentId": "echo_agent", "quantity": 3}
],
"models": [
{
"modelName": "azure/gpt-4",
"rpm": 100,
"tpm": 50000
},
{
"modelName": "azure/gpt-3.5-turbo",
"rpm": 200,
"tpm": 100000
}
],
"customAgentQuota": {
"cpuQuota": 2.0,
"memoryQuota": 4.0
}
}
```
### 5.2 后端默认行为
| 参数 | 前端传递 | 后端默认值 | 说明 |
|------|----------|-----------|------|
| `modelName` | ✅ 必填 | - | 模型名称 |
| `rpm` | ✅ 必填 | - | 每分钟请求数限制 |
| `tpm` | ✅ 必填 | - | 每分钟 Token 数限制 |
| `max_budget` | ❌ 不传 | **500** | 后端默认传 500 给 LiteLLM |
| `budget_duration` | ❌ 不传 | **monthly** | 后端默认传 monthly 给 LiteLLM |
### 5.3 完全向后兼容
- **前端无需任何修改**
- 后端自动为 LiteLLM 配置默认的配额($500/月)
- 如果未来前端需要自定义配额,可以扩展接口参数
---
## 6. 测试用例
### 6.1 基本功能测试
```bash
# 1. 分配模型(后端自动使用默认配额 $500/月)
curl -X PUT "http://localhost:8002/api/channel/tenants/{tenant_id}/resources" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"models": [
{"modelName": "azure/gpt-4", "rpm": 100, "tpm": 50000}
]
}'
# 后端会自动传递 max_budget=500, budget_duration="monthly" 给 LiteLLM
# 2. 查看租户模型列表(验证默认配额)
curl -X GET "http://localhost:8002/api/channel/tenants/{tenant_id}/models" \
-H "Authorization: Bearer {token}"
# 响应应包含 max_budget: 500, budget_duration: "monthly"
# 3. 更新单个模型配额(可自定义配额)
curl -X PUT "http://localhost:8002/api/channel/tenants/{tenant_id}/models/azure%2Fgpt-4/quota?rpm_limit=200&max_budget=1000" \
-H "Authorization: Bearer {token}"
# 4. 取消模型分配
curl -X DELETE "http://localhost:8002/api/channel/tenants/{tenant_id}/models/azure%2Fgpt-4" \
-H "Authorization: Bearer {token}"
```
### 6.2 边界条件测试
1. **渠道无模型权限**:应返回 403 错误
2. **重复分配同一模型**:应更新配额而非创建新记录
3. **渠道未配置 LiteLLM**:应记录 ResourceAllocation 但跳过 LiteLLM Key 创建
4. **预算超限**:LiteLLM 应拒绝请求(默认 $500/月)
### 6.3 默认值验证测试
```bash
# 验证默认配额值
# 1. 分配模型后,检查 TenantModelKey 表
SELECT tenant_id, model_name, rpm_limit, tpm_limit, max_budget, budget_duration
FROM tenant_model_keys
WHERE tenant_id = '{tenant_id}';
# 预期结果:
# max_budget = 500
# budget_duration = 'monthly'
```
---
## 7. 文档更新
### 7.1 需要更新的文档
1. [`Docs/渠道合作伙伴平台-接口对接文档.md`](Docs/渠道合作伙伴平台-接口对接文档.md) - 说明后端默认配额行为
2. [`plans/LiteLLM集成接口变动清单.md`](plans/LiteLLM集成接口变动清单.md) - 标注接口整合情况
### 7.2 接口文档说明
**`PUT /api/channel/tenants/{tenantId}/resources`**
请求参数(保持不变):
| 参数路径 | 类型 | 必填 | 说明 |
|----------|------|------|------|
| `models[].modelName` | string | 是 | 模型名称 |
| `models[].rpm` | int | 是 | 每分钟请求数限制 |
| `models[].tpm` | int | 是 | 每分钟 Token 数限制 |
后端默认行为:
| LiteLLM 参数 | 默认值 | 说明 |
|--------------|--------|------|
| `max_budget` | **500** | 最大预算金额(美元) |
| `budget_duration` | **monthly** | 预算周期(月度) |
---
## 8. 总结
### 8.1 修改范围
| 文件 | 修改内容 |
|------|----------|
| `schemas.py` | **无修改**(保持现有 `ResourceModelAllocation` 类) |
| `channel.py` | 修改 `allocate_tenant_resources` 函数,添加辅助函数和默认值常量 |
### 8.2 影响评估
- **前端影响**:**无**(接口参数完全不变)
- **Schema 影响**:**无**(不修改 Schema)
- **数据库影响**:无(使用现有 `TenantModelKey` 表)
- **LiteLLM 影响**:无(使用现有 LiteLLM 客户端,传递默认配额 500)
### 8.3 默认值说明
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `max_budget` | **500** | 每个租户每个模型的默认最大预算为 $500 |
| `budget_duration` | **monthly** | 预算周期为月度,每月重置 |
### 8.4 待确认事项
1. **默认值 500 是否合适**:是否需要调整默认配额金额?
2. **预算超限时的行为**:是否需要通知渠道管理员?
3. **预算重置时间**:月度预算是每月 1 日重置还是从分配日期开始计算?
---
*文档创建时间: 2026-01-07*
*文档更新时间: 2026-01-08*