mirror of
https://github.com/Fasthei/taiji-pda-v0.git
synced 2026-09-26 19:11:54 +00:00
fix: 修复最近登录租户功能的数据加载逻辑
- 优化数据加载逻辑,优先使用 data.recentTenants 字段 - 兼容 data.tenants 字段(向后兼容) - 支持直接数组格式 - 移除调试日志,保持代码整洁 测试验证:后端API返回正确的租户登录记录
This commit is contained in:
@@ -627,8 +627,12 @@ export default function AdminDashboard() {
|
||||
// 加载最近登录的租户列表
|
||||
try {
|
||||
const recentLoginsData = await TaijiAPIClient.getRecentLogins(10)
|
||||
if (recentLoginsData?.success && recentLoginsData.data?.recentTenants) {
|
||||
|
||||
if (recentLoginsData?.success && recentLoginsData.data?.recentTenants && Array.isArray(recentLoginsData.data.recentTenants)) {
|
||||
setRecentLogins(recentLoginsData.data.recentTenants)
|
||||
} else if (recentLoginsData?.success && recentLoginsData.data?.tenants && Array.isArray(recentLoginsData.data.tenants)) {
|
||||
// 兼容:后端返回的字段是 tenants 而不是 recentTenants
|
||||
setRecentLogins(recentLoginsData.data.tenants)
|
||||
} else if (Array.isArray(recentLoginsData?.data)) {
|
||||
setRecentLogins(recentLoginsData.data)
|
||||
} else {
|
||||
@@ -1483,24 +1487,6 @@ export default function AdminDashboard() {
|
||||
{tenant.email} · {tenant.channelName || (language === "zh" ? "直属" : "Direct")}
|
||||
</p>
|
||||
</div>
|
||||
<div className="text-right">
|
||||
<div className="flex items-center gap-2 mb-1">
|
||||
<Clock className="h-3 w-3 text-muted-foreground" />
|
||||
<span className="text-sm text-muted-foreground">
|
||||
{language === "zh" ? "最后登录" : "Last Login"}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xs text-foreground font-medium">
|
||||
{tenant.lastLoginAt
|
||||
? new Date(tenant.lastLoginAt).toLocaleString(language === "zh" ? "zh-CN" : "en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
hour: "2-digit",
|
||||
minute: "2-digit"
|
||||
})
|
||||
: (language === "zh" ? "从未登录" : "Never")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="ml-4">
|
||||
@@ -2238,7 +2224,7 @@ export default function AdminDashboard() {
|
||||
<h4 className="text-base font-semibold text-foreground mb-4">
|
||||
{language === "zh" ? "资源配置" : "Resource Configuration"}
|
||||
</h4>
|
||||
<div className="grid grid-cols-3 gap-4">
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div className="bg-muted/50 rounded-lg p-4 text-center">
|
||||
<p className="text-3xl font-bold text-primary mb-2">{selectedChannel?.cpuCores || 0}</p>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
@@ -2251,12 +2237,6 @@ export default function AdminDashboard() {
|
||||
{language === "zh" ? "内存" : "Memory"}
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-muted/50 rounded-lg p-4 text-center">
|
||||
<p className="text-3xl font-bold text-primary mb-2">{selectedChannel?.storage || "0GB"}</p>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
{language === "zh" ? "存储空间" : "Storage"}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
# 管理平台(Super Admin Console)业务功能规范
|
||||
|
||||
> 本文档描述管理平台的业务功能要求,用于后端设计核对和功能完善。
|
||||
|
||||
## 1. 业务概述
|
||||
|
||||
管理平台是面向**超级管理员**的多租户SaaS平台管理控制台,主要业务目标:
|
||||
- 管理分销渠道的准入、配额与资源分配
|
||||
- 监控平台整体运营健康状况
|
||||
- 提供精细化的计费管理与财务分析
|
||||
- 维护平台的核心资源(AI模型、Agent、计算资源)
|
||||
- 处理渠道与租户的业务审批流程
|
||||
|
||||
## 2. 核心业务实体
|
||||
|
||||
### 2.1 渠道(Channel)
|
||||
- **定义**:分销商/合作伙伴,拥有独立的租户组合管理权限
|
||||
- **核心属性**:渠道名称、联系信息、佣金比例、授信额度、状态
|
||||
- **业务关系**:一个渠道可管理多个租户
|
||||
|
||||
### 2.2 租户(Tenant)
|
||||
- **定义**:最终用户,通过渠道获得平台服务
|
||||
- **核心属性**:租户名称、归属渠道、权限范围、使用配额、计费信息
|
||||
- **业务关系**:归属于特定渠道,使用渠道分配的资源
|
||||
|
||||
### 2.3 Agent
|
||||
- **定义**:AI智能体实例,提供具体的AI服务能力
|
||||
- **核心属性**:类型、计算资源配置(CPU/内存)、健康状态、性能指标
|
||||
- **业务关系**:可被分配给渠道,再由渠道分配给租户使用
|
||||
|
||||
### 2.4 模型供应商(Provider)
|
||||
- **定义**:上游AI模型服务提供商
|
||||
- **核心属性**:供应商名称、API配置、支持模型、调用限制(RPM/TPM)
|
||||
- **业务关系**:可授权给特定渠道使用
|
||||
|
||||
## 3. 业务功能模块
|
||||
|
||||
### 3.1 平台概览与监控
|
||||
|
||||
#### 3.1.1 运营概览
|
||||
**业务需求**:提供平台整体运营状况的实时概览
|
||||
- 统计数据:渠道总数、租户总数、总收入
|
||||
- 系统资源:CPU/内存/磁盘使用率、活跃Agent数量
|
||||
- 租户动态:最新注册/活跃租户列表,支持搜索和快速操作
|
||||
|
||||
**后端要求**:
|
||||
- 提供实时/准实时的汇总统计接口
|
||||
- 支持系统资源监控数据采集
|
||||
- 租户列表支持分页、搜索、状态筛选
|
||||
|
||||
#### 3.1.2 资源分配概览
|
||||
**业务需求**:展示平台计算资源的分配使用情况
|
||||
- 展示总体CPU/内存分配情况
|
||||
- Agent资源分配统计
|
||||
- 资源利用率分析
|
||||
|
||||
**后端要求**:
|
||||
- 实时计算资源分配统计
|
||||
- 支持按Agent类型、渠道等维度聚合
|
||||
|
||||
### 3.2 渠道管理
|
||||
|
||||
#### 3.2.1 渠道生命周期管理
|
||||
**业务需求**:管理渠道从准入到运营的完整生命周期
|
||||
- 渠道注册:创建渠道账户,设置基本信息和佣金政策
|
||||
- 渠道状态管理:激活、暂停、禁用等状态转换
|
||||
- 渠道信息维护:联系信息、佣金比例等基础数据管理
|
||||
|
||||
**后端要求**:
|
||||
- 渠道基础信息CRUD
|
||||
- 渠道状态流转控制
|
||||
- 渠道唯一性约束(名称、邮箱等)
|
||||
|
||||
#### 3.2.2 渠道资源分配
|
||||
**业务需求**:为渠道分配可用的平台资源
|
||||
- 模型供应商授权:控制渠道可使用哪些AI模型
|
||||
- Agent配额分配:设定渠道可分配给租户的Agent数量和类型
|
||||
- 计算资源配置:设定自定义Agent的默认CPU/内存配置
|
||||
- 授信管理:设置渠道的信用额度上限
|
||||
|
||||
**后端要求**:
|
||||
- 资源分配关系管理(多对多关系)
|
||||
- 配额检查和使用量统计
|
||||
- 支持资源池管理和动态调整
|
||||
|
||||
#### 3.2.3 渠道租户管理
|
||||
**业务需求**:支持渠道对其下属租户的管理
|
||||
- 租户创建:渠道为最终用户创建租户账户
|
||||
- 权限分配:为租户设置功能权限(仪表板、Agent管理、模型配置等)
|
||||
- 租户状态管理:激活、禁用、删除等操作
|
||||
- 密码管理:支持租户密码重置
|
||||
|
||||
**后端要求**:
|
||||
- 租户归属关系维护
|
||||
- 细粒度权限控制系统
|
||||
- 租户状态流转日志
|
||||
- 密码安全管理
|
||||
|
||||
### 3.3 审批流程管理
|
||||
|
||||
#### 3.3.1 供应商接入审批
|
||||
**业务需求**:管理渠道申请使用新供应商的审批流程
|
||||
- 申请提交:渠道提交供应商使用申请
|
||||
- 申请审核:超管审批渠道的供应商接入请求
|
||||
- 授权管理:批准后建立渠道-供应商授权关系
|
||||
|
||||
**后端要求**:
|
||||
- 审批工作流引擎
|
||||
- 申请状态跟踪
|
||||
- 审批历史记录
|
||||
- 授权关系自动建立
|
||||
|
||||
#### 3.3.2 Agent资源审批
|
||||
**业务需求**:管理渠道申请额外Agent资源的审批流程
|
||||
- 资源申请:渠道申请特定类型和数量的Agent
|
||||
- 需求评估:超管评估申请的合理性
|
||||
- 资源分配:批准后自动分配Agent资源
|
||||
|
||||
**后端要求**:
|
||||
- 申请模板和流程定义
|
||||
- 资源可用性检查
|
||||
- 自动资源分配机制
|
||||
|
||||
### 3.4 资源管理
|
||||
|
||||
#### 3.4.1 Agent计算资源管理
|
||||
**业务需求**:管理Agent实例的计算资源配置
|
||||
- Agent资源配置:为每个Agent设置CPU、内存、实例数
|
||||
- 资源利用监控:实时监控Agent资源使用情况
|
||||
- 弹性伸缩:根据负载动态调整Agent实例数
|
||||
|
||||
**后端要求**:
|
||||
- Agent实例管理
|
||||
- 资源配置持久化
|
||||
- 实时监控数据采集
|
||||
- 自动伸缩策略支持
|
||||
|
||||
#### 3.4.2 供应商管理
|
||||
**业务需求**:管理上游AI模型供应商的接入和配置
|
||||
- 供应商注册:添加新的模型供应商
|
||||
- 连接配置:设置API端点、密钥、调用限制等
|
||||
- 健康检查:监控供应商服务可用性和延迟
|
||||
- 供应商下线:安全移除不再使用的供应商
|
||||
|
||||
**后端要求**:
|
||||
- 供应商配置管理
|
||||
- API连接池管理
|
||||
- 健康检查调度
|
||||
- 依赖关系检查(删除前)
|
||||
|
||||
### 3.5 监控告警
|
||||
|
||||
#### 3.5.1 Agent健康监控
|
||||
**业务需求**:实时监控所有Agent实例的健康状态
|
||||
- 健康状态评估:基于CPU、内存、响应时间等指标评估Agent健康度
|
||||
- 性能监控:监控响应时间、请求量、错误率等关键指标
|
||||
- 异常告警:当Agent出现异常时及时告警
|
||||
|
||||
**后端要求**:
|
||||
- Agent指标采集系统
|
||||
- 健康度评估算法
|
||||
- 实时告警机制
|
||||
- 监控数据存储和查询
|
||||
|
||||
### 3.6 计费管理
|
||||
|
||||
#### 3.6.1 多维度计费统计
|
||||
**业务需求**:提供多个维度的计费数据统计和分析
|
||||
- 渠道维度:按渠道统计调用量、消费金额、EU使用量
|
||||
- 租户维度:按租户统计使用量和费用,支持跨渠道分析
|
||||
- 调用明细:详细的API调用记录,包含时长、费用、时间戳等
|
||||
|
||||
**后端要求**:
|
||||
- 实时计费数据统计
|
||||
- 多维度数据聚合
|
||||
- 计费规则引擎(EU到费用的转换)
|
||||
- 大数据量查询优化
|
||||
|
||||
#### 3.6.2 财务分析与导出
|
||||
**业务需求**:支持财务数据的分析和导出
|
||||
- 时间范围查询:支持自定义时间段的计费查询
|
||||
- 数据筛选:按客户名称、调用次数等条件筛选
|
||||
- 多格式导出:支持Excel、CSV、PDF等格式的数据导出
|
||||
|
||||
**后端要求**:
|
||||
- 灵活的查询接口设计
|
||||
- 异步导出任务处理
|
||||
- 文件生成和下载服务
|
||||
- 数据权限控制
|
||||
|
||||
### 3.7 权限与用户管理
|
||||
|
||||
#### 3.7.1 管理员账户管理
|
||||
**业务需求**:管理平台的各类管理员账户
|
||||
- 系统管理员:管理计费管理员、运营管理员等
|
||||
- 渠道管理员:查看各渠道的管理员信息
|
||||
- 角色权限:为不同角色配置可访问的功能模块
|
||||
|
||||
**后端要求**:
|
||||
- 分层级的用户管理体系
|
||||
- 基于角色的访问控制(RBAC)
|
||||
- 管理员操作审计日志
|
||||
- 密码安全策略
|
||||
|
||||
#### 3.7.2 角色权限配置
|
||||
**业务需求**:灵活配置不同角色的系统权限
|
||||
- 权限模板:预定义的角色权限模板
|
||||
- 自定义权限:支持为特定角色定制权限范围
|
||||
- 权限继承:支持权限的层级继承关系
|
||||
|
||||
**后端要求**:
|
||||
- 细粒度权限控制系统
|
||||
- 权限配置的持久化存储
|
||||
- 实时权限生效机制
|
||||
- 权限变更历史记录
|
||||
|
||||
## 4. 数据要求
|
||||
|
||||
### 4.1 实时性要求
|
||||
- **高实时性**(秒级):系统监控数据、Agent健康状态
|
||||
- **准实时**(分钟级):运营统计数据、资源使用情况
|
||||
- **批处理**(小时/日级):计费统计、财务报表
|
||||
|
||||
### 4.2 数据一致性要求
|
||||
- **强一致性**:计费数据、资源分配、权限管理
|
||||
- **最终一致性**:监控数据、统计数据
|
||||
- **幂等性**:所有状态变更操作需支持幂等
|
||||
|
||||
### 4.3 数据存储要求
|
||||
- **冷热分离**:近期数据热存储,历史数据归档
|
||||
- **备份恢复**:关键业务数据需要定期备份
|
||||
- **审计追踪**:重要操作需要完整的审计日志
|
||||
|
||||
## 5. 安全要求
|
||||
|
||||
### 5.1 身份认证
|
||||
- 支持多种认证方式(用户名密码、Token等)
|
||||
- 会话管理和超时控制
|
||||
- 多设备登录控制
|
||||
|
||||
### 5.2 操作授权
|
||||
- 基于角色的细粒度权限控制
|
||||
- 资源级别的访问控制
|
||||
- 操作审计和日志记录
|
||||
|
||||
### 5.3 数据安全
|
||||
- 敏感数据加密存储
|
||||
- API调用加密传输
|
||||
- 数据脱敏和隐私保护
|
||||
|
||||
## 6. 性能要求
|
||||
|
||||
### 6.1 响应时间
|
||||
- 页面加载时间 < 2秒
|
||||
- 查询接口响应 < 500ms
|
||||
- 统计数据接口 < 1秒
|
||||
|
||||
### 6.2 并发处理
|
||||
- 支持100+管理员并发访问
|
||||
- 支持1000+渠道数据管理
|
||||
- 支持10000+租户数据查询
|
||||
|
||||
### 6.3 数据处理能力
|
||||
- 支持TB级别的计费数据查询
|
||||
- 支持千万级别的调用记录检索
|
||||
- 支持实时流式数据处理
|
||||
@@ -0,0 +1,242 @@
|
||||
# 管理平台(Super Admin Console)功能盘点
|
||||
|
||||
页面地址:`/admin/dashboard`
|
||||
对应实现:`app/admin/dashboard/page.tsx`
|
||||
|
||||
> 本文仅整理“前端实际展示的功能与交互”。部分按钮/表单在当前实现中可能仅有 UI(例如某些“保存/查询”只打印日志或未真正发起请求),文中会标注。
|
||||
|
||||
## 0. 全局/通用能力
|
||||
|
||||
- 登录态校验与跳转:页面加载时检查 `localStorage.admin_token`,没有则跳转到 `/admin/login`。
|
||||
- 语言切换:右上角语言选择(中/英),影响页面文案。
|
||||
- 退出登录:调用 `TaijiAPIClient.logout()`,并清理本地 token(`admin_token/auth_token/channel_token/refresh_token` 等),跳转到 `/admin/login`。
|
||||
- 顶部导航 Tab:共 6 个(概览 / 渠道 / 资源 / 监控 / 计费 / 设置)。
|
||||
|
||||
## 1. 概览(Overview)
|
||||
|
||||
### 1.1 平台关键统计卡片
|
||||
- 展示内容:
|
||||
- 渠道总数(Total Channels)
|
||||
- 租户总数(Total Tenants)
|
||||
- 总收入(Total Revenue)
|
||||
- 作用:快速了解平台规模与收入概况。
|
||||
- 数据来源:`TaijiAPIClient.getAdminDashboardStats()`。
|
||||
|
||||
### 1.2 系统指标(System Metrics)
|
||||
- 展示内容:CPU 使用率、内存使用率、磁盘使用率、活跃 Agents(以进度条展示)。
|
||||
- 作用:查看平台整体资源压力与服务活跃度。
|
||||
- 数据来源:`TaijiAPIClient.getMonitoringMetrics()`。
|
||||
|
||||
### 1.3 最近租户列表(Recent Tenants)
|
||||
- 展示内容:租户卡片列表(名称、套餐/Plan、月收入、Usage%、状态),每行支持“更多”菜单(查看详情 / 编辑 / 暂停)。
|
||||
- 作用:快速查看租户概况与后续管理入口。
|
||||
- 备注:
|
||||
- 列表顶部的搜索框目前仅为 UI(未见实际筛选逻辑)。
|
||||
- “更多菜单”选项目前未绑定具体后端动作(看起来是占位)。
|
||||
- 数据来源:`TaijiAPIClient.getAdminTenants()`。
|
||||
|
||||
### 1.4 平台资源分配统计(CPU/Memory)
|
||||
- 展示内容:汇总已分配 CPU 核数、已分配内存(GB),以及 Agent 数量/平均值。
|
||||
- 作用:从平台维度快速评估 Agent 资源分配情况。
|
||||
- 计算方式:由 `agentResources` 列表累加得到。
|
||||
- 数据来源:`TaijiAPIClient.getAdminAgentResources()`。
|
||||
|
||||
## 2. 渠道(Channels)
|
||||
|
||||
### 2.1 渠道列表与状态概览
|
||||
- 展示内容:渠道卡片列表(渠道名、状态、联系人/邮箱、租户数、月收入、佣金比例)。
|
||||
- 作用:查看渠道基本盘与关键经营指标。
|
||||
- 备注:列表顶部“搜索渠道”输入框目前仅为 UI(未见实际筛选逻辑)。
|
||||
- 数据来源:`TaijiAPIClient.getAdminChannels()`。
|
||||
|
||||
### 2.2 添加渠道
|
||||
- 入口:右上角“添加渠道”按钮。
|
||||
- 表单字段:渠道名称、联系邮箱、密码、佣金比例。
|
||||
- 作用:创建新的渠道账户。
|
||||
- 数据来源/接口:`TaijiAPIClient.createAdminChannel(...)`;成功后会 `loadDashboardData()` 刷新列表。
|
||||
|
||||
### 2.3 渠道操作菜单(每个渠道卡片右侧)
|
||||
|
||||
#### 2.3.1 查看渠道详情
|
||||
- 入口:菜单“查看详情”。
|
||||
- 展示内容:
|
||||
- 基本信息:名称、状态、邮箱、创建日期等
|
||||
- 资源配置:CPU/内存/存储(展示)
|
||||
- 配额信息:租户总数、授信额度、已用授信、剩余授信(展示)
|
||||
- 作用:在一个弹窗中快速查看渠道经营/资源/授信摘要。
|
||||
|
||||
#### 2.3.2 编辑渠道信息
|
||||
- 入口:菜单“编辑”。
|
||||
- 功能:
|
||||
- 编辑渠道基本信息(名称、联系人、邮箱、电话)。
|
||||
- 管理渠道管理员列表(展示管理员并支持删除)。
|
||||
- 作用:维护渠道档案与其管理员账号。
|
||||
- 数据来源/接口:
|
||||
- 保存渠道信息:通过 `handleSaveChannelEdit`(内部使用 `fetch` 调用后端,见 `page.tsx` 中相关实现)。
|
||||
- 删除管理员:`handleRemoveAdmin(admin.id)`(内部 `fetch`/API 调用,见实现)。
|
||||
|
||||
#### 2.3.3 查看租户(渠道租户管理)
|
||||
- 入口:菜单“查看租户”。
|
||||
- 展示内容:渠道下租户列表(含权限 tags、状态、创建时间等)。
|
||||
- 支持动作:
|
||||
- 添加租户(打开“添加新租户”对话框)
|
||||
- 管理权限(多选权限项并保存)
|
||||
- 修改密码
|
||||
- 禁用租户
|
||||
- 删除租户
|
||||
- 作用:以渠道为维度管理其租户账户生命周期与授权。
|
||||
- 数据来源/接口(按功能):
|
||||
- 加载渠道租户:`fetch(`${API_BASE_URLS.mcpServer}/api/channel/tenants`, ...)` 等(具体见实现)。
|
||||
- 创建租户:`TaijiAPIClient.createChannelTenant(...)`(或相关 API)。
|
||||
- 修改租户权限:`fetch(.../api/channel/tenants/{tenantId}/permissions)`。
|
||||
- 修改租户密码:`TaijiAPIClient.changeTenantPassword(tenantId, newPassword)`。
|
||||
- 禁用租户:`fetch(.../api/channel/tenants/{tenantId}/status)`。
|
||||
- 删除租户:对应 `handleDeleteTenant` 内的 API 调用(见实现)。
|
||||
|
||||
#### 2.3.4 修改佣金
|
||||
- 入口:菜单“修改佣金”。
|
||||
- 作用:为渠道设置佣金比例(UI 提供输入与保存)。
|
||||
- 备注:当前 `handleSaveCommission()` 实际调用的是 `TaijiAPIClient.manageChannelResources(...{ channelCredit })`,看起来并未真正提交 `commissionRate`,可能是后端字段对齐/实现未完成导致的占位。
|
||||
|
||||
#### 2.3.5 管理授权(供应商访问权限)
|
||||
- 入口:菜单“管理授权”。
|
||||
- 展示内容:该渠道已获得的供应商授权列表(供应商名、类型、RPM/TPM、授权时间、状态)。
|
||||
- 支持动作:撤销授权(对 active 状态)。
|
||||
- 作用:控制渠道可以使用哪些上游供应商(模型/服务)的能力。
|
||||
- 数据来源/接口:
|
||||
- 查询授权:`TaijiAPIClient.getChannelProviderAccess({ channelId })`
|
||||
- 撤销授权:`TaijiAPIClient.revokeChannelProviderAccess(access.id)`
|
||||
|
||||
#### 2.3.6 资源管理(渠道维度:模型/Agent/授信/自定义Agent默认资源)
|
||||
- 入口:菜单“资源管理”。
|
||||
- 功能点:
|
||||
- 选择该渠道可用的模型供应商(checkbox 列表)
|
||||
- 选择该渠道可分配给租户的 Agent,并设置数量(Quantity)
|
||||
- 设置“自定义 Agent”默认 CPU/内存
|
||||
- 设置渠道授信额度(Credit Limit)
|
||||
- “资源配置摘要”汇总展示
|
||||
- 作用:按渠道维度进行配额与可用资源的能力封装。
|
||||
- 数据来源/接口:
|
||||
- 读取当前渠道资源:`fetch(`${API_BASE_URLS.mcpServer}/api/admin/channels/${channel.id}/resources`, ...)`
|
||||
- 保存:`TaijiAPIClient.manageChannelResources(channelId, payload)`(由 `handleSaveResourceManagement` 执行)。
|
||||
|
||||
### 2.4 渠道申请审批
|
||||
|
||||
#### 2.4.1 供应商申请审批(Provider Application Approvals)
|
||||
- 展示内容:渠道对供应商/模型的申请列表(渠道、供应商、期望模型、提交时间、状态)。
|
||||
- 支持动作:审批(打开详情弹窗),可“批准/拒绝”。
|
||||
- 作用:平台侧把控渠道接入上游供应商的门槛。
|
||||
- 数据来源/接口:
|
||||
- 加载申请:`TaijiAPIClient.getAdminApplications()` 并按 `type === "provider"` 过滤
|
||||
- 审批:`TaijiAPIClient.reviewApplication(applicationId, approved, reason)`
|
||||
|
||||
#### 2.4.2 Agent 申请审批(Agent Application Approvals)
|
||||
- 展示内容:渠道对 Agent 数量/类型的申请列表。
|
||||
- 支持动作:审批(打开详情弹窗),可“批准/拒绝”。
|
||||
- 作用:平台侧控制 Agent 资源发放。
|
||||
- 数据来源/接口:同上(`getAdminApplications()` 过滤 `type === "agent"`,审批用 `reviewApplication`)。
|
||||
|
||||
## 3. 资源(Resources)
|
||||
|
||||
> 该 Tab 聚焦于平台资源本身(Agent 资源、供应商资源),而不是“渠道维度的资源分配”。
|
||||
|
||||
### 3.1 Agent 计算资源分配(Agent Compute Resource Allocation)
|
||||
- 展示内容:Agent 资源卡片列表(名称、状态、CPU/内存、CPU/内存使用率)。
|
||||
- 支持动作:
|
||||
- 配置:打开“Agent资源配置”弹窗(CPU/内存/可用实例数)
|
||||
- 删除:删除该 Agent 资源
|
||||
- 作用:平台侧维护每个 Agent 的计算资源配置(以及可用实例数的设定入口)。
|
||||
- 备注:
|
||||
- “保存配置”按钮当前仅关闭弹窗,未见实际调用后端保存(可能是 UI 占位)。
|
||||
- 数据来源/接口:
|
||||
- 加载:`TaijiAPIClient.getAdminAgentResources()`
|
||||
- 删除:`TaijiAPIClient.deleteAgentResource(agent.id)`
|
||||
|
||||
### 3.2 货源供应商管理(Goods Source / Model Providers)
|
||||
- 展示内容:模型供应商卡片列表(状态、支持模型数量、RPM/TPM)。
|
||||
- 支持动作:
|
||||
- 添加模型供应商(打开新增弹窗)
|
||||
- 配置(编辑供应商信息)
|
||||
- 测试延迟(连接测试)
|
||||
- 删除供应商
|
||||
- 作用:平台侧管理上游模型供应商的接入信息、配额与健康检查。
|
||||
- 数据来源/接口:
|
||||
- 列表:优先 `TaijiAPIClient.getModelProviders()`;失败则使用 `TaijiAPIClient.getAdminModelProviders()` 的结果兜底。
|
||||
- 新增:`TaijiAPIClient.createModelProvider(...)`(由 `handleSaveProvider` 在“新增”路径触发)
|
||||
- 更新:`TaijiAPIClient.updateProvider(providerId, payload)`(由 `handleSaveProvider` 在“编辑”路径触发)
|
||||
- 连接测试:`TaijiAPIClient.testProviderConnection(providerId)`
|
||||
- 删除:`TaijiAPIClient.deleteProvider(providerId)`
|
||||
|
||||
## 4. 监控(Monitoring)
|
||||
|
||||
### 4.1 Agent 健康监控(Agent Health Monitoring)
|
||||
- 展示内容:Agent 健康卡片(健康/警告/严重)、CPU/内存使用率进度条、响应时间、请求数、错误率、运行时长、最后活跃时间。
|
||||
- 作用:快速定位异常 Agent 与性能风险。
|
||||
- 数据来源/接口:`TaijiAPIClient.getAdminAgentMonitoring()`。
|
||||
|
||||
## 5. 计费(Billing)
|
||||
|
||||
### 5.1 顶部操作:时间查询 / 筛选 / 导出
|
||||
- 时间查询:弹窗输入起止时间(datetime-local),点击“查询”。
|
||||
- 备注:当前仅 UI,未见与后端联动的查询逻辑。
|
||||
- 筛选:弹窗输入客户名、最小/最大调用次数。
|
||||
- 备注:当前仅 UI,未见实际筛选逻辑。
|
||||
- 导出:点击后自动以“最近 30 天”为时间范围,调用导出接口并打开下载链接。
|
||||
- 接口:`TaijiAPIClient.getAdminBillingOverview({ startTime, endTime, export: "excel" })`
|
||||
- 行为:若返回 `fileUrl`,则 `window.open(fileUrl)`。
|
||||
|
||||
### 5.2 计费维度切换
|
||||
- 维度:渠道维度 / 租户维度 / 调用记录。
|
||||
- 作用:从不同管理视角查看平台计费消耗。
|
||||
|
||||
### 5.3 渠道维度计费(Channel Dimension)
|
||||
- 展示内容:
|
||||
- 汇总卡片:渠道总数、总计费额、总 EU 消耗
|
||||
- 明细表:每渠道的调用次数、总 EU、渠道总价
|
||||
- 作用:评估各渠道的计费贡献与资源消耗。
|
||||
- 数据来源:`billingData.channelStats`(由页面内部计费加载逻辑填充;导出接口也会返回相关数据/文件)。
|
||||
|
||||
### 5.4 租户维度计费(Tenant Dimension)
|
||||
- 展示内容:
|
||||
- 汇总卡片:租户总数、用户总价、平均消费
|
||||
- 明细表:每租户的渠道归属、调用次数、总 EU、用户总价
|
||||
- 作用:评估租户级别成本与消费结构。
|
||||
- 数据来源:`billingData.tenantStats`。
|
||||
|
||||
### 5.5 调用记录(Call Records)
|
||||
- 展示内容:调用记录明细表(调用ID/租户/渠道/时长/EU/价格/时间戳等)。
|
||||
- 作用:提供更细粒度的计费审计视角。
|
||||
- 备注:当前表格使用的是前端静态示例数据(并非后端真实数据)。
|
||||
|
||||
## 6. 设置(Settings)
|
||||
|
||||
### 6.1 管理员列表管理(SettingsTab 组件)
|
||||
- 展示内容:
|
||||
- 系统管理员管理:管理员列表(姓名/邮箱/角色/状态/创建时间),支持创建管理员、删除管理员。
|
||||
- 渠道管理员查看:按渠道分组展示渠道管理员列表(可折叠展开)。
|
||||
- 作用:统一维护平台管理员与渠道管理员信息。
|
||||
- 数据来源/接口(见 `app/admin/dashboard/components/SettingsTab.tsx`):
|
||||
- 获取管理员列表:`TaijiAPIClient.getAdmins()`
|
||||
- 创建管理员:`TaijiAPIClient.createAdmin(...)`(在组件内实现)
|
||||
- 删除管理员:`TaijiAPIClient.deleteAdmin(adminId)`(在组件内实现)
|
||||
- 获取渠道列表:`TaijiAPIClient.getAdminChannels()`
|
||||
- 获取每个渠道管理员:`fetch(`${API_BASE_URLS.mcpServer}/api/admin/channels/${channelId}/admins`)`
|
||||
|
||||
### 6.2 角色权限配置(Role Permission Configuration)
|
||||
- 展示内容:三种角色卡片(计费管理员/运营管理员/超级管理员),选择角色后可在下方勾选可访问的 Tab(概览/渠道/资源/监控/计费/供应商后台/渠道后台/设置)。
|
||||
- 作用:提供“角色 → 可访问标签页” 的配置入口,用于权限治理。
|
||||
- 备注:当前“保存权限配置”仅 `console.log`,未见持久化到后端。
|
||||
|
||||
---
|
||||
|
||||
## 附:页面加载的数据清单(loadDashboardData)
|
||||
|
||||
页面首次加载会并行/串行拉取以下数据,并填充到对应 Tab:
|
||||
- 统计:`getAdminDashboardStats()` → 概览统计卡片
|
||||
- 系统指标:`getMonitoringMetrics()` → 概览系统指标
|
||||
- 渠道:`getAdminChannels()` → 渠道 Tab
|
||||
- 申请:`getAdminApplications()` → 渠道 Tab(供应商/Agent 审批列表)
|
||||
- Agent 监控:`getAdminAgentMonitoring()` → 监控 Tab
|
||||
- 模型供应商:`getAdminModelProviders()` + `getModelProviders()` → 资源 Tab + 渠道资源管理弹窗
|
||||
- Agent 资源:`getAdminAgentResources()` → 资源 Tab + 概览资源统计 + 渠道资源管理弹窗
|
||||
- 租户:`getAdminTenants()` → 概览最近租户列表
|
||||
Reference in New Issue
Block a user