Skip to content

Latest commit

 

History

History
122 lines (99 loc) · 3.26 KB

File metadata and controls

122 lines (99 loc) · 3.26 KB

模型额度管理功能

功能说明

新增了模型额度查看功能,可以在前端管理界面查看每个 Token 对应的模型剩余额度和重置时间。

实现方案

数据存储

  • accounts.json: 保持简洁,只存储核心认证信息
  • data/quotas.json: 新建文件,专门存储额度信息(轻量级持久化)
  • 内存缓存: 5分钟缓存,避免频繁请求API
  • 自动清理: 每小时清理超过1小时未更新的数据

核心文件

  1. src/api/client.js

    • 新增 getModelsWithQuotas(token) 函数
    • 从 API 响应中提取 quotaInfo 字段
    • 返回简化的额度数据结构
  2. src/auth/quota_manager.js (新建)

    • 额度缓存管理
    • 文件持久化
    • UTC 时间转北京时间
    • 自动清理过期数据
  3. src/routes/admin.js

    • 新增 GET /admin/tokens/:refreshToken/quotas 接口
    • 支持按需获取指定 Token 的额度信息
  4. public/app.js

    • 新增 toggleQuota() 函数:展开/收起额度面板
    • 新增 loadQuota() 函数:从API加载额度数据
    • 新增 renderQuota() 函数:渲染进度条和额度信息
  5. public/style.css

    • 新增额度展示相关样式
    • 进度条样式(支持颜色渐变:绿色>50%,黄色20-50%,红色<20%)

使用方法

前端操作

  1. 登录管理界面
  2. 在 Token 卡片中点击 "📊 查看额度" 按钮
  3. 系统会自动加载该 Token 的所有模型额度信息
  4. 以进度条形式展示:
    • 模型名称
    • 剩余额度百分比(带颜色标识)
    • 额度重置时间(北京时间)

数据格式

API 响应示例

{
  "success": true,
  "data": {
    "lastUpdated": 1765109350660,
    "models": {
      "gemini-2.0-flash-exp": {
        "remaining": 0.972,
        "resetTime": "01-07 15:27",
        "resetTimeRaw": "2025-01-07T07:27:44Z"
      },
      "gemini-1.5-pro": {
        "remaining": 0.85,
        "resetTime": "01-07 16:15",
        "resetTimeRaw": "2025-01-07T08:15:30Z"
      }
    }
  }
}

quotas.json 存储格式

{
  "meta": {
    "lastCleanup": 1765109350660,
    "ttl": 3600000
  },
  "quotas": {
    "1//0eDtvmkC_KgZv": {
      "lastUpdated": 1765109350660,
      "models": {
        "gemini-2.0-flash-exp": {
          "r": 0.972,
          "t": "2025-01-07T07:27:44Z"
        }
      }
    }
  }
}

特性

按需加载: 只在用户点击时才获取额度信息
智能缓存: 5分钟内重复查看使用缓存,减少API请求
自动清理: 定期清理过期数据,保持文件轻量
可视化展示: 进度条直观显示剩余额度
颜色标识: 绿色(>50%)、黄色(20-50%)、红色(<20%)
时间转换: 自动将UTC时间转换为北京时间
轻量存储: 使用字段缩写,只存储有变化的模型

注意事项

  1. 首次查看额度时需要调用 Google API,可能需要几秒钟
  2. 额度信息会缓存5分钟,如需最新数据请等待缓存过期后重新查看
  3. quotas.json 文件会自动创建,无需手动配置
  4. 如果 Token 过期或无效,会显示错误提示

测试

启动服务后:

npm start

访问管理界面,点击任意 Token 的"查看额度"按钮即可测试功能。