Files
cpa-plugin/docs/modules/admin-console.md
T
2026-08-15 22:31:12 +08:00

6.8 KiB
Raw Blame History

管理台

模块定位

管理台是 billing 各业务模块的统一操作和查看入口。它不单独保存业务事实,而是通过 CLIProxyAPI 受保护的 Management API 读取或修改 SQLite 中的真实配置与记录。

当前管理台采用单页、紧凑布局,直接作为插件资源嵌入,不依赖 CDN、外部前端框架或独立构建服务。

页面结构

页面 主要用途
用户 Key 管理用户、访问策略、路由、额度和并发,查看用户汇总与账目
请求明细 分页查看请求结果、上游、Token、性能和成本,执行组合筛选
价格配置 维护本地价格,并搜索、导入和确认更新 models.dev 参考价格

页面顶部统一提供实时/测试模式切换和 CPA 管理密钥输入。

用户 Key 页面

页面顶部展示今日请求、今日 Token、今日成本、各用户今日用量以及近 7 日 Token 趋势。

Key 列表展示:

  • 用户名称和脱敏 Key
  • 启用、禁用或归档状态;
  • 当前余额和额度;
  • 活跃并发与并发上限;
  • 自动或严格上游路由;
  • 允许的模型规则。

管理员可以创建 Key、显示已归档项、刷新列表,并通过侧边抽屉完成以下操作:

  • 修改名称和状态;
  • 选择自动路由或指定上游账号;
  • 允许全部模型或填写逗号分隔的模型规则;
  • 设置额度、并发上限、重置周期和下一次重置时间;
  • 立即重置额度;
  • 查看最近计费账目;
  • 永久归档 Key
  • 查看该用户累计、今日和最近请求。

业务规则和拒绝条件分别由“用户与访问管理”“额度与计费”模块执行,管理台只负责提交和呈现。

请求明细页面

请求明细默认每页显示 100 条,页码、上一页、下一页、选择列和刷新操作位于同一顶部工具区。

当前筛选项包括:

  • 开始和结束时间;
  • 用户;
  • 模型;
  • 成功、失败、拒绝或取消;
  • 实际上游;
  • Responses、Compact 或 Chat 端点;
  • 完整 Request ID。

筛选和分页由服务端执行。应用新筛选会返回第一页;刷新保持当前页和筛选条件。只有页面可见、位于请求明细且处于第一页时,实时模式才每三秒自动刷新,避免用户查看历史页时列表自行跳动。

“选择列”用于控制明细表可见字段,不改变服务端保存的数据。

价格配置页面

价格页面采用左侧模型列表、右侧编辑区:

  • 新增或选择一个精确模型名称;
  • 设置输入、缓存读取、缓存写入和输出的基础价格;
  • 可选启用长上下文价格;
  • 设置长上下文输入门槛及“大于/大于等于”比较方式;
  • 可选启用 Fast 价格并设置倍率;
  • 保存或删除模型价格。
  • 手动更新 models.dev 供应商价格目录;
  • 按模型或供应商搜索参考价格,并导入到当前本地模型;
  • 查看价格是手动配置还是关联到具体 models.dev 供应商与模型;
  • 目录价格变化时先查看输入/输出差异,再确认是否更新本地价格。

价格单位统一显示为 $ / 1M Token。保存前由管理接口完成严格字段校验,页面不会自行推断缺失价格。

点击普通“保存价格”始终把该模型切换为手动配置。目录更新或下载失败不会改变本地价格,也不会影响用户请求。

实时模式

实时模式连接当前 CLIProxyAPI 实例:

  • 需要输入 CPA Management Key
  • 所有读取来自真实管理接口;
  • 创建、编辑、归档、重置和价格保存会修改真实数据;
  • 请求明细和汇总反映真实请求事实。

管理台资源本身可以被 CPA 加载,但敏感管理接口仍由 CLIProxyAPI 的管理认证保护。

测试模式

测试模式用于管理员熟悉页面和验证交互,与真实数据完全隔离:

  • 不需要管理密钥;
  • 不访问任何真实 billing 管理接口;
  • 使用浏览器本地的模拟 Key、上游、请求、价格和账目;
  • 使用浏览器本地的参考价格样例测试搜索和导入,不访问 models.dev;
  • 创建、编辑、归档、重置和删除只修改本地模拟状态;
  • 提供放大的请求记录量,便于测试分页、筛选和表格布局;
  • 可以一键恢复初始测试数据。

测试数据保存在浏览器本地存储中,当前选择的实时/测试模式保存在当前会话。切换模式不会把测试数据导入真实数据库,也不会用真实数据覆盖测试样例。

管理接口

管理接口统一挂载在:

/v0/management/plugins/billing
路径 方法 用途
/keys GET、POST、PATCH、DELETE 查询、创建、更新和归档 Key
/key-stats GET 查询单个 Key 的统计和最近请求
/upstreams GET 同步并查询 CPA 上游账号
/model-suggestions GET 查询已知模型名称建议
/billing-reset POST 立即重置指定 Key 的额度
/billing-ledger GET 查询指定 Key 的计费账目
/usage GET 查询分页请求明细
/usage-summary GET 查询今日、用户和每日汇总
/prices GET、PUT、DELETE 查询、保存和删除模型价格
/prices/import POST 将指定 models.dev 参考价格导入本地模型
/price-catalog GET 查看目录状态并搜索供应商级参考价格
/price-catalog/refresh POST 下载新目录并返回已关联价格差异,不修改本地价格
/price-catalog/apply POST 按目录 revision 确认应用选中的价格变化

管理台 HTML 由以下插件资源提供:

/v0/resource/plugins/billing/ui

管理接口返回结构化 JSON 和明确的 HTTP 状态码;未知路径返回 not_found,数据库不可用、请求字段错误等情况返回对应错误码和消息。

界面与数据原则

  • 管理台不直接操作 SQLite,只调用公开管理接口。
  • 统计卡片和图表使用服务端汇总,不从当前明细页推算。
  • 业务校验由服务端完成,前端校验只用于尽早提示。
  • 完整 Key 仅由受管理认证保护的 Key 接口返回;页面列表脱敏显示,点击后复制完整值。
  • 上游 Token、Cookie 和原始凭证不进入管理台。
  • 界面保持单个嵌入资源,避免运行时依赖外部 CDN。
  • 窄屏下表单和工具栏自动重排,明细表保留横向滚动能力。

模块边界

本模块负责:

  • 提供统一管理页面;
  • 调用并呈现 billing Management API
  • 管理实时和测试数据模式;
  • 提供紧凑、可筛选、可分页的操作界面。

本模块不负责:

  • 绕过 CLIProxyAPI 管理认证;
  • 在浏览器中直接执行业务扣费或访问控制;
  • 保存真实业务数据;
  • 提供普通用户自助页面;
  • 提供登录、角色和多管理员权限体系。