新增了模型额度查看功能,可以在前端管理界面查看每个 Token 对应的模型剩余额度和重置时间。
- accounts.json: 保持简洁,只存储核心认证信息
- data/quotas.json: 新建文件,专门存储额度信息(轻量级持久化)
- 内存缓存: 5分钟缓存,避免频繁请求API
- 自动清理: 每小时清理超过1小时未更新的数据
-
src/api/client.js
- 新增
getModelsWithQuotas(token)函数 - 从 API 响应中提取
quotaInfo字段 - 返回简化的额度数据结构
- 新增
-
src/auth/quota_manager.js (新建)
- 额度缓存管理
- 文件持久化
- UTC 时间转北京时间
- 自动清理过期数据
-
src/routes/admin.js
- 新增
GET /admin/tokens/:refreshToken/quotas接口 - 支持按需获取指定 Token 的额度信息
- 新增
-
public/app.js
- 新增
toggleQuota()函数:展开/收起额度面板 - 新增
loadQuota()函数:从API加载额度数据 - 新增
renderQuota()函数:渲染进度条和额度信息
- 新增
-
public/style.css
- 新增额度展示相关样式
- 进度条样式(支持颜色渐变:绿色>50%,黄色20-50%,红色<20%)
- 登录管理界面
- 在 Token 卡片中点击 "📊 查看额度" 按钮
- 系统会自动加载该 Token 的所有模型额度信息
- 以进度条形式展示:
- 模型名称
- 剩余额度百分比(带颜色标识)
- 额度重置时间(北京时间)
{
"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"
}
}
}
}{
"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时间转换为北京时间
✅ 轻量存储: 使用字段缩写,只存储有变化的模型
- 首次查看额度时需要调用 Google API,可能需要几秒钟
- 额度信息会缓存5分钟,如需最新数据请等待缓存过期后重新查看
- quotas.json 文件会自动创建,无需手动配置
- 如果 Token 过期或无效,会显示错误提示
启动服务后:
npm start访问管理界面,点击任意 Token 的"查看额度"按钮即可测试功能。