Files
Aether/docs/api/provider-health-summary.md
T

54 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 提供商管理的端点健康度
以下管理接口使用相同的健康度汇总规则:
- `GET /api/admin/providers/summary`
- `GET /api/admin/providers/{provider_id}/summary`
## 统计规则
沿用 `v0.7.13`(`535ee098c`)的默认健康规则:已启用密钥缺少该格式的健康记录时,
按 `1.0` 参与统计,而不是要求先有一次请求或探测才能显示健康。
- 仅统计启用端点下、支持该端点 API 格式的启用密钥。
- 每个密钥读取其 `health_by_format[api_format].health_score`,不跨格式借用分数。
- 对上述启用密钥求算术平均;缺少有效分数的密钥沿用旧版默认值 `1.0`。
- 分数范围为 `0` 到 `1`,沿用调度器的分数读取与范围约束。
- 停用端点或没有启用密钥时,端点的 `health_score` 返回 `null`。
- `avg_health_score` 仅平均有启用密钥的启用端点,包含按默认值计算的端点;没有此类端点时返回 `null`。
- `unhealthy_endpoints` 仅统计上述端点中健康度低于 `0.5` 的数量,不把未知状态算作故障。
`total_keys` 和 `active_keys` 仍反映密钥配置数量,不因缺少健康数据而减少。
Codex、Kiro、Gemini CLI、Antigravity 等固定提供商的账号按照各提供商的认证规则,
继承其启用端点的 API 格式;账号的 `api_formats` 为 `null` 或空数组,不代表没有配置账号。
继承格式决定账号归属;缺少对应格式的分数时同样使用默认值 `1.0`,不借用其他格式的异常分数。
## 数据读取
摘要从密钥的轻量投影读取 API 格式、启用状态和 `health_by_format`。
PostgreSQL 投影中的凭据字段使用 `summary` / `{}` 等脱敏占位值,并非真实密文,
因此摘要读取不执行凭据解密、认证或迁移。完整密钥读取仍保留原有的凭据安全校验。
若将这些占位值送入凭据校验,读取会失败,旧的摘要聚合还会将其当作空密钥列表,
导致已配置密钥的端点也被错误显示为灰色。默认健康分数只能用于成功读取的启用密钥,
不能用于掩盖查询或凭据投影错误。
提供商、端点或密钥摘要查询失败时,接口返回 `503`,不能将失败当作空列表并返回零账号。
单个提供商确实不存在时仍返回 `404`。页面刷新失败保留已有列表,并显示加载错误。
## 页面展示
桌面表格、网格卡片和手机卡片使用相同规则:
- 有健康数据时显示百分比;有效的零分显示 `0%`。
- 有启用密钥、但这些密钥尚无该格式的健康记录时,显示绿色 `100%`,与 `v0.7.13` 一致。
- 端点停用、未配置密钥或没有启用密钥时显示灰色占位条和对应状态提示。
账号详情保留原有默认 `100%` 的规则。已有观测仍取各格式最低分;端点分数则只聚合对应格式,
两者统计范围不同,不要求百分比完全相等。调度器原有的缺省健康策略不变。
此分数是密钥当前健康状态的聚合,包含默认健康值,不是某个时间窗口内的请求成功率,
也不表示已经执行过主动探测。相比 `v0.7.13`,仍保留停用账号/端点不参与健康聚合、
凭据脱敏与查询失败显式报错等修复,不整体回退旧版代码。