mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
feat(admin,pool,billing): 端点级模型测试、Provider 自动置顶、缓存 TTL 分级计费展示与账号状态增强
- 模型测试支持指定端点:新增 ModelTestDialog 组件,多端点时弹窗选择,单端点直接测试; 后端 test-model-failover 接口新增 endpoint_id 参数,支持 global/direct 模式下按端点过滤候选 - 创建 Provider 时优先级自动置顶(provider_priority 默认 None,后端取 min-1), 显式指定优先级时 shift 已有行;前端创建时不发送 priority,更新时保留 - 缓存计费 UI 增强:RequestDetailDrawer 支持 5min/1h 缓存创建 token 分级展示, 含按 TTL 匹配单价和分行成本计算;ModelDetailDrawer/ModelsTab 标签区分 5min/1h 缓存创建 - Pool 批量操作额度筛选拆分为「无5H限额」和「无周限额」,按 | 分隔 segment 匹配 - KeyFormDialog 优化非 vertex_ai 时布局,API 密钥输入内联到 grid 右列 - Codex refresher 结构化错误标记:401/402/403 使用 [OAUTH_EXPIRED]/[ACCOUNT_BLOCK] 前缀, 新增 deactivated_workspace 识别与分类 - 前后端 accountBlock 关键词同步:新增 token invalidated、deactivated_workspace 识别, OAuth 失效提示清理 block 前缀后展示 - PoolConfig 新增 batch_concurrency 配置(默认 8,上限 32) - 预设模型新增 gpt-5.4;TestResultDialog 响应式布局与 key 脱敏优化
This commit is contained in:
@@ -21,11 +21,18 @@ const KEYWORDS_DISABLED = [
|
||||
'account deactivated',
|
||||
'organization has been disabled',
|
||||
'organization_disabled',
|
||||
'deactivated_workspace',
|
||||
'deactivated',
|
||||
'访问被禁止',
|
||||
'账户访问被禁止',
|
||||
]
|
||||
|
||||
const KEYWORDS_TOKEN_INVALID = [
|
||||
'authentication token has been invalidated',
|
||||
'token has been invalidated',
|
||||
'codex token 无效或已过期',
|
||||
]
|
||||
|
||||
// 需要验证类
|
||||
const KEYWORDS_VERIFICATION = [
|
||||
'validation_required',
|
||||
@@ -36,6 +43,7 @@ const KEYWORDS_VERIFICATION = [
|
||||
const ACCOUNT_BLOCK_REASON_KEYWORDS = [
|
||||
...KEYWORDS_SUSPENDED,
|
||||
...KEYWORDS_DISABLED,
|
||||
...KEYWORDS_TOKEN_INVALID,
|
||||
...KEYWORDS_VERIFICATION,
|
||||
]
|
||||
|
||||
@@ -52,7 +60,9 @@ export function isAccountLevelBlockReason(reason: string | null | undefined): bo
|
||||
export function classifyAccountBlockLabel(reason: string): string {
|
||||
if (reason.trim().startsWith('[OAUTH_EXPIRED]')) return 'Token 失效'
|
||||
const lowered = reason.toLowerCase()
|
||||
if (KEYWORDS_TOKEN_INVALID.some(kw => lowered.includes(kw))) return 'Token 失效'
|
||||
if (KEYWORDS_VERIFICATION.some(kw => lowered.includes(kw))) return '需要验证'
|
||||
if (lowered.includes('deactivated_workspace')) return '工作区停用'
|
||||
if (KEYWORDS_DISABLED.some(kw => lowered.includes(kw))) return '账号停用'
|
||||
if (KEYWORDS_SUSPENDED.some(kw => lowered.includes(kw))) return '账号封禁'
|
||||
return '账号异常'
|
||||
|
||||
Reference in New Issue
Block a user