{{t('nav.nodes')}}
供货中心节点网关
服务节点
{{nodes.length}} 个节点| 节点 | 地址 | {{t('common.status')}} | 账号 | 请求 | 命中概率 | 最近请求 | 健康检查 | {{t('common.actions')}} |
|---|---|---|---|---|---|---|---|---|
{{n.name}} {{n.id}} |
{{n.base_url}} | {{n.status || 'unknown'}} 熔断至 {{fmtTime(n.cooldown_until)}} |
{{n.available_account_count}} / {{n.account_count}} 权重 {{fmtCapacityWeight(n.capacity_weight)}} |
{{n.inflight_requests}} active {{n.active_streams}} streams |
{{fmtHitProbability(n.hit_probability)}}
流式 {{fmtHitProbability(n.stream_hit_probability)}}
|
{{fmtTimeSeconds(n.last_request_at)}} | {{fmtTime(n.last_health_at)}} {{n.last_error || '-'}} |
|
| {{t('common.empty')}} | ||||||||
聚合账号
| 节点 | 账号 | 邮箱 | 合作伙伴 | {{t('common.status')}} | 额度 | 刷新时间 | 最近请求 | {{t('common.actions')}} |
|---|---|---|---|---|---|---|---|---|
{{a.node_name || '-'}} {{a.node_id}} |
{{a.name || '-'}} {{a.account_id}} |
{{a.email || '-'}} | {{a.partner_label || '-'}} {{a.supplier_email}} |
{{a.need_reauth ? 'need_reauth' : (a.disabled ? 'disabled' : (a.status||'active'))}} |
5h {{fmtPct(a.primary_used_pct)}} 重置 {{fmtTime(a.primary_resets_at)}}
周 {{fmtPct(a.secondary_used_pct)}} 重置 {{fmtTime(a.secondary_resets_at)}}
|
{{fmtTime(a.rate_limit_updated_at)}} | {{fmtTime(a.last_request_at)}} | |
| {{t('common.empty')}} | ||||||||
最近告警
| 时间 | 级别 | 类型 | 节点 | 消息 |
|---|---|---|---|---|
| {{fmtTime(e.created_at)}} | {{e.level}} | {{e.type}} | {{e.node_id}} | {{e.message}} |
| {{t('common.empty')}} | ||||
{{t('suppliers.title')}}
{{t('suppliers.list')}}
| {{t('accounts.reauthAccountLabel')}} | {{t('suppliers.payment')}} | {{t('common.status')}} | {{t('common.actions')}} | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{{s.email || s.name || '-'}}
|
{{displayPaymentMethod(s.payment_method)}}
{{s.payment_name || t('suppliers.paymentNameMissing')}}
{{s.payment_info || t('suppliers.paymentAccountMissing')}}
|
{{supplierStatusLabel(s.status)}} | ||||||||||||||||||||||
|
||||||||||||||||||||||||
| {{t('common.empty')}} | ||||||||||||||||||||||||
{{t('suppliers.codexList')}}
| {{t('accounts.billingModel')}} | {{t('accounts.billingInput')}}{{t('accounts.billingPer')}} | {{t('accounts.billingCached')}}{{t('accounts.billingPer')}} | {{t('accounts.billingOutput')}}{{t('accounts.billingPer')}} |
|---|---|---|---|
| GPT-5.5 {{t('accounts.billingCredit')}} | 125 credits | 12.50 credits | 750 credits |
| GPT-5.5 {{t('accounts.billingMetered')}} | US$5.00 | US$0.50 | US$30.00 |
| {{t('accounts.nameId')}} | {{t('accounts.status')}} | {{t('accounts.plan')}} | {{t('accounts.quotaRemain')}} 5h / {{t('accounts.winWeek')}} |
{{t('accounts.creditUsage')}} 5h / {{t('accounts.win7d')}} |
{{t('accounts.cost')}} 5h / {{t('accounts.win7d')}} |
{{t('accounts.resetTime')}} 5h / {{t('accounts.winWeek')}} |
{{t('accounts.email')}} | {{t('suppliers.owner')}} | {{t('accounts.bill')}} | {{t('accounts.concurrencyRpm')}} | {{t('accounts.limit')}} 5h / {{t('accounts.winWeek')}} |
{{t('accounts.health')}} | {{t('accounts.lastRequest')}} | {{t('accounts.createdAt')}} | {{t('accounts.actions')}} |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{{a.Name||'-'}}
{{(a.ID||'').slice(0,8)}}…
{{a.RemoteNodeName || a.RemoteNodeID || '聚合节点'}}
|
{{displayStatusText(a)}}{{t('accounts.reauthDetailBtn')}} |
{{a.PlanType||'-'}}
{{fmtPlanExpire(a.PlanExpiresAt)}}
|
{{fmtRemain(a.PrimaryUsedPct, a.PrimaryWindowMins)}}
{{fmtRemain(a.SecondaryUsedPct, a.SecondaryWindowMins)}}
|
{{fmtAccCredit(a, 'h5')}}
{{fmtAccCredit(a, 'd7')}}
|
{{fmtAccCost(a, 'h5')}}
{{fmtAccCost(a, 'd7')}}
{{ expandedCost[a.ID] ? '收起' : '明细' }}
5h 输入 {{accUsageDetail(a,'h5').nonCached}} · 缓存 {{accUsageDetail(a,'h5').cached}} · 输出 {{accUsageDetail(a,'h5').output}}
7天 输入 {{accUsageDetail(a,'d7').nonCached}} · 缓存 {{accUsageDetail(a,'d7').cached}} · 输出 {{accUsageDetail(a,'d7').output}}
|
{{fmtTime(a.PrimaryResetsAt)}}
{{fmtTime(a.SecondaryResetsAt)}}
刷新: {{fmtTime(a.RateLimitUpdatedAt)}}
|
{{a.Email||'-'}} | {{ownerLabelForAccount(a)}} | {{t('accounts.noBill')}} | {{a.MaxConcurrency}}/{{a.MaxRPM}} |
{{ effCycleLimit(a) }}%{{ isCycleLimitGlobal(a) ? ' (全局)' : '' }} [{{ cycleLimitRange(a) }}]
{{ effWeeklyLimit(a) }}%{{ isWeeklyLimitGlobal(a) ? ' (全局)' : '' }} [{{ weeklyLimitRange(a) }}]
|
{{a.Remote ? '-' : (a.HealthScore||0).toFixed(2)}} | {{fmtTime(a.LastRequestAt)}} | {{fmtTime(a.CreatedAt)}} | |
| {{t('accounts.empty')}} | |||||||||||||||
模拟对话测试
API Key
申请测试 API Key
无需选择套餐或支付,输入名称即可获取用于模拟测试的永久 API Key。
已有 API Key 列表
| 名称 | API Key | 操作 |
|---|---|---|
| {{k.name}} | {{k.api_key}} | |
| 暂无数据 | ||
{{t('suppliers.planRevenue')}}
| {{t('suppliers.planType')}} | {{t('suppliers.dailyAmount')}} | {{t('suppliers.enabled')}} |
|---|---|---|
| {{planLabel(r.plan_type)}} | {{t('suppliers.amountUnit')}} | |
| {{t('common.empty')}} | ||
{{t('suppliers.revenueHint')}}
{{t('system.title')}}
{{t('adminUsers.title')}}
{{t('adminUsers.tip')}}
| {{t('adminUsers.email')}} | {{t('adminUsers.userId')}} | {{t('adminUsers.bindStatus')}} | {{t('adminUsers.note')}} | {{t('common.actions')}} |
|---|---|---|---|---|
| {{u.email}} | {{u.user_id||'-'}} | {{u.user_id ? t('adminUsers.bound') : t('adminUsers.pending')}} | {{u.note||'-'}} | |
| {{t('common.empty')}} | ||||
{{t('alerts.title')}}
{{t('alerts.tip')}}
| {{t('alerts.name')}} | {{t('alerts.cycleType')}} | {{t('alerts.threshold')}} | {{t('alerts.level')}} | {{t('alerts.webhook')}} | {{t('alerts.enabled')}} | {{t('common.actions')}} |
|---|---|---|---|---|---|---|
| {{r.name}} | {{alertCycleLabel(r.cycle_type)}} | {{alertThresholdLabel(r)}} | {{alertLevelLabel(r.level)}} | {{(r.webhook_url||'').slice(0,28)}}… | {{r.enabled ? t('common.enable') : t('common.disable')}} | |
| {{t('common.empty')}} | ||||||
{{t('audit.title')}}
| {{t('audit.time')}} | {{t('audit.action')}} | {{t('audit.supplier')}} | {{t('audit.account')}} | {{t('audit.accountId')}} | {{t('audit.operator')}} | {{t('audit.detail')}} |
|---|---|---|---|---|---|---|
| {{fmtTimeFull(log.created_at)}} | {{auditActionLabel(log.action)}} | {{ log.owner_type==='admin' ? t('suppliers.adminOwned') : (log.supplier_name || log.owner_user_id || '-') }} | {{log.account_name || '-'}} | {{log.account_id || '-'}} | {{log.operator || '-'}} | {{log.detail || '-'}} |
| {{t('audit.empty')}} | ||||||
用量历史与小时趋势
每小时 Token / Credit 用量曲线
支持全局总统计、单个 API Key 统计,并可按模型筛选。
每小时请求次数
请求量单独展示,避免和 token / credit 双轴混在一起造成误读。
历史查询
| 账号 | 状态 | 周期类型 | 开始时间(本地) | 结束时间(本地) | 使用 Credit | 输入 Token | 缓存 Token | 输出 Token | 使用百分比 | 套餐 (倍数) | 周期总 Credit 估算 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{accountName(h.AccountID)}} | 进行中 已结束 | {{h.CycleType==='5h' ? '5h 短周期' : (h.CycleType==='week' ? '周 长周期' : h.CycleType)}} | {{fmtTime(h.StartAt)}} | {{fmtTime(h.EndAt)}}{{h.InProgress ? '(预计)' : ''}} | {{(Number(h.Credits)||0).toFixed(3)}} | {{(Number(h.InputTokens)||0).toLocaleString()}} | {{(Number(h.CachedTokens)||0).toLocaleString()}} | {{(Number(h.OutputTokens)||0).toLocaleString()}} | {{(Number(h.UsedPct)||0).toFixed(1)}}% | {{h.PlanType||'-'}} ×{{planMultiplier(h.PlanType)}} | {{estCycleCredits(h)!==null ? estCycleCredits(h).toFixed(3) : '-'}} |
| 暂无数据 | |||||||||||
估算公式:周期总 Credit ≈ 使用 Credit ÷ (使用百分比 / 100),为周期内消耗的总量,不再按套餐倍数换算;“套餐 (倍数)”列标注该账号套餐及其计费倍数(prolite = 5,pro = 20,其余 = 1)仅供参考;“进行中”为当前未结束周期的实时值,结束时间为预计重置时间。
错误记录
最近 7 天错误
| 时间(本地) | 账号 | 邮箱 | 方式 | 模型 | 阶段 | 错误类型 | 重试 | 错误信息 |
|---|---|---|---|---|---|---|---|---|
| {{fmtTime(e.CreatedAt)}} | {{accountName(e.AccountID)}} | {{e.Email||'-'}} | {{errMethodText(e.Method)}} | {{e.Model||'-'}} | {{errPhaseText(e.Phase)}} | {{errTypeText(e.ErrorType)}} | {{e.Attempt}} | {{e.ErrorMessage||'-'}} |
| 暂无数据 | ||||||||
错误记录仅保留最近 7 天,过期自动清理。阶段:before-first-byte(首字节前,可换账号重试,客户端通常无感)/ after-first-byte(首字节后,已吐内容无法重试)。
{{t('accounts.mineTitle')}}
{{t('register.title')}}
{{ (mySupplier && mySupplier.registered) ? t('register.registered') : t('register.notRegistered') }}{{t('register.firstName')}} / {{t('register.lastName')}}:{{mySupplier.first_name||'-'}} {{mySupplier.last_name||''}}
{{t('register.country')}}:{{countryDisplay(mySupplier.country)||'-'}}
{{t('register.contactEmail')}}:{{mySupplier.contact_email||'-'}}
{{t('register.paymentMethod')}}:{{displayPaymentMethod(mySupplier.payment_method)}}
{{t('register.paymentName')}}:{{mySupplier.payment_name||'-'}}
{{t('register.paymentInfo')}}:{{mySupplier.payment_info||'-'}}
{{t('register.desc')}}
| {{t('accounts.nameId')}} | {{t('accounts.status')}} | {{t('suppliers.planType')}} | {{t('accounts.bill')}} | {{t('accounts.createdAt')}} | {{t('accounts.quotaRemain')}} 5h / {{t('accounts.winWeek')}} |
{{t('common.actions')}} |
|---|---|---|---|---|---|---|
|
{{v.account ? (v.account.Name || '-') : '-'}}
{{v.supplier_account.account_id}}
|
{{displayStatusText(v.account)}} {{t('accounts.reauthDetailBtn')}} - | {{planLabel(v.supplier_account.plan_type || (v.account && v.account.PlanType))}} | {{t('accounts.noBill')}} | {{v.account ? fmtTime(v.account.CreatedAt) : '-'}} |
5h: {{v.account ? fmtRemain(v.account.PrimaryUsedPct, v.account.PrimaryWindowMins) : '-'}}
{{t('accounts.winWeek')}}: {{v.account ? fmtRemain(v.account.SecondaryUsedPct, v.account.SecondaryWindowMins) : '-'}}
刷新: {{v.account ? fmtTime(v.account.RateLimitUpdatedAt) : '-'}}
|
|
| {{t('common.empty')}} | ||||||
{{t('audit.mineTitle')}}
| {{t('audit.time')}} | {{t('audit.action')}} | {{t('audit.account')}} | {{t('audit.accountId')}} | {{t('audit.detail')}} |
|---|---|---|---|---|
| {{fmtTimeFull(log.created_at)}} | {{auditActionLabel(log.action)}} | {{log.account_name || '-'}} | {{log.account_id || '-'}} | {{log.detail || '-'}} |
| {{t('audit.empty')}} | ||||