From e3d2cee85abc9956c7861d7b80e4930c3a694624 Mon Sep 17 00:00:00 2001 From: zhanggangyong Date: Mon, 12 Jan 2026 10:27:19 +0000 Subject: [PATCH] =?UTF-8?q?=E8=B5=8C=E5=8D=9A=E5=89=8D=E7=9A=84=E5=A4=87?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docs/API接口完整清单-详细版.md | 888 ------------------ Docs/全平台API接口清单.md | 843 +++++++++++++++++ Docs/需求.md | 42 - .../app/routes/frontend_integration.py | 592 +----------- 4 files changed, 862 insertions(+), 1503 deletions(-) delete mode 100644 Docs/API接口完整清单-详细版.md create mode 100644 Docs/全平台API接口清单.md delete mode 100644 Docs/需求.md diff --git a/Docs/API接口完整清单-详细版.md b/Docs/API接口完整清单-详细版.md deleted file mode 100644 index cfab5c4..0000000 --- a/Docs/API接口完整清单-详细版.md +++ /dev/null @@ -1,888 +0,0 @@ -# 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 | 设置授信额度 | 设置租户授信额度 | - -| `/tenants/{id}/password` | PUT | 重置/修改租户密码 | 管理员为租户重置或设置新密码(超级管理员需提供 `channel_id` 查询参数,其他渠道管理员使用 token 中的 `channelId`) | - -#### 管理员为租户重置密码 - -接口: `PUT /api/channel/tenants/{tenant_id}/password` - -描述: 渠道管理员或超级管理员为指定租户设置一个新的登录密码。该接口由渠道内有 `manage:tenants` 权限的管理员调用。 - -权限: -- 需要 `manage:tenants` 权限(角色示例: `channel_admin`, `billing_admin`, `super_admin`) -- 超级管理员调用时必须在查询参数中提供 `channel_id`,且只能操作该渠道下的租户;渠道管理员使用其 Token 中的 `channelId` 自动确定渠道。 - -请求体示例 (JSON): - -```json -{ - "newPassword": "NewSecurePass123" -} -``` - -返回示例 (成功): - -```json -{ - "data": { - "tenantId": "", - "name": "Tenant Name" - }, - "message": "租户密码已重置", - "success": true -} -``` - -错误与注意事项: -- 如果 `tenant_id` 格式非法,返回 400 错误("无效的租户ID格式")。 -- 如果租户不存在或不属于该渠道,返回 404 错误("租户不存在或不属于该渠道")。 -- `newPassword` 目前只做最小长度校验(>= 8),建议前端/后端强制更严格的密码复杂度策略(包含大写、小写、数字、特殊字符)以提升安全。 -- 建议在重置密码操作中记录审计日志(操作者、时间、原因),并可选择触发邮件通知租户以提示安全变更。 - - -### 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** | \ No newline at end of file diff --git a/Docs/全平台API接口清单.md b/Docs/全平台API接口清单.md new file mode 100644 index 0000000..c933932 --- /dev/null +++ b/Docs/全平台API接口清单.md @@ -0,0 +1,843 @@ +# taiji-AI-PAD 全平台API接口清单 + +> 最后更新时间:2026-01-12 +> +> 本文档整理自 `services/mcp-server/app/routes/` 目录下的所有路由文件 + +## 目录 + +- [1. 认证模块 (Auth)](#1-认证模块-auth) +- [2. 用户模块 (User)](#2-用户模块-user) +- [3. 渠道模块 (Channel)](#3-渠道模块-channel) +- [4. 管理员模块 (Admin)](#4-管理员模块-admin) +- [5. 供应商管理模块 (Providers)](#5-供应商管理模块-providers) +- [6. Agent 模块 (Agents)](#6-agent-模块-agents) +- [7. 会话管理模块 (Sessions)](#7-会话管理模块-sessions) +- [8. 工具模块 (Tools)](#8-工具模块-tools) +- [9. 系统健康检查 (Health)](#9-系统健康检查-health) +- [10. 指标模块 (Metrics)](#10-指标模块-metrics) +- [11. 监控模块 (Monitoring)](#11-监控模块-monitoring) +- [12. WebSocket 模块](#12-websocket-模块) +- [13. 计费管理模块 (Billing Admin)](#13-计费管理模块-billing-admin) +- [14. 计费Webhook模块 (Billing Webhook)](#14-计费webhook模块-billing-webhook) +- [15. 配额管理模块 (Quota Management)](#15-配额管理模块-quota-management) +- [16. 定价管理模块 (Pricing Management)](#16-定价管理模块-pricing-management) +- [17. 资源监控模块 (Resource Monitoring)](#17-资源监控模块-resource-monitoring) +- [18. 事件管理模块 (Event Management)](#18-事件管理模块-event-management) +- [19. 追踪管理模块 (Trace Management)](#19-追踪管理模块-trace-management) +- [20. 审计管理模块 (Audit Management)](#20-审计管理模块-audit-management) +- [21. 供应商健康检查模块 (Provider Health)](#21-供应商健康检查模块-provider-health) +- [22. 前端集成模块 (Frontend Integration)](#22-前端集成模块-frontend-integration) +- [23. 平台Agent配额管理模块](#23-平台agent配额管理模块) + +--- + +## 1. 认证模块 (Auth) + +**前缀**: `/api/auth` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/login` | 用户/渠道/管理员/供应商登录 | 无 | +| POST | `/logout` | 用户登出(Token加入黑名单) | 需认证 | +| POST | `/refresh` | 刷新访问令牌 | 需认证 | +| PUT | `/password` | 修改密码 | 需认证 | +| GET | `/keys/info` | 获取服务终结点和API密钥信息 | 需认证 | +| POST | `/keys/regenerate` | 重新生成API密钥 | 需认证 | +| POST | `/register/send-code` | 发送邮箱验证码 | 无 | +| POST | `/register` | 用户注册(自动分配默认资源) | 无 | + +--- + +## 2. 用户模块 (User) + +**前缀**: `/api/user` + +### 2.1 仪表盘与统计 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/dashboard/stats` | 获取用户仪表盘统计数据 | 需认证 | +| GET | `/dashboard/billing-overview` | 获取计费概览 | 需认证 | + +### 2.2 工具管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/tools/stats` | 获取工具统计 | 需认证 | +| GET | `/tools` | 获取用户工具列表 | 需认证 | +| POST | `/tools/create` | 创建工具 | 需认证 | +| PUT | `/tools/{tool_id}` | 更新工具 | 需认证 | +| DELETE | `/tools/{tool_id}` | 删除工具 | 需认证 | + +### 2.3 Agent管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/agents/activity` | 获取Agent活动数据 | 需认证 | +| GET | `/agents/platform` | 获取平台Agent列表 | 需认证 | +| POST | `/agents/deploy` | 部署Agent | 需认证 | + +### 2.4 网关管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/gateway/select` | 选择网关类型 | 需认证 | +| POST | `/gateway/api/create` | 创建网关API | 需认证 | +| GET | `/gateway/apis` | 获取网关API列表 | 需认证 | +| GET | `/gateway/monitoring` | 获取网关监控数据 | 需认证 | + +### 2.5 配额管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/custom-agent-quota` | 获取自定义Agent配额 | 需认证 | + +### 2.6 工作流管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/workflows/create` | 创建工作流 | 需认证 | +| GET | `/workflows` | 获取工作流列表 | 需认证 | +| POST | `/workflows/{workflow_id}/run` | 运行工作流 | 需认证 | +| DELETE | `/workflows/{workflow_id}` | 删除工作流 | 需认证 | + +### 2.7 模型管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/models` | 获取用户模型列表 | 需认证 | +| GET | `/models/available` | 获取可用模型列表 | 需认证 | +| GET | `/models/usage/stats` | 获取模型使用统计 | 需认证 | + +### 2.8 计费管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/billing/balance` | 获取余额 | 需认证 | +| POST | `/billing/recharge` | 充值 | 需认证 | +| GET | `/billing/history` | 获取计费历史 | 需认证 | + +### 2.9 平台Agent + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/platform-agents/available` | 获取可用平台Agent | 需认证 | +| POST | `/platform-agents/deploy` | 部署平台Agent | 需认证 | +| POST | `/platform-agents/use` | 使用平台Agent | 需认证 | +| DELETE | `/platform-agents/{instance_name}` | 停止平台Agent | 需认证 | +| GET | `/platform-agents/instances` | 获取用户平台Agent实例 | 需认证 | + +### 2.10 自定义Agent + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/custom-agents/templates` | 获取自定义Agent模板 | 需认证 | +| POST | `/custom-agents` | 创建自定义Agent | 需认证 | +| DELETE | `/custom-agents/{name}` | 删除自定义Agent | 需认证 | +| PUT | `/custom-agents/{name}/scale` | 扩缩容自定义Agent | 需认证 | +| GET | `/custom-agents` | 获取自定义Agent列表 | 需认证 | +| GET | `/custom-agents/{name}/logs` | 获取Agent日志 | 需认证 | +| POST | `/custom-agents/{name}/restart` | 重启Agent | 需认证 | + +### 2.11 Agent计费 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/agent-billing/stats` | 获取Agent计费统计 | 需认证 | +| GET | `/agent-billing/history` | 获取Agent计费历史 | 需认证 | + +### 2.12 用户资料 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/profile` | 获取用户资料 | 需认证 | +| PUT | `/profile` | 更新用户资料 | 需认证 | + +--- + +## 3. 渠道模块 (Channel) + +**前缀**: `/api/channel` + +### 3.1 租户管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/tenants` | 获取租户列表 | 渠道管理员 | +| POST | `/tenants/create` | 创建租户 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/resources` | 分配租户资源 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/billing` | 更新租户计费设置 | 渠道管理员 | +| POST | `/tenants/{tenant_id}/recharge` | 为租户充值 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/credit` | 设置租户信用额度 | 渠道管理员 | +| DELETE | `/tenants/{tenant_id}` | 删除租户 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/status` | 更新租户状态 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/permissions` | 更新租户权限 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/password` | 修改租户密码 | 渠道管理员 | +| GET | `/tenants/{tenant_id}/custom-agent-quota` | 获取租户自定义Agent配额 | 渠道管理员 | + +### 3.2 租户模型管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| PUT | `/tenants/{tenant_id}/models` | 为租户分配模型 | 渠道管理员 | +| DELETE | `/tenants/{tenant_id}/models/{model_name}` | 撤销租户模型 | 渠道管理员 | +| PUT | `/tenants/{tenant_id}/models/{model_name}/quota` | 更新租户模型配额 | 渠道管理员 | +| GET | `/tenants/{tenant_id}/models` | 获取租户模型列表 | 渠道管理员 | + +### 3.3 渠道管理员 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/admins/create` | 创建渠道管理员 | 渠道管理员 | +| GET | `/admins` | 获取渠道管理员列表 | 渠道管理员 | + +### 3.4 资源申请 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/resources/apply` | 申请资源 | 渠道管理员 | + +### 3.5 计费统计 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/billing/stats` | 获取渠道计费统计 | 渠道管理员 | +| GET | `/agent-billing/stats` | 获取渠道Agent计费统计 | 渠道管理员 | +| GET | `/agent-billing/history` | 获取渠道Agent计费历史 | 渠道管理员 | +| GET | `/agent-billing/tenant-summary` | 获取租户计费汇总 | 渠道管理员 | + +### 3.6 供应商管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/providers` | 获取可用供应商列表 | 渠道管理员 | +| POST | `/providers/apply` | 申请供应商权限 | 渠道管理员 | +| GET | `/providers/applications` | 获取供应商申请列表 | 渠道管理员 | +| GET | `/providers/access` | 获取供应商访问权限 | 渠道管理员 | + +### 3.7 平台Agent管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/available-platform-agents` | 获取可用平台Agent | 渠道管理员 | +| POST | `/applications/platform-agents` | 申请平台Agent | 渠道管理员 | +| GET | `/applications/platform-agents` | 获取平台Agent申请列表 | 渠道管理员 | +| GET | `/platform-agents` | 获取渠道平台Agent配额 | 渠道管理员 | +| POST | `/tenants/{tenant_id}/platform-agents` | 分配平台Agent给租户 | 渠道管理员 | +| GET | `/tenants/{tenant_id}/platform-agents/usage` | 获取租户平台Agent使用情况 | 渠道管理员 | + +--- + +## 4. 管理员模块 (Admin) + +**前缀**: `/api/admin` + +### 4.1 管理员管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/admins` | 获取管理员列表 | super_admin | +| POST | `/admins/create` | 创建管理员 | super_admin | +| DELETE | `/admins/{admin_id}` | 删除管理员 | super_admin | +| GET | `/roles` | 获取角色列表 | 管理员 | + +### 4.2 仪表盘 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/dashboard/recent-logins` | 获取最近登录记录 | 管理员 | +| GET | `/dashboard/stats` | 获取管理员仪表盘统计 | 管理员 | + +### 4.3 租户管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/tenants` | 获取所有租户 | 管理员 | + +### 4.4 渠道管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/channels` | 获取渠道列表 | 管理员 | +| POST | `/channels/create` | 创建渠道 | super_admin | +| PUT | `/channels/{channel_id}` | 更新渠道 | super_admin | +| DELETE | `/channels/{channel_id}` | 删除渠道 | super_admin | +| GET | `/channels/{channel_id}/resources` | 获取渠道资源 | 管理员 | +| PUT | `/channels/{channel_id}/resources` | 分配渠道资源 | super_admin | +| PUT | `/channels/{channel_id}/commission` | 更新渠道佣金 | super_admin | +| GET | `/channels/{channel_id}/admins` | 获取渠道管理员 | 管理员 | +| GET | `/channels/applications` | 获取渠道申请列表 | 管理员 | +| PUT | `/channels/applications/{application_id}/review` | 审批渠道申请 | super_admin | + +### 4.5 资源管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/resources/allocation-stats` | 获取资源分配统计 | 管理员 | +| GET | `/resources/litellm-models` | 获取LiteLLM模型列表 | 管理员 | +| GET | `/resources/models` | 获取模型供应商列表 | 管理员 | +| GET | `/resources/agents` | 获取所有Agent | 管理员 | +| DELETE | `/resources/agents/{agent_id}` | 删除Agent资源 | super_admin | +| PUT | `/resources/agents/{agent_id}/config` | 更新Agent配置 | 管理员 | + +### 4.6 监控 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/monitoring/agents` | 监控所有Agent | 管理员 | + +### 4.7 计费管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/billing/overview` | 获取计费概览 | 管理员 | + +### 4.8 供应商申请管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/providers/applications` | 获取供应商申请列表 | 管理员 | +| PUT | `/providers/applications/{application_id}/review` | 审批供应商申请 | super_admin | +| GET | `/providers/access` | 获取所有供应商访问记录 | 管理员 | +| PUT | `/providers/access/{access_id}` | 更新供应商访问状态 | 管理员 | +| DELETE | `/providers/access/{access_id}` | 撤销供应商访问 | super_admin | + +### 4.9 平台Agent管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/platform-agents/templates` | 获取平台Agent模板 | 管理员 | +| PUT | `/platform-agents/templates/{template_name}/config` | 配置平台Agent模板 | 管理员 | +| GET | `/platform-agents/templates/{template_name}/config` | 获取平台Agent模板配置 | 管理员 | +| GET | `/applications/platform-agents` | 获取平台Agent申请列表 | 管理员 | +| PUT | `/applications/platform-agents/{application_id}/review` | 审批平台Agent申请 | super_admin | +| GET | `/platform-agents/allocations` | 获取平台Agent分配列表 | 管理员 | +| POST | `/platform-agents/allocate` | 分配平台Agent给渠道 | super_admin | +| DELETE | `/platform-agents/allocate` | 撤销渠道平台Agent | super_admin | +| GET | `/platform-agents/status` | 获取平台Agent状态 | 管理员 | + +--- + +## 5. 供应商管理模块 (Providers) + +**前缀**: `/api/providers` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/models` | 获取所有模型供应商 | 需认证 | +| POST | `/models/create` | 创建模型供应商 | super_admin/provider_admin | +| GET | `/models/{provider_id}` | 获取供应商详情 | super_admin/provider_admin | +| PUT | `/models/{provider_id}` | 更新供应商配置 | super_admin/provider_admin | +| DELETE | `/models/{provider_id}` | 删除供应商 | super_admin/provider_admin | +| POST | `/models/{provider_id}/test` | 测试供应商连接 | super_admin/provider_admin | + +--- + +## 6. Agent 模块 (Agents) + +**前缀**: `/agents` + +### 6.1 模板管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/templates` | 获取所有Agent模板 | 无 | +| GET | `/templates/platform` | 获取平台Agent模板 | 无 | +| GET | `/templates/custom` | 获取自定义Agent模板 | 无 | +| GET | `/templates/{template_name}` | 获取模板详情 | 无 | + +### 6.2 Agent CRUD + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `` | 创建Agent | 需认证 | +| GET | `` | 获取Agent列表 | 无 | +| GET | `/{agent_id}` | 获取Agent详情 | 无 | +| DELETE | `/{agent_id}` | 删除Agent | 需认证(所有者) | + +### 6.3 Agent状态与监控 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/{agent_id}/status` | 获取Agent状态 | 无 | +| GET | `/{agent_id}/metrics` | 获取Agent资源使用 | 无 | + +### 6.4 Agent执行 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/{agent_id}/execute` | 执行Agent任务 | 需认证(所有者) | + +--- + +## 7. 会话管理模块 (Sessions) + +**前缀**: `/sessions` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `` | 创建会话 | 需认证 | +| GET | `` | 获取会话列表 | 需认证 | +| GET | `/{session_id}` | 获取会话详情 | 需认证 | +| PUT | `/{session_id}/complete` | 完成会话 | 需认证 | +| DELETE | `/{session_id}` | 删除会话 | 需认证 | +| POST | `/cleanup` | 清理过期会话 | 需认证 | + +--- + +## 8. 工具模块 (Tools) + +**前缀**: `/tools` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `` | 获取工具列表 | 需认证 | +| GET | `/{tool_id}` | 获取工具详情 | 需认证 | +| POST | `` | 创建工具 | 需认证 | +| PUT | `/{tool_id}` | 更新工具 | 需认证 | +| DELETE | `/{tool_id}` | 删除工具 | 需认证 | +| GET | `/categories/list` | 获取工具分类列表 | 需认证 | + +--- + +## 9. 系统健康检查 (Health) + +**前缀**: 无 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/health` | 系统健康检查 | 无 | + +--- + +## 10. 指标模块 (Metrics) + +**前缀**: 无 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/metrics` | 获取Prometheus指标 | 无 | + +--- + +## 11. 监控模块 (Monitoring) + +**前缀**: `/monitoring` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/metrics` | 获取系统资源指标 | 无 | +| GET | `/stats` | 获取服务统计 | 无 | +| GET | `/trends` | 获取性能趋势 | 无 | +| GET | `/alerts` | 获取系统告警 | 无 | +| GET | `/dashboard` | 获取监控仪表盘 | 需认证 | + +--- + +## 12. WebSocket 模块 + +| 类型 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| WebSocket | `/ws/{agent_name_or_id}` | Agent WebSocket连接 | 无 | + +**消息类型**: +- `ping/pong`: 心跳消息 +- `mcp_request`: MCP请求 +- `mcp_response`: MCP响应 +- `error`: 错误消息 +- `heartbeat`: 服务端心跳 +- `welcome`: 连接欢迎消息 + +--- + +## 13. 计费管理模块 (Billing Admin) + +**前缀**: `/api/v1/billing` + +### 13.1 配额管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/quota/user/{user_id}` | 获取用户配额 | 管理员 | +| GET | `/quota/channel/{channel_id}` | 获取渠道配额 | 管理员 | +| GET | `/quota/alerts` | 获取配额告警列表 | 管理员 | +| PUT | `/quota/alerts/{alert_id}/acknowledge` | 确认配额告警 | 管理员 | +| PUT | `/quota/alerts/{alert_id}/resolve` | 解决配额告警 | 管理员 | + +### 13.2 资源管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/resources/overview` | 获取资源概览 | 管理员 | +| GET | `/resources/user/{user_id}` | 获取用户资源 | 管理员 | +| GET | `/resources/trends` | 获取资源使用趋势 | 管理员 | +| GET | `/resources/agent/{agent_id}` | 获取Agent资源 | 管理员 | + +### 13.3 事件管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/events/pending` | 获取待处理事件 | 管理员 | +| POST | `/events/retry-failed` | 重试失败事件 | 管理员 | +| GET | `/events/stats` | 获取事件统计 | 管理员 | + +### 13.4 追踪管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/traces/execution/{execution_id}` | 获取执行追踪 | 管理员 | +| GET | `/traces` | 获取追踪列表 | 管理员 | +| GET | `/traces/stats` | 获取追踪统计 | 管理员 | + +### 13.5 审计日志 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/audit/logs` | 获取审计日志 | 管理员 | +| GET | `/audit/summary` | 获取审计摘要 | 管理员 | +| GET | `/audit/user/{user_id}/activity` | 获取用户审计活动 | 管理员 | + +### 13.6 供应商健康 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/providers/health` | 获取供应商健康状态 | 管理员 | +| GET | `/providers/{provider_id}/health` | 获取单个供应商健康 | 管理员 | +| POST | `/providers/health-check` | 运行供应商健康检查 | 管理员 | + +### 13.7 定价管理 + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/pricing/models` | 获取模型定价列表 | 管理员 | +| POST | `/pricing/models` | 创建/更新模型定价 | 管理员 | +| POST | `/pricing/calculate` | 计算价格 | 管理员 | + +--- + +## 14. 计费Webhook模块 (Billing Webhook) + +**前缀**: `/api/v1/billing` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| POST | `/litellm-callback` | LiteLLM Token计费回调 | 无(系统回调) | +| GET | `/litellm-callback/health` | LiteLLM回调健康检查 | 无 | +| POST | `/agent-callback` | Agent Manager计费回调 | 无(系统回调) | +| GET | `/agent-callback/health` | Agent回调健康检查 | 无 | + +--- + +## 15. 配额管理模块 (Quota Management) + +**前缀**: `/api/quotas` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/user/{user_id}` | 获取用户配额 | 管理员 | +| GET | `/channel/{channel_id}` | 获取渠道配额 | 管理员 | +| GET | `/alerts` | 获取配额告警 | 管理员 | +| PUT | `/alerts/{alert_id}/acknowledge` | 确认告警 | 管理员 | +| PUT | `/alerts/{alert_id}/resolve` | 解决告警 | 管理员 | + +--- + +## 16. 定价管理模块 (Pricing Management) + +**前缀**: `/api/pricing` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/models` | 获取模型定价列表 | 管理员 | +| POST | `/models` | 创建/更新定价 | 管理员 | +| POST | `/calculate` | 计算模型成本 | 管理员 | + +--- + +## 17. 资源监控模块 (Resource Monitoring) + +**前缀**: `/api/resources` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/overview` | 获取平台资源概览 | super_admin/billing_admin/operations_admin | +| GET | `/user/{user_id}` | 获取用户资源摘要 | super_admin/billing_admin/operations_admin | +| GET | `/trends` | 获取资源趋势 | super_admin/billing_admin/operations_admin | +| GET | `/agent/{agent_id}` | 获取Agent资源统计 | super_admin/billing_admin/operations_admin | + +--- + +## 18. 事件管理模块 (Event Management) + +**前缀**: `/api/events` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/pending` | 获取待处理事件 | super_admin/billing_admin/operations_admin | +| POST | `/retry-failed` | 重试失败事件 | super_admin/billing_admin/operations_admin | +| GET | `/stats` | 获取事件统计 | super_admin/billing_admin/operations_admin | + +--- + +## 19. 追踪管理模块 (Trace Management) + +**前缀**: `/api/traces` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/execution/{execution_id}` | 获取执行追踪详情 | super_admin/billing_admin/operations_admin | +| GET | `` | 获取追踪列表 | super_admin/billing_admin/operations_admin | +| GET | `/stats` | 获取追踪统计 | super_admin/billing_admin/operations_admin | + +--- + +## 20. 审计管理模块 (Audit Management) + +**前缀**: `/api/audit` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/logs` | 获取审计日志列表 | super_admin/billing_admin/operations_admin | +| GET | `/summary` | 获取审计摘要 | super_admin/billing_admin/operations_admin | +| GET | `/user/{user_id}/activity` | 获取用户活动记录 | super_admin/billing_admin/operations_admin | + +--- + +## 21. 供应商健康检查模块 (Provider Health) + +**前缀**: `/api/provider-health` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/health` | 获取所有供应商健康状态 | super_admin/billing_admin/operations_admin | +| GET | `/{provider_id}/health` | 获取单个供应商健康历史 | super_admin/billing_admin/operations_admin | +| POST | `/health-check` | 执行供应商健康检查 | super_admin/billing_admin | + +--- + +## 22. 前端集成模块 (Frontend Integration) + +**前缀**: `/api` + +> 此模块提供前端直接调用的简化API,用于快速原型开发和前端集成。 + +### 22.1 用户相关 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| GET | `/user/dashboard/stats` | 用户仪表盘统计 | +| GET | `/user/agents/activity` | 用户Agent活动 | +| GET | `/user/resources/usage` | 用户资源使用 | + +### 22.2 网关管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/gateway/select` | 选择网关 | +| POST | `/gateway/api/create` | 创建网关API | +| GET | `/gateway/apis` | 获取网关API列表 | +| GET | `/gateway/monitoring` | 网关监控 | + +### 22.3 工具管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/tools/generate` | 生成工具 | +| GET | `/tools/list` | 获取工具列表 | + +### 22.4 Agent管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| GET | `/agents/platform` | 平台Agent列表 | +| POST | `/agents/deploy` | 部署Agent | +| GET | `/agents/deployed` | 已部署Agent列表 | + +### 22.5 工作流管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/workflows/create` | 创建工作流 | +| GET | `/workflows/list` | 工作流列表 | +| PUT | `/workflows/{workflow_id}` | 更新工作流 | +| DELETE | `/workflows/{workflow_id}` | 删除工作流 | +| POST | `/workflows/{workflow_id}/run` | 运行工作流 | + +### 22.6 计费管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| GET | `/billing/balance` | 获取余额 | +| GET | `/billing/history` | 计费历史 | +| POST | `/billing/recharge` | 充值 | + +### 22.7 渠道管理 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/channel/auth/login` | 渠道登录 | +| GET | `/channel/dashboard/stats` | 渠道仪表盘统计 | +| GET | `/channel/agents/available` | 可用Agent列表 | +| GET | `/channel/tenants` | 租户列表 | +| POST | `/channel/tenants/create` | 创建租户 | +| PUT | `/channel/tenants/{tenant_id}/resources` | 更新租户资源 | +| PUT | `/channel/tenants/{tenant_id}/billing` | 更新租户计费 | +| DELETE | `/channel/tenants/{tenant_id}` | 删除租户 | +| PUT | `/channel/tenants/{tenant_id}/status` | 更新租户状态 | +| PUT | `/channel/tenants/{tenant_id}/permissions` | 更新租户权限 | +| GET | `/channel/resources/agents` | 渠道Agent资源 | +| GET | `/channel/resources/models` | 渠道模型资源 | +| POST | `/channel/resources/apply` | 申请资源 | +| GET | `/channel/billing/stats` | 渠道计费统计 | +| GET | `/channel/admins` | 渠道管理员列表 | +| POST | `/channel/admins/create` | 创建渠道管理员 | +| PUT | `/channel/admins/{admin_id}/permissions` | 更新管理员权限 | + +### 22.8 管理员 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/admin/auth/login` | 管理员登录 | +| POST | `/admin/resources/models/add` | 添加模型资源 | +| GET | `/admin/providers/stats` | 供应商统计 | + +### 22.9 供应商 + +| 方法 | 路径 | 功能描述 | +|------|------|----------| +| POST | `/providers/auth/login` | 供应商登录 | +| GET | `/providers/models` | 供应商模型列表 | + +--- + +## 23. 平台Agent配额管理模块 + +### 23.1 渠道路由 + +**前缀**: `/api/channel` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/available-platform-agents` | 获取可用平台Agent模板 | 渠道管理员 | +| POST | `/applications/platform-agents` | 创建平台Agent申请 | 渠道管理员 | +| GET | `/applications/platform-agents` | 获取渠道申请列表 | 渠道管理员 | +| GET | `/platform-agents` | 获取渠道平台Agent配额 | 渠道管理员 | +| POST | `/tenants/{tenant_id}/platform-agents` | 分配平台Agent给租户 | 渠道管理员 | + +### 23.2 管理员路由 + +**前缀**: `/api/admin` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/applications/platform-agents` | 获取所有平台Agent申请 | admin/super_admin | +| PUT | `/applications/platform-agents/{application_id}/review` | 审批平台Agent申请 | admin/super_admin | +| GET | `/platform-agents/templates` | 获取平台Agent模板列表 | admin/super_admin | +| PUT | `/platform-agents/templates/{template_name}/config` | 配置平台Agent模板 | admin/super_admin | +| GET | `/platform-agents/templates/{template_name}/config` | 获取模板配置 | admin/super_admin | + +### 23.3 用户路由 + +**前缀**: `/api/user` + +| 方法 | 路径 | 功能描述 | 权限要求 | +|------|------|----------|----------| +| GET | `/platform-agents` | 获取用户平台Agent配额 | 需认证 | +| GET | `/platform-agents/{template}/instances` | 获取用户Agent实例 | 需认证 | +| DELETE | `/platform-agents/{agent_name}` | 停止平台Agent实例 | 需认证 | +| GET | `/platform-agents/quota` | 获取用户配额使用情况 | 需认证 | +| GET | `/platform-agents/{agent_name}/status` | 获取Agent实例状态 | 需认证 | + +--- + +## 权限说明 + +### 角色类型 + +| 角色 | 说明 | +|------|------| +| `super_admin` | 超级管理员,拥有所有权限 | +| `admin` | 管理员,拥有大部分管理权限 | +| `billing_admin` | 计费管理员,管理计费相关功能 | +| `operations_admin` | 运营管理员,管理运营相关功能 | +| `channel_admin` | 渠道管理员,管理渠道内租户 | +| `provider_admin` | 供应商管理员,管理模型供应商 | +| `user` | 普通用户/租户 | + +### 认证方式 + +1. **JWT Token**: 通过 `/api/auth/login` 获取,放入 `Authorization: Bearer ` 头部 +2. **API Key**: 通过 `/api/auth/keys/info` 获取,放入 `X-API-Key` 头部 + +--- + +## 通用响应格式 + +### 成功响应 + +```json +{ + "success": true, + "data": { ... }, + "message": "操作成功" +} +``` + +### 错误响应 + +```json +{ + "detail": "错误描述" +} +``` + +或 + +```json +{ + "success": false, + "error": "error_code", + "message": "错误描述", + "detail": { ... } +} +``` + +--- + +## 接口统计 + +| 模块 | 接口数量 | +|------|----------| +| 认证模块 | 8 | +| 用户模块 | 41 | +| 渠道模块 | 32 | +| 管理员模块 | 37 | +| 供应商管理模块 | 6 | +| Agent模块 | 11 | +| 会话管理模块 | 6 | +| 工具模块 | 6 | +| 健康检查 | 1 | +| 指标模块 | 1 | +| 监控模块 | 5 | +| WebSocket | 1 | +| 计费管理模块 | 24 | +| 计费Webhook | 4 | +| 配额管理 | 5 | +| 定价管理 | 3 | +| 资源监控 | 4 | +| 事件管理 | 3 | +| 追踪管理 | 3 | +| 审计管理 | 3 | +| 供应商健康 | 3 | +| 前端集成 | 44 | +| 平台Agent配额 | 10 | + +**总计**: 约 256 个API接口 + +--- + +## 更新日志 + +- 2026-01-12: 初始版本,整理全部mcp-server API接口 + diff --git a/Docs/需求.md b/Docs/需求.md deleted file mode 100644 index 1c252c5..0000000 --- a/Docs/需求.md +++ /dev/null @@ -1,42 +0,0 @@ -1、首行 -全部工具总数 -含平台和用户自建全部工具总数。 - -生成的工具 -用户自己创建的工具 - -活跃的工具数 -主要是用户正在Agnet使用的工具 - - -可以用工具列表 -支持查看平台和用户自己的工具,并且用户工具可用操作删除和修改,并且有状态可以显示是否正在使用,平台工具用户仅可以使用不能删除和修改。 - -数据模板 -主要是jsonapi上传和云存储与数据库两种类型 -其中上传方式采用大模型读取jsop内容,所需要的参数一切以图片为准 -备注 -【创建数据模板: -选择模板类型并填写配置信息 -模板类型 -云存储与数据库模板 -模板名称 -输入模板名称 -存储服务 -选择服务 -连接字符串 -输入连接字符串 -取消 -创建模板】【创建数据模板 -选择模板类型并填写配置信息 -模板类型 -团 JSON API模板 -模板名称 -输入模板名称 -上传JSON文件 -数据接口URL -https://api.example.com/data -密钥Key -输入API密钥 -查询参数 -输入查询参数,例如: page=1&limit=10】 diff --git a/services/mcp-server/app/routes/frontend_integration.py b/services/mcp-server/app/routes/frontend_integration.py index 20ce665..f69ca71 100644 --- a/services/mcp-server/app/routes/frontend_integration.py +++ b/services/mcp-server/app/routes/frontend_integration.py @@ -897,226 +897,26 @@ async def admin_login(payload: Dict[str, str], db: AsyncSession = Depends(get_db return {"token": token, "tokenType": "bearer", "email": email, "expiresIn": 60 * 60} -# 注意: /admin/dashboard/stats 接口已移至 admin.py,避免重复定义 -# 该接口从 AgentBillingRecord 和 ModelBillingRecord 统计收入和调用次数 - - -@router.get("/admin/channels") -async def admin_channels(db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - import logging - logger = logging.getLogger(__name__) - - channels = (await db.execute(select(Channel))).scalars().all() - - # 获取每个渠道的租户数量 - channel_tenant_counts = {} - for ch in channels: - tenant_count = (await db.execute( - select(func.count(User.id)).where( - User.channel_id == ch.id, - User.role == "user" - ) - )).scalar() or 0 - channel_tenant_counts[ch.id] = tenant_count - - items = [] - for ch in channels: - # 优先使用新字段 custom_agent_cpu_quota,如果为空则回退到旧字段 custom_agent_cpu - cpu_quota = ch.custom_agent_cpu_quota if ch.custom_agent_cpu_quota else ch.custom_agent_cpu - memory_quota = ch.custom_agent_memory_quota if ch.custom_agent_memory_quota else ch.custom_agent_memory - - logger.debug(f"Channel {ch.name}: cpu_quota={ch.custom_agent_cpu_quota}, memory_quota={ch.custom_agent_memory_quota}, " - f"cpu={ch.custom_agent_cpu}, memory={ch.custom_agent_memory}") - - items.append({ - "id": str(ch.id), - "name": ch.name, - "email": ch.email, - "commissionRate": ch.commission_rate, - "channelCredit": float(ch.channel_credit) if ch.channel_credit else 0.0, - "customAgentCpu": float(cpu_quota) if cpu_quota else 0.0, - "customAgentMemory": float(memory_quota) if memory_quota else 0.0, - "status": ch.status or "active", - "createdAt": ch.created_at.isoformat() if ch.created_at else None, - "tenantCount": channel_tenant_counts.get(ch.id, 0), - "totalAllocatedCpu": 0.0, # TODO: 计算已分配给租户的CPU - "totalAllocatedMemory": 0.0, # TODO: 计算已分配给租户的内存 - }) - - return {"success": True, "data": {"channels": items}, "message": None} - - -@router.post("/admin/channels/create") -async def admin_create_channel(payload: Dict[str, Any], db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - required = {"name", "email"} - missing = [k for k in required if not payload.get(k)] - if missing: - raise HTTPException(status_code=400, detail=f"Missing fields: {', '.join(missing)}") - channel = Channel( - name=payload["name"], - email=payload["email"], - commission_rate=payload.get("commissionRate", 0.0), - monthly_quota=payload.get("monthlyQuota", 0), - monthly_budget=payload.get("monthlyBudget", 0), - ) - db.add(channel) - await db.commit() - await db.refresh(channel) - return { - "id": str(channel.id), - "name": channel.name, - "email": channel.email, - "commissionRate": channel.commission_rate, - "monthlyQuota": channel.monthly_quota, - "monthlyBudget": channel.monthly_budget, - } - - -@router.put("/admin/channels/{channel_id}/commission") -async def admin_update_channel_commission(channel_id: str, payload: Dict[str, Any], db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - channel = await db.get(Channel, uuid.UUID(channel_id)) if channel_id else None - if not channel: - raise HTTPException(status_code=404, detail="channel not found") - channel.commission_rate = payload.get("commissionRate", channel.commission_rate) - db.add(channel) - await db.commit() - await db.refresh(channel) - return { - "id": str(channel.id), - "name": channel.name, - "commissionRate": channel.commission_rate, - } - - -@router.get("/admin/channels/{channel_id}/resources") -async def admin_get_channel_resources(channel_id: str, db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - """获取渠道的资源分配信息""" - channel = await db.get(Channel, uuid.UUID(channel_id)) if channel_id else None - if not channel: - raise HTTPException(status_code=404, detail="channel not found") - - # 获取渠道的Agent配额 - quotas = (await db.execute( - select(ChannelAgentQuota).where(ChannelAgentQuota.channel_id == channel.id) - )).scalars().all() - - agents = [] - for q in quotas: - agent = await db.get(Agent, q.agent_id) - if agent: - agents.append({ - "agentId": str(q.agent_id), - "agentName": agent.name, - "quantity": q.quantity, - }) - - # 获取所有可用的模型供应商 - models = (await db.execute(select(ProviderModel).where(ProviderModel.status == "active"))).scalars().all() - model_ids = [str(m.id) for m in models] - - # 优先使用新字段,回退到旧字段 - cpu_quota = channel.custom_agent_cpu_quota if channel.custom_agent_cpu_quota else channel.custom_agent_cpu - memory_quota = channel.custom_agent_memory_quota if channel.custom_agent_memory_quota else channel.custom_agent_memory - - return { - "id": str(channel.id), - "channelName": channel.name, - "models": model_ids, - "agents": agents, - "customAgentResources": { - "cpu": float(cpu_quota) if cpu_quota else 0.0, - "memory": float(memory_quota) if memory_quota else 0.0, - }, - "channelCredit": float(channel.channel_credit) if channel.channel_credit else 0.0, - } - - -@router.put("/admin/channels/{channel_id}/resources") -async def admin_update_channel_resources(channel_id: str, payload: Dict[str, Any], db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - import logging - logger = logging.getLogger(__name__) - - channel = await db.get(Channel, uuid.UUID(channel_id)) if channel_id else None - if not channel: - raise HTTPException(status_code=404, detail="channel not found") - - logger.info(f"更新渠道 {channel.name} 资源,payload: {payload}") - - # 处理自定义Agent配额 - custom_agent_quota = payload.get("customAgentQuota") - if custom_agent_quota: - if "cpuQuota" in custom_agent_quota: - cpu_value = custom_agent_quota["cpuQuota"] - channel.custom_agent_cpu_quota = cpu_value - channel.custom_agent_cpu = cpu_value # 同时更新旧字段 - logger.info(f"设置 CPU 配额: {cpu_value}") - if "memoryQuota" in custom_agent_quota: - memory_value = custom_agent_quota["memoryQuota"] - channel.custom_agent_memory_quota = memory_value - channel.custom_agent_memory = memory_value # 同时更新旧字段 - logger.info(f"设置内存配额: {memory_value}") - - # 处理渠道信用额度 - if "channelCredit" in payload: - channel.channel_credit = payload["channelCredit"] - - # 简化为保存配额到 ChannelAgentQuota - if payload.get("agents"): - for agent in payload["agents"]: - agent_id = uuid.UUID(agent.get("agentId")) - quota = ChannelAgentQuota(channel_id=channel.id, agent_id=agent_id, quantity=agent.get("quantity", 0)) - db.add(quota) - - db.add(channel) - await db.commit() - await db.refresh(channel) - - logger.info(f"更新后渠道 {channel.name}: cpu_quota={channel.custom_agent_cpu_quota}, memory_quota={channel.custom_agent_memory_quota}") - - return { - "success": True, - "data": { - "channelId": str(channel.id), - "channelName": channel.name, - "customAgentCpu": float(channel.custom_agent_cpu_quota) if channel.custom_agent_cpu_quota else 0.0, - "customAgentMemory": float(channel.custom_agent_memory_quota) if channel.custom_agent_memory_quota else 0.0, - }, - "message": "渠道资源分配成功" - } - - -@router.get("/admin/channels/applications") -async def admin_channel_applications() -> Dict[str, Any]: - return {"items": list(store.resource_applications.values())} - - -@router.put("/admin/channels/applications/{request_id}/approve") -async def admin_channel_applications_approve(request_id: str, payload: Dict[str, Any]) -> Dict[str, Any]: - if request_id not in store.resource_applications: - raise HTTPException(status_code=404, detail="application not found") - store.resource_applications[request_id]["status"] = "approved" if payload.get("approved") else "rejected" - store.resource_applications[request_id]["reason"] = payload.get("reason", "") - return store.resource_applications[request_id] - - -@router.get("/admin/resources/models") -async def admin_resources_models(db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - models = (await db.execute(select(ProviderModel).order_by(ProviderModel.created_at.desc()))).scalars().all() - items = [ - { - "id": str(m.id), - "name": m.name, - "apiUrl": m.api_url, - "supportedModels": m.supported_models, - "rpm": m.rpm, - "tpm": m.tpm, - "isActive": m.is_active, - } - for m in models - ] - return {"items": items} +# ===================================================== +# 注意: 以下 /admin/* 接口已移至 admin.py,避免重复定义 +# 已删除的接口包括: +# - /admin/dashboard/stats (从 AgentBillingRecord 和 ModelBillingRecord 统计) +# - /admin/channels (使用 admin.py 中的完整实现) +# - /admin/channels/create (使用 admin.py 中带 LiteLLM 集成的实现) +# - /admin/channels/{channel_id}/commission (使用 admin.py 中的实现) +# - /admin/channels/{channel_id}/resources GET/PUT (使用 admin.py 中的实现) +# - /admin/channels/applications (使用 admin.py 中的数据库实现) +# - /admin/resources/models (使用 admin.py 中的 ModelProvider 实现) +# - /admin/resources/agents (使用 admin.py 中的完整实现) +# - /admin/monitoring/agents (使用 admin.py 中的 K8s+DB 实现) +# - /admin/billing/overview (使用 admin.py 中的正确计费表实现) +# - /admin/roles (使用 admin.py 中的实现) +# - /admin/channels/{channel_id}/admins (使用 admin.py 中的实现) +# - /admin/admins/create (使用 admin.py 中的实现) +# ===================================================== +# 保留: /admin/resources/models/add - 独立功能,admin.py 中没有对应实现 @router.post("/admin/resources/models/add") async def admin_resources_models_add(payload: Dict[str, Any], db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: required = {"name", "apiUrl", "apiKey", "supportedModels"} @@ -1145,356 +945,7 @@ async def admin_resources_models_add(payload: Dict[str, Any], db: AsyncSession = } -@router.get("/admin/resources/agents") -async def admin_resources_agents(db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - """获取所有 Agent 资源列表(平台端 + 自定义) - - 平台端 Agent 从 agent-manager (K8s) 获取 - 自定义 Agent 从本地数据库获取 - """ - import logging - import traceback - logger = logging.getLogger(__name__) - - items = [] - k8s_agents = [] - error_message = None - - # 1. 从 agent-manager 获取 K8s 中运行的平台端 Agent - try: - print("=== 开始获取 agent-manager 数据 ===") - from app.agent_manager_client import get_agent_manager_client - client = get_agent_manager_client() - print(f"Agent Manager URL: {client.base_url}") - k8s_agents_result = await client.list_agents() - k8s_agents = k8s_agents_result.agents # 从 AgentListResult 中获取 agents 列表 - print(f"从 agent-manager 获取到 {len(k8s_agents)} 个 Agent: {k8s_agents}") - logger.info(f"从 agent-manager 获取到 {len(k8s_agents)} 个 Agent") - - for agent in k8s_agents: - # 解析资源配置 - cpu_limit = "0" - memory_limit = "0" - try: - metrics = await client.get_agent_metrics(agent.get("name", "")) - cpu_limit = metrics.limits.get("cpu", "0") if hasattr(metrics, 'limits') else "0" - memory_limit = metrics.limits.get("memory", "0") if hasattr(metrics, 'limits') else "0" - except Exception as e: - logger.warning(f"获取 Agent {agent.get('name')} 资源指标失败: {e}") - - # 解析 CPU (如 "500m" -> 0.5 核) - cpu_value = 0.0 - if isinstance(cpu_limit, str): - if cpu_limit.endswith("m"): - cpu_value = float(cpu_limit[:-1]) / 1000 - elif cpu_limit: - try: - cpu_value = float(cpu_limit) - except ValueError: - pass - - # 解析内存 (如 "512Mi" -> 0.5 GB) - memory_value = 0.0 - if isinstance(memory_limit, str): - if memory_limit.endswith("Mi"): - memory_value = float(memory_limit[:-2]) / 1024 - elif memory_limit.endswith("Gi"): - memory_value = float(memory_limit[:-2]) - elif memory_limit.endswith("Ki"): - memory_value = float(memory_limit[:-2]) / (1024 * 1024) - elif memory_limit: - try: - memory_value = float(memory_limit) - except ValueError: - pass - - items.append({ - "id": agent.get("name", ""), - "name": agent.get("name", ""), - "type": "platform", - "description": agent.get("template", "K8s Agent"), - "status": agent.get("status", "unknown"), - "healthStatus": "healthy" if agent.get("status") == "Running" else "unknown", - "cpu": round(cpu_value, 2), - "memory": round(memory_value, 2), - "maxInstances": 1, - "cpuRequest": agent.get("cpu_request", "100m"), - "cpuLimit": cpu_limit, - "memoryRequest": agent.get("memory_request", "128Mi"), - "memoryLimit": memory_limit, - "podName": agent.get("pod_name", ""), - "podIp": agent.get("pod_ip", ""), - "namespace": agent.get("namespace", "ai-agents"), - "template": agent.get("template", ""), - "createdAt": agent.get("created_at"), - "source": "k8s", - }) - except Exception as e: - logger.warning(f"连接 agent-manager 失败: {e}") - - # 2. 从本地数据库获取自定义 Agent - db_agents = (await db.execute(select(Agent).where(Agent.status != "inactive"))).scalars().all() - - for a in db_agents: - # 检查是否已经从 K8s 获取过(避免重复) - if any(item.get("name") == a.name for item in items): - continue - - items.append({ - "id": str(a.id), - "name": a.name, - "type": a.type or "custom", - "description": a.description, - "status": a.status, - "healthStatus": a.health_status or "unknown", - "cpu": float(a.cpu or 0), - "memory": float(a.memory or 0), - "maxInstances": a.max_instances or 100, - "cpuRequest": a.cpu_request, - "cpuLimit": a.cpu_limit, - "memoryRequest": a.memory_request, - "memoryLimit": a.memory_limit, - "totalExecutions": a.total_executions or 0, - "successRate": float(a.success_rate or 0), - "createdAt": a.created_at.isoformat() if a.created_at else None, - "source": "database", - }) - - # 统计信息 - platform_count = sum(1 for item in items if item.get("type") == "platform") - custom_count = sum(1 for item in items if item.get("type") == "custom") - total_cpu = sum(float(item.get("cpu", 0)) for item in items) - total_memory = sum(float(item.get("memory", 0)) for item in items) - - return { - "success": True, - "data": { - "agents": items, - "summary": { - "total": len(items), - "platformAgents": platform_count, - "customAgents": custom_count, - "totalCpu": round(total_cpu, 2), - "totalMemory": round(total_memory, 2), - "k8sAgentsCount": len(k8s_agents), - "dbAgentsCount": len(db_agents), - } - }, - "message": None - } - - -@router.put("/admin/resources/agents/{agent_id}") -async def admin_resources_agents_update(agent_id: str, payload: Dict[str, Any]) -> Dict[str, Any]: - return {"id": agent_id, **payload, "updatedAt": _now()} - - -@router.get("/admin/monitoring/agents") -async def admin_monitoring_agents( - agent_type: str = None, - health_status: str = None, - db: AsyncSession = Depends(get_db) -) -> Dict[str, Any]: - """ - 获取 Agent 健康监控信息 - - 参数: - - agent_type: 可选,筛选 Agent 类型 (platform/custom) - - health_status: 可选,筛选健康状态 (healthy/warning/critical/unknown) - """ - # 构建查询 - query = select(Agent).where(Agent.status != "inactive") - - if agent_type: - query = query.where(Agent.type == agent_type) - if health_status: - query = query.where(Agent.health_status == health_status) - - agents = (await db.execute(query)).scalars().all() - - # 构建响应 - agent_list = [] - summary = { - "total": 0, - "byType": {"platform": 0, "custom": 0}, - "byHealthStatus": {"healthy": 0, "warning": 0, "critical": 0, "unknown": 0}, - "byStatus": {"active": 0, "error": 0, "other": 0}, - } - - for agent in agents: - agent_data = { - "id": str(agent.id), - "name": agent.name, - "type": agent.type or "platform", - "status": agent.status, - "healthStatus": agent.health_status or "unknown", - "lastHealthCheck": agent.last_health_check.isoformat() if agent.last_health_check else None, - "healthMessage": agent.health_message, - "cpu": float(agent.cpu or 0), - "memory": float(agent.memory or 0), - "totalExecutions": agent.total_executions or 0, - "successRate": float(agent.success_rate or 0), - } - agent_list.append(agent_data) - - # 更新统计 - summary["total"] += 1 - - agent_type_val = agent.type or "platform" - if agent_type_val in summary["byType"]: - summary["byType"][agent_type_val] += 1 - - health = agent.health_status or "unknown" - if health in summary["byHealthStatus"]: - summary["byHealthStatus"][health] += 1 - - if agent.status == "active": - summary["byStatus"]["active"] += 1 - elif agent.status == "error": - summary["byStatus"]["error"] += 1 - else: - summary["byStatus"]["other"] += 1 - - return { - "success": True, - "data": { - "agents": agent_list, - "summary": summary, - }, - "message": None, - } - - -@router.get("/admin/billing/overview") -async def admin_billing_overview(db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - billing_rows = ( - await db.execute( - select(Billing.cost, Billing.eu_consumed, Billing.created_at, Billing.channel_id, Billing.tenant_id) - .order_by(Billing.created_at.desc()) - .limit(200) - ) - ).all() - - total_eu = sum(float(row.eu_consumed or 0) for row in billing_rows) - total_cost = sum(float(row.cost or 0) for row in billing_rows) - - channels = [ - { - "channelName": str(row.channel_id) if row.channel_id else "", - "calls": 1, - "totalEU": float(row.eu_consumed or 0), - "totalCost": float(row.cost or 0), - } - for row in billing_rows - ] - tenants = [ - { - "tenantName": str(row.tenant_id) if row.tenant_id else "", - "channelName": str(row.channel_id) if row.channel_id else "", - "calls": 1, - "totalEU": float(row.eu_consumed or 0), - "totalCost": float(row.cost or 0), - } - for row in billing_rows - ] - call_records = [ - { - "timestamp": row.created_at.isoformat() if row.created_at else _now(), - "channelName": str(row.channel_id) if row.channel_id else "", - "tenantName": str(row.tenant_id) if row.tenant_id else "", - "agentName": "", - "duration": 0, - "eu": float(row.eu_consumed or 0), - "cost": float(row.cost or 0), - } - for row in billing_rows - ] - return {"channels": channels, "tenants": tenants, "callRecords": call_records, "totalEU": total_eu, "totalCost": total_cost} - - -@router.get("/admin/roles") -async def admin_roles() -> Dict[str, Any]: - """获取可用角色列表""" - return { - "items": [ - { - "id": "super_admin", - "name": "超级管理员", - "description": "拥有系统所有权限", - "permissions": ["*"] - }, - { - "id": "billing_admin", - "name": "计费管理员", - "description": "完整写入权限,可创建渠道、管理租户、计费操作", - "permissions": ["read:*", "write:channels", "write:tenants", "write:billing"] - }, - { - "id": "operations_admin", - "name": "运维管理员", - "description": "只读权限,仅查看和监控", - "permissions": ["read:*"] - }, - { - "id": "channel_admin", - "name": "渠道管理员", - "description": "渠道内部管理权限", - "permissions": ["read:channel", "write:tenants", "read:billing"] - }, - { - "id": "user", - "name": "普通用户", - "description": "标准用户权限", - "permissions": ["read:self", "use:agents"] - } - ] - } - - -@router.get("/admin/channels/{channel_id}/admins") -async def admin_get_channel_admins(channel_id: str, db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: - """获取渠道管理员列表""" - from models import User - channel = await db.get(Channel, uuid.UUID(channel_id)) if channel_id else None - if not channel: - raise HTTPException(status_code=404, detail="channel not found") - - # 查询渠道下的管理员 - admins = (await db.execute( - select(User).where( - User.channel_id == channel.id, - User.role == "channel_admin", - User.status == "active" - ) - )).scalars().all() - - items = [ - { - "id": str(admin.id), - "name": admin.name or admin.full_name, - "email": admin.email, - "role": admin.role, - "status": admin.status, - "createdAt": admin.created_at.isoformat() if admin.created_at else None, - } - for admin in admins - ] - - return { - "channelId": str(channel.id), - "channelName": channel.name, - "admins": items - } - - -@router.post("/admin/admins/create") -async def admin_admins_create(payload: Dict[str, Any]) -> Dict[str, Any]: - admin_id = str(uuid.uuid4()) - admin = {"id": admin_id, **payload, "createdAt": _now()} - store.channel_admins[admin_id] = admin - return admin - - +# 保留: /admin/providers/stats - 独立功能,admin.py 中没有对应实现 @router.get("/admin/providers/stats") async def admin_providers_stats(db: AsyncSession = Depends(get_db)) -> Dict[str, Any]: models = (await db.execute(select(ProviderModel))).scalars().all() @@ -1512,11 +963,6 @@ async def admin_providers_stats(db: AsyncSession = Depends(get_db)) -> Dict[str, } -@router.get("/admin/channels/backend/stats") -async def admin_channels_backend_stats() -> Dict[str, Any]: - return {"channels": len(store.channels), "applications": len(store.resource_applications)} - - # ----- Provider Management -----