feat: Codex 提供商批量刷新限额功能 (#147)

- 后端 (keys.py):新增 POST /providers/{provider_id}/refresh-quota API,向 Codex 提供商的所有活跃 Key 发送测试请求,从响应头解析限额信息并更新数据库
- 前端 (ProviderDetailDrawer.vue):在 Codex 类型提供商的密钥管理区域添加"刷新限额"按钮,带加载动画和结果提示
- 前端 API (keys.ts):新增 refreshProviderQuota 接口调用及 RefreshQuotaResult 类型定义
- 其他:description 字段允许 null,公开 ensure_collectors_registered 函数
This commit is contained in:
AAEE86
2026-02-05 18:09:14 +08:00
committed by GitHub
parent 5b9ba06af6
commit 93090e227f
5 changed files with 276 additions and 11 deletions

View File

@@ -144,3 +144,31 @@ export async function updateProviderKey(
const response = await client.put(`/api/admin/endpoints/keys/${keyId}`, data)
return response.data
}
/**
* 刷新 Provider 的所有 Key 限额信息Codex
*/
export interface RefreshQuotaResult {
success: number
failed: number
total: number
results: Array<{
key_id: string
key_name: string
status: 'success' | 'no_metadata' | 'error'
metadata?: {
plan_type?: string
primary_used_percent?: number
primary_reset_seconds?: number
secondary_used_percent?: number
secondary_reset_seconds?: number
}
message?: string
status_code?: number
}>
}
export async function refreshProviderQuota(providerId: string): Promise<RefreshQuotaResult> {
const response = await client.post(`/api/admin/endpoints/providers/${providerId}/refresh-quota`)
return response.data
}

View File

@@ -25,7 +25,7 @@ export async function updateProvider(
data: Partial<{
name: string
provider_type: 'custom' | 'claude_code' | 'codex' | 'gemini_cli' | 'antigravity'
description: string
description: string | null
website: string
provider_priority: number
billing_type: 'monthly_quota' | 'pay_as_you_go' | 'free_tier'