32 KiB
渠道合作伙伴平台 - 接口对接文档
版本: v1.0.0 更新时间: 2026-01-06 说明: 本文档基于前端业务需求清单与后端API接口清单核实,列出渠道平台所有接口的对接状态
目录
接口对接核实总结
核实结果概览
| 分类 | 已对接 | 部分对接 | 待开发 | 总计 |
|---|---|---|---|---|
| 认证模块 | 2 | 0 | 0 | 2 |
| 仪表板模块 | 1 | 1 | 0 | 2 |
| 租户管理模块 | 9 | 0 | 0 | 9 |
| 资源管理模块 | 4 | 0 | 0 | 4 |
| 计费模块 | 3 | 1 | 0 | 4 |
| 设置模块 | 2 | 0 | 1 | 3 |
| 总计 | 21 | 2 | 1 | 24 |
核实说明
- ✅ 已对接: 后端接口已存在且与前端需求匹配
- ⚠️ 部分对接: 后端接口存在但功能不完整
- ❌ 待开发: 后端接口不存在,需要新增
认证模块
1. 渠道用户登录 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 登录页面 → "登录"按钮 |
| 接口路径 | POST /api/auth/login |
| 后端文件 | services/mcp-server/app/routes/auth.py |
| 权限要求 | 无 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 是 | 邮箱地址 | |
| password | string | 是 | 密码 |
| role | string | 是 | 固定值 "channel" |
响应示例:
{
"success": true,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "channel_001",
"email": "channel@example.com",
"role": "channel_admin",
"name": "渠道管理员"
}
}
}
前端调用: TaijiAPIClient.login(email, password, "channel")
Token存储: channel_token (localStorage + Cookie)
2. 退出登录 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 页面头部 → "退出"按钮 |
| 接口路径 | POST /api/auth/logout |
| 后端文件 | services/mcp-server/app/routes/auth.py |
| 权限要求 | 已认证用户 |
请求头:
Authorization: Bearer <token>
响应示例:
{
"success": true,
"message": "登出成功"
}
前端调用: TaijiAPIClient.logout()
前端行为: 清除所有本地存储的token,跳转到登录页
仪表板模块
3. 渠道统计概览 ⚠️ 部分对接
| 属性 | 值 |
|---|---|
| 展示位置 | 仪表板页面 → 顶部统计卡片区域 |
| 当前接口 | GET /api/channel/tenants |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
展示内容:
- 总租户数(从租户列表计算)✅
- 活跃租户(从租户列表计算)✅
- 月度收入 ❌ 需要专门接口
- 已获佣金 ❌ 需要专门接口
当前实现: 从租户列表接口计算总租户数和活跃租户数
响应示例:
{
"success": true,
"data": {
"tenants": [
{
"id": "tenant_001",
"name": "租户A",
"status": "active"
}
]
}
}
待完善: 建议后端新增聚合统计接口
GET /api/channel/dashboard/stats
建议响应:
{
"success": true,
"data": {
"totalTenants": 5,
"activeTenants": 3,
"monthlyRevenue": 12500.00,
"commission": 1250.00
}
}
4. 平台Agent概览 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | 仪表板页面 → "平台Agent概览"区域 |
| 接口路径 | GET /api/channel/available-platform-agents |
| 后端文件 | services/mcp-server/app/routes/platform_agent_quota.py |
| 权限要求 | channel_admin |
响应示例:
{
"success": true,
"data": {
"templates": [
{
"name": "gpt-assistant",
"displayName": "GPT助手",
"description": "基于GPT的智能助手",
"podQuota": 10,
"podRemaining": 8,
"hasAccess": true
}
]
}
}
前端调用: TaijiAPIClient.getAvailablePlatformAgents()
租户管理模块
5. 租户列表 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | "我的租户"标签页 → 租户列表 |
| 接口路径 | GET /api/channel/tenants |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
响应示例:
{
"success": true,
"data": {
"tenants": [
{
"id": "tenant_001",
"name": "企业A",
"status": "active",
"plan": "enterprise",
"users": 50,
"revenue": "$3,200",
"balance": "$1,500",
"creditLimit": "$5,000"
}
]
}
}
前端调用: TaijiAPIClient.getChannelTenants()
6. 创建租户 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | "我的租户"标签页 → "添加租户"按钮 |
| 接口路径 | POST /api/channel/tenants/create |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 公司名称 |
| string | 是 | 联系邮箱(用于登录) | |
| password | string | 是 | 登录密码 |
| subscriptionTier | string | 否 | 订阅等级:free/pro/enterprise |
请求示例:
{
"name": "新企业",
"email": "admin@newcompany.com",
"password": "SecurePass123",
"subscriptionTier": "professional"
}
响应示例:
{
"success": true,
"data": {
"tenant": {
"id": "tenant_002",
"name": "新企业",
"email": "admin@newcompany.com"
}
}
}
前端调用: TaijiAPIClient.createChannelTenant(data)
7. 删除租户 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "删除租户" |
| 接口路径 | DELETE /api/channel/tenants/{tenantId} |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
响应示例:
{
"success": true,
"message": "租户删除成功"
}
前端调用: TaijiAPIClient.deleteTenant(tenantId)
8. 分配资源 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "分配资源" |
| 接口路径 | PUT /api/channel/tenants/{tenantId}/resources |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| agents | array | 否 | Agent配额列表 |
| agents[].agentId | string | 是 | Agent模板名称 |
| agents[].quantity | int | 是 | 分配数量 |
| models | array | 否 | 模型配额列表 |
| models[].modelName | string | 是 | 模型名称(如gpt-4) |
| models[].rpm | int | 是 | 每分钟请求数限制 |
| models[].tpm | int | 是 | 每分钟令牌数限制 |
| customAgentQuota | object | 否 | 自定义Agent资源配额 |
| customAgentQuota.cpuQuota | float | 否 | CPU配额(核数/Agent) |
| customAgentQuota.memoryQuota | float | 否 | 内存配额(GB/Agent) |
请求示例:
{
"agents": [
{
"agentId": "gpt-assistant",
"quantity": 5
}
],
"models": [
{
"modelName": "gpt-4",
"rpm": 100,
"tpm": 50000
}
],
"customAgentQuota": {
"cpuQuota": 0.5,
"memoryQuota": 1.0
}
}
响应示例:
{
"success": true,
"message": "资源分配成功"
}
前端调用: TaijiAPIClient.allocateTenantResources(tenantId, data)
9. 租户充值 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "充值" |
| 接口路径 | POST /api/channel/tenants/{tenantId}/recharge |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| amount | float | 是 | 充值金额(USD) |
请求示例:
{
"amount": 500.00
}
响应示例:
{
"success": true,
"data": {
"newBalance": 2000.00
}
}
前端调用: TaijiAPIClient.rechargeTenant(tenantId, amount)
快捷金额: $50, $100, $500, $1000
10. 设置授信额度 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "授信额度" |
| 接口路径 | PUT /api/channel/tenants/{tenantId}/credit |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| creditLimit | float | 是 | 授信额度(USD) |
请求示例:
{
"creditLimit": 5000.00
}
响应示例:
{
"success": true,
"message": "授信额度设置成功"
}
前端调用: TaijiAPIClient.setTenantCreditLimit(tenantId, creditLimit)
快捷金额: $500, $1000, $5000, $10000
11. 管理计费 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "管理计费" |
| 接口路径 | PUT /api/channel/tenants/{tenantId}/billing |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| subscriptionTier | string | 否 | 订阅层级:free/professional/enterprise |
| discount | int | 否 | 折扣比例(0-100的百分比) |
请求示例:
{
"subscriptionTier": "professional",
"discount": 10
}
响应示例:
{
"success": true,
"message": "计费设置更新成功"
}
前端调用: TaijiAPIClient.updateTenantBilling(tenantId, data)
订阅层级说明:
| 层级 | 价格 | 说明 |
|---|---|---|
| 免费版 (free) | $0/mo | 基础功能 |
| 专业版 (professional) | $1,800/mo | 适合中小企业 |
| 企业版 (enterprise) | $3,200/mo | 无限制 |
12. 更新租户状态 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户列表 → 操作菜单 → "暂停/启用" |
| 接口路径 | PUT /api/channel/tenants/{tenantId}/status |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | string | 是 | 状态:active/suspended |
请求示例:
{
"status": "suspended"
}
响应示例:
{
"success": true,
"message": "租户状态更新成功"
}
前端调用: TaijiAPIClient.updateTenantStatus(tenantId, status)
13. 更新租户权限 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 租户详情 → 权限设置 |
| 接口路径 | PUT /api/channel/tenants/{tenantId}/permissions |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| tenantId | string | 租户ID |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| permissions | array | 是 | 权限列表 |
请求示例:
{
"permissions": ["agent_create", "agent_deploy", "model_access"]
}
响应示例:
{
"success": true,
"message": "租户权限更新成功"
}
前端调用: TaijiAPIClient.updateTenantPermissions(tenantId, permissions)
资源管理模块
14. 平台Agent模板列表 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | "资源管理"标签页 → "平台Agent模板"区域 |
| 接口路径 | GET /api/channel/available-platform-agents |
| 后端文件 | services/mcp-server/app/routes/platform_agent_quota.py |
| 权限要求 | channel_admin |
响应示例:
{
"success": true,
"data": {
"templates": [
{
"name": "gpt-assistant",
"displayName": "GPT助手",
"description": "基于GPT的智能助手",
"status": "available",
"hasAccess": true,
"pendingApplication": false,
"cpuRequest": "100m",
"cpuLimit": "500m",
"memoryRequest": "128Mi",
"memoryLimit": "512Mi",
"podQuota": 10,
"podUsed": 2,
"podRemaining": 8
}
]
}
}
前端调用: TaijiAPIClient.getAvailablePlatformAgents()
15. 模型供应商列表 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | "资源管理"标签页 → "模型管理"区域 |
| 接口路径 | GET /api/channel/providers |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
响应示例:
{
"success": true,
"data": {
"providers": [
{
"id": "provider_001",
"name": "OpenAI",
"provider": "openai",
"hasAccess": true,
"pendingApplication": false,
"supportedModels": ["gpt-4", "gpt-3.5-turbo"],
"rpm": 1000,
"tpm": 100000
}
]
}
}
前端调用: TaijiAPIClient.getChannelProviders()
16. 申请平台Agent配额 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | Agent模板卡片 → "申请使用"/"申请更多配额"按钮 |
| 接口路径 | POST /api/channel/applications/platform-agents |
| 后端文件 | services/mcp-server/app/routes/platform_agent_quota.py |
| 权限要求 | channel_admin |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| templateName | string | 是 | Agent模板名称 |
| requestedPodQuota | int | 是 | 申请的Pod配额数量 |
| reason | string | 是 | 申请理由 |
请求示例:
{
"templateName": "gpt-assistant",
"requestedPodQuota": 10,
"reason": "业务扩展需要更多Agent实例"
}
响应示例:
{
"success": true,
"data": {
"applicationId": "app_001"
},
"message": "申请已提交,等待审批"
}
前端调用: TaijiAPIClient.applyForPlatformAgent(data)
17. 申请模型供应商使用权限 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 模型供应商卡片 → "申请使用"按钮 |
| 接口路径 | POST /api/channel/providers/apply |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| providerId | string | 是 | 供应商ID |
| requestedRpm | int | 否 | 申请的RPM配额 |
| requestedTpm | int | 否 | 申请的TPM配额 |
| reason | string | 是 | 申请理由 |
请求示例:
{
"providerId": "provider_001",
"requestedRpm": 500,
"requestedTpm": 50000,
"reason": "需要使用OpenAI模型服务"
}
响应示例:
{
"success": true,
"data": {
"applicationId": "app_002"
},
"message": "申请已提交,等待审批"
}
前端调用: TaijiAPIClient.applyForProvider(data)
计费模块
18. 租户计费统计 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | "计费"标签页 → "租户计费统计"区域 |
| 接口路径 | GET /api/channel/billing/stats |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| startTime | string | 是 | 开始时间(ISO 8601格式) |
| endTime | string | 是 | 结束时间(ISO 8601格式) |
| tenantName | string | 否 | 租户名称筛选 |
| minCalls | int | 否 | 最小调用次数 |
| maxCalls | int | 否 | 最大调用次数 |
| export | string | 否 | 导出格式:excel/csv/pdf |
请求示例:
GET /api/channel/billing/stats?startTime=2026-01-01T00:00:00Z&endTime=2026-01-31T23:59:59Z
响应示例:
{
"success": true,
"data": {
"tenantStats": [
{
"tenantId": "tenant_001",
"tenantName": "企业A",
"calls": 1500,
"totalEU": 150.5,
"totalCost": 450.00
}
],
"callRecords": [
{
"timestamp": "2026-01-15T10:30:00Z",
"tenantName": "企业A",
"agentType": "gpt-assistant",
"duration": 120,
"eu": 12.0,
"price": 36.00
}
]
}
}
前端调用: TaijiAPIClient.getChannelBillingStats(params)
默认范围: 最近30天
19. 时间范围查询 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | "计费"标签页 → "时间查询"按钮 |
| 接口路径 | GET /api/channel/billing/stats |
| 说明 | 通过 startTime 和 endTime 参数实现 |
20. 筛选功能 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | "计费"标签页 → "筛选"按钮 |
| 接口路径 | GET /api/channel/billing/stats |
| 说明 | 通过查询参数实现筛选 |
筛选条件:
- 客户名称(tenantName)
- 最小调用次数(minCalls)
- 最大调用次数(maxCalls)
21. 数据导出 ⚠️ 部分对接
| 属性 | 值 |
|---|---|
| 触发位置 | "计费"标签页 → "导出"按钮 |
| 接口路径 | GET /api/channel/billing/stats |
| 说明 | 通过 export 参数实现 |
支持格式:
- Excel (.xlsx)
- CSV (.csv)
- PDF (.pdf)
待完善: 后端需要支持生成并返回文件下载链接或文件流
设置模块
22. 管理员列表 ✅ 已对接
| 属性 | 值 |
|---|---|
| 展示位置 | "设置"标签页 → "当前管理员列表"区域 |
| 接口路径 | GET /api/channel/admins |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
响应示例:
{
"success": true,
"data": {
"admins": [
{
"id": "admin_001",
"name": "张三",
"email": "zhangsan@example.com",
"role": "channel_admin",
"status": "active"
},
{
"id": "admin_002",
"name": "李四",
"email": "lisi@example.com",
"role": "billing_admin",
"status": "active"
}
]
}
}
前端调用: TaijiAPIClient.getChannelAdmins()
23. 创建管理员 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | "设置"标签页 → "添加管理员"按钮 |
| 接口路径 | POST /api/channel/admins/create |
| 后端文件 | services/mcp-server/app/routes/channel.py |
| 权限要求 | channel_admin |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 管理员姓名 |
| string | 是 | 登录邮箱 | |
| password | string | 是 | 登录密码 |
| role | string | 是 | 角色:billing_admin/operations_admin |
请求示例:
{
"name": "王五",
"email": "wangwu@example.com",
"password": "SecurePass123",
"role": "billing_admin"
}
响应示例:
{
"success": true,
"data": {
"admin": {
"id": "admin_003",
"name": "王五",
"email": "wangwu@example.com",
"role": "billing_admin"
}
}
}
前端调用: TaijiAPIClient.createChannelAdmin(data)
24. 删除管理员 ✅ 已对接
| 属性 | 值 |
|---|---|
| 触发位置 | 管理员列表 → 删除按钮 |
| 接口路径 | DELETE /api/admin/admins/{adminId} |
| 后端文件 | services/mcp-server/app/routes/admin.py |
| 权限要求 | super_admin |
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| adminId | string | 管理员ID |
响应示例:
{
"success": true,
"message": "管理员删除成功"
}
前端调用: TaijiAPIClient.deleteAdmin(adminId)
注意: 此接口使用的是 /api/admin/admins/{adminId} 路径,需要 super_admin 权限。前端需求文档中标注为已对接,但实际上渠道管理员可能无法直接调用此接口,需要确认权限配置。
25. 配置角色权限 ❌ 待开发
| 属性 | 值 |
|---|---|
| 触发位置 | "设置"标签页 → 角色卡片 → "配置权限"按钮 |
| 建议接口 | PUT /api/channel/roles/{roleId}/permissions |
| 状态 | 后端接口不存在 |
功能描述: 设置不同角色可访问的功能模块
可配置模块:
- 概览(overview)
- 租户管理(tenants)
- 资源管理(resources)
- 计费(billing)
- 设置(settings)
默认角色权限:
| 角色 | 默认权限 |
|---|---|
| 计费管理员 | overview, tenants, billing |
| 运营管理员 | overview, tenants, resources |
当前实现: 权限配置仅在前端状态管理
建议请求参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| permissions | array | 权限列表(如 ["overview", "tenants", "billing"]) |
建议请求示例:
{
"permissions": ["overview", "tenants", "billing"]
}
接口汇总表
认证相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 1 | 登录 | POST | /api/auth/login |
✅ 已对接 | 用户登录 |
| 2 | 登出 | POST | /api/auth/logout |
✅ 已对接 | 用户登出 |
仪表板相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 3 | 渠道统计 | GET | /api/channel/tenants |
⚠️ 部分对接 | 当前从租户列表计算,建议新增聚合接口 |
| 4 | 平台Agent概览 | GET | /api/channel/available-platform-agents |
✅ 已对接 | 可用Agent模板 |
租户管理相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 5 | 获取租户列表 | GET | /api/channel/tenants |
✅ 已对接 | 获取渠道下所有租户 |
| 6 | 创建租户 | POST | /api/channel/tenants/create |
✅ 已对接 | 创建新租户 |
| 7 | 删除租户 | DELETE | /api/channel/tenants/{tenantId} |
✅ 已对接 | 删除租户 |
| 8 | 分配资源 | PUT | /api/channel/tenants/{tenantId}/resources |
✅ 已对接 | 分配Agent和模型资源 |
| 9 | 充值 | POST | /api/channel/tenants/{tenantId}/recharge |
✅ 已对接 | 为租户充值 |
| 10 | 设置授信 | PUT | /api/channel/tenants/{tenantId}/credit |
✅ 已对接 | 设置授信额度 |
| 11 | 更新计费 | PUT | /api/channel/tenants/{tenantId}/billing |
✅ 已对接 | 更新计费设置 |
| 12 | 更新状态 | PUT | /api/channel/tenants/{tenantId}/status |
✅ 已对接 | 更新租户状态 |
| 13 | 更新权限 | PUT | /api/channel/tenants/{tenantId}/permissions |
✅ 已对接 | 更新租户权限 |
资源管理相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 14 | 获取平台Agent | GET | /api/channel/available-platform-agents |
✅ 已对接 | 获取可用Agent模板 |
| 15 | 获取供应商列表 | GET | /api/channel/providers |
✅ 已对接 | 获取可用模型供应商 |
| 16 | 申请Agent配额 | POST | /api/channel/applications/platform-agents |
✅ 已对接 | 申请Agent配额 |
| 17 | 申请供应商 | POST | /api/channel/providers/apply |
✅ 已对接 | 申请使用供应商 |
计费统计相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 18 | 获取计费统计 | GET | /api/channel/billing/stats |
✅ 已对接 | 获取租户计费统计 |
| 19 | 时间范围查询 | GET | /api/channel/billing/stats |
✅ 已对接 | 通过参数实现 |
| 20 | 筛选功能 | GET | /api/channel/billing/stats |
✅ 已对接 | 通过参数实现 |
| 21 | 数据导出 | GET | /api/channel/billing/stats |
⚠️ 部分对接 | 需要后端支持文件生成 |
管理员管理相关接口
| 序号 | 接口 | 方法 | 路径 | 状态 | 说明 |
|---|---|---|---|---|---|
| 22 | 获取管理员列表 | GET | /api/channel/admins |
✅ 已对接 | 获取渠道管理员 |
| 23 | 创建管理员 | POST | /api/channel/admins/create |
✅ 已对接 | 创建管理员 |
| 24 | 删除管理员 | DELETE | /api/admin/admins/{adminId} |
✅ 已对接 | 删除管理员(需super_admin权限) |
| 25 | 配置角色权限 | PUT | /api/channel/roles/{roleId}/permissions |
❌ 待开发 | 配置角色权限 |
待完善功能清单
高优先级
| 序号 | 需求 | 说明 | 建议接口 |
|---|---|---|---|
| 1 | 渠道仪表板统计 | 需要专门的聚合接口返回月度收入、佣金等统计数据 | GET /api/channel/dashboard/stats |
| 2 | 数据导出功能 | 计费数据导出需要后端支持生成Excel/CSV/PDF文件 | 修改 /api/channel/billing/stats 支持文件流返回 |
中优先级
| 序号 | 需求 | 说明 | 建议接口 |
|---|---|---|---|
| 3 | 角色权限配置 | 当前权限配置仅在前端状态管理,需要后端接口持久化 | PUT /api/channel/roles/{roleId}/permissions |
| 4 | 权限验证 | 后端需要根据角色权限控制API访问 | 中间件实现 |
低优先级
| 序号 | 需求 | 说明 | 建议接口 |
|---|---|---|---|
| 5 | 删除管理员权限调整 | 当前使用admin接口,建议增加channel专用接口 | DELETE /api/channel/admins/{adminId} |
后端接口与前端需求对照表
以下是后端 channel.py 中已实现的所有接口与前端需求的对照:
| 后端接口 | 前端是否使用 | 说明 |
|---|---|---|
GET /api/channel/tenants |
✅ 使用 | 租户列表 |
POST /api/channel/tenants/create |
✅ 使用 | 创建租户 |
PUT /api/channel/tenants/{tenant_id}/resources |
✅ 使用 | 分配资源 |
PUT /api/channel/tenants/{tenant_id}/billing |
✅ 使用 | 管理计费 |
POST /api/channel/tenants/{tenant_id}/recharge |
✅ 使用 | 租户充值 |
PUT /api/channel/tenants/{tenant_id}/credit |
✅ 使用 | 设置授信 |
DELETE /api/channel/tenants/{tenant_id} |
✅ 使用 | 删除租户 |
PUT /api/channel/tenants/{tenant_id}/status |
✅ 使用 | 更新状态 |
PUT /api/channel/tenants/{tenant_id}/permissions |
✅ 使用 | 更新权限 |
PUT /api/channel/tenants/{tenant_id}/password |
❓ 未明确 | 重置密码(前端需求未提及) |
GET /api/channel/tenants/{tenant_id}/custom-agent-quota |
❓ 未明确 | 获取自定义Agent配额 |
POST /api/channel/admins/create |
✅ 使用 | 创建管理员 |
GET /api/channel/admins |
✅ 使用 | 管理员列表 |
POST /api/channel/resources/apply |
❓ 未明确 | 申请资源(前端可能使用其他接口) |
GET /api/channel/billing/stats |
✅ 使用 | 计费统计 |
GET /api/channel/providers |
✅ 使用 | 供应商列表 |
POST /api/channel/providers/apply |
✅ 使用 | 申请供应商 |
GET /api/channel/providers/applications |
✅ 使用 | 供应商申请列表 |
GET /api/channel/providers/access |
❓ 未明确 | 已授权供应商列表 |
GET /api/channel/available-platform-agents |
✅ 使用 | 平台Agent模板 |
POST /api/channel/applications/platform-agents |
✅ 使用 | 申请Agent配额 |
GET /api/channel/applications/platform-agents |
✅ 使用 | Agent申请列表 |
GET /api/channel/platform-agents |
❓ 未明确 | 渠道Agent配额 |
POST /api/channel/tenants/{tenant_id}/platform-agents |
❓ 未明确 | 分配Agent给租户 |
GET /api/channel/tenants/{tenant_id}/platform-agents/usage |
❓ 未明确 | 租户Agent使用情况 |
GET /api/channel/agent-billing/stats |
❓ 未明确 | Agent计费统计 |
GET /api/channel/agent-billing/history |
❓ 未明确 | Agent计费历史 |
GET /api/channel/agent-billing/tenant-summary |
❓ 未明确 | 租户Agent计费汇总 |
数据模型参考
租户数据结构
interface Tenant {
id: string
name: string
email: string
status: "active" | "suspended" | "inactive"
plan: "enterprise" | "professional" | "starter" | "free"
users: number
revenue: string // 如 "$3,200"
balance?: string
creditLimit?: string
createdAt?: string
}
Agent资源数据结构
interface AgentResource {
id: string
name: string
displayName?: string
description?: string
status: "available" | "unavailable" | "Running" | "Pending"
hasAccess: boolean
pendingApplication?: boolean
cpuRequest?: string // K8s格式,如 "100m"
cpuLimit?: string // K8s格式,如 "500m"
memoryRequest?: string // K8s格式,如 "128Mi"
memoryLimit?: string // K8s格式,如 "512Mi"
podQuota?: number
podUsed?: number
podRemaining?: number
}
模型供应商数据结构
interface ModelProvider {
id: string
name: string
provider?: string // openai, anthropic等
type?: string
hasAccess: boolean
pendingApplication?: boolean
supportedModels?: string[]
rpm: number
tpm: number
}
计费统计数据结构
interface BillingStats {
tenantStats: Array<{
tenantId: string
tenantName: string
calls: number
totalEU: number
totalCost: number
}>
callRecords: Array<{
timestamp: string
tenantName: string
agentType: string
duration: number // 秒
eu: number
price: number
}>
}
管理员数据结构
interface ChannelAdmin {
id: string
name: string
email: string
role: "channel_admin" | "billing_admin" | "operations_admin"
status?: "active" | "inactive"
}
错误码说明
| 错误码 | HTTP状态码 | 说明 |
|---|---|---|
| AUTH_FAILED | 401 | 认证失败 |
| TOKEN_EXPIRED | 401 | Token已过期 |
| PERMISSION_DENIED | 403 | 权限不足 |
| NOT_FOUND | 404 | 资源不存在 |
| VALIDATION_ERROR | 400 | 参数验证失败 |
| QUOTA_EXCEEDED | 400 | 配额超限 |
| DUPLICATE_ENTRY | 409 | 重复数据 |
| INTERNAL_ERROR | 500 | 服务器内部错误 |
前端源文件参考
| 文件路径 | 说明 |
|---|---|
app/channel/dashboard/page.tsx |
渠道仪表板主页面 |
app/channel/login/page.tsx |
渠道登录页面 |
app/channel/layout.tsx |
渠道布局组件 |
lib/api-client.ts |
API客户端封装 |
后端源文件参考
| 文件路径 | 说明 |
|---|---|
services/mcp-server/app/routes/auth.py |
认证模块 |
services/mcp-server/app/routes/channel.py |
渠道合作伙伴API |
services/mcp-server/app/routes/platform_agent_quota.py |
平台Agent配额管理 |
services/mcp-server/app/routes/admin.py |
超级管理员API |
文档生成时间: 2026-01-06 基于前端需求清单 v1.2.0 与后端API清单核实