Files
cpa-plugin/docs/modules/admin-console.md
T

7.1 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。保存前由管理接口完成严格字段校验,页面不会自行推断缺失价格。

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

匿名只读模式

直接打开资源 URL 且不填写管理密钥时,页面读取当前 CLIProxyAPI 实例的真实数据:

  • 可以查看汇总、请求明细和已配置价格;完整用户 Key 管理表不展示;
  • 可以执行分页、筛选、刷新和选择显示列;
  • Key 只由服务端返回 00******0000 形式的脱敏值,不能复制完整 Key
  • 历史 Usage 中可能存在的旧 api_key 值在匿名响应中统一清空;
  • 创建、管理、保存、删除、归档、重置、目录更新和参考价导入入口不显示。

匿名读取使用单独的 GET-only 插件资源,不复用受保护的完整 Key 接口,也不提供任何修改方法。

管理模式

输入有效 CPA Management Key 后,页面切换到受保护的 Management API

  • 读取完整管理数据,脱敏 Key 可以点击复制完整值;
  • 显示创建、管理、归档、额度重置、价格保存和目录更新等操作;
  • 所有修改仍由 CLIProxyAPI 管理认证和 billing 服务端规则校验;
  • 密钥无效时回退匿名只读数据,不额外显示状态标签。

管理接口

管理接口统一挂载在:

/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 复用同一个 GET-only 页面资源,页面通过 view 查询参数选择数据:

/v0/resource/plugins/billing/ui?view=keys

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

界面与数据原则

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

模块边界

本模块负责:

  • 提供统一管理页面;
  • 调用并呈现 billing Management API
  • 提供匿名只读和密钥管理两种访问状态;
  • 提供紧凑、可筛选、可分页的操作界面。

本模块不负责:

  • 允许匿名调用任何修改接口;
  • 在浏览器中直接执行业务扣费或访问控制;
  • 保存真实业务数据;
  • 提供普通用户自助修改能力;
  • 提供登录、角色和多管理员权限体系。