Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
46 lines
4.0 KiB
Markdown
46 lines
4.0 KiB
Markdown
# Token 路由与 Astra 逐次结算(custom.18)
|
||
|
||
## 路由配置
|
||
|
||
API 密钥编辑页使用一个分组池;数字越小越优先,相同数字轮询。模型规则精确匹配原始请求模型名,规则分组先于默认池内其余分组;不支持的分组会按用户当前权限过滤。
|
||
|
||
- `custom`:自定义池与模型规则。
|
||
- `inherit`:跟随用户可用的全局 Auto 分组。
|
||
- `user`:跟随用户当前所属分组。
|
||
- “Astra 优先 preferred-group”只是快捷预设;仅在池内已有 `preferred-group` 或本站的 `example-preferred` 时可用,不会自动加入分组或覆盖已有 Astra 规则。
|
||
- 服务端路由预览只计算顺序,不调用上游、不计费。渠道可用性与会话绑定仍会影响实际选择。
|
||
- 成功会话绑定按用户、Token、原始模型和会话隔离;新会话按模型规则选择,已有成功绑定优先。失败清除绑定后不会重新采用同一历史日志绑定。
|
||
|
||
启动时,主节点迁移所有未删除的存量 Token,保留旧配置的有效顺序/并列优先级与继承模式,不注入任何模型规则。重复启动不会覆盖新策略。Token 缓存使用新版本命名空间,避免旧缓存绕过策略迁移。
|
||
|
||
## Astra 守卫与计费
|
||
|
||
仅针对 HTTP `POST /v1/responses` 且原始模型严格为 `gpt-6-astra`:
|
||
|
||
- 守卫开启、明确返回错误模型、尚未交付客户端时,可以切换至未试过的渠道,总上游尝试最多 3 次(不受普通 RetryTimes=1 的两次限制)。
|
||
- 缺失模型、确认超时不触发这个特殊重试;固定渠道、取消请求、已交付响应、`previous_response_id` 或上游 `conversation` 不进行该重放。
|
||
- 每个候选渠道自己的守卫开关仍有效。确认阶段共享默认 300 秒预算,而不是每次重新开始。
|
||
- 每次实际消耗独立按请求的 Astra 价格和当次实际分组倍率结算。错误返回 Luna 的已消耗尝试也计费;最终成功只代表最后一次交付成功,不代表前面的尝试免费。
|
||
- 被拒绝的响应不向客户端交付,后台最多收集 60 秒 usage。实际 usage(含缓存命中)优先;缺失 usage 时按实际准备发送的输入及观察到的输出估算,不虚构缓存命中。
|
||
- 除明确模型不匹配外,其他守卫失败只有在观察到实际 usage/输出时收费;纯超时、无输出无 usage 的尝试退回预扣。
|
||
- 保留 custom.17 对 `stream=false` 上游返回 SSE 的兼容处理。
|
||
|
||
## 账本与日志
|
||
|
||
`relay_attempts` 保存预扣、检查点、结算状态与日志 outbox,不保存提示词、输出正文或上游密钥。钱包/订阅、Token、用户、渠道和开启导出的看板统计在同一事务结算。唯一 attempt key 防止重复扣费/重复日志;SQLite 写冲突重试的是整个已回滚事务。
|
||
|
||
失效预扣由恢复任务每 5 秒扫描;活跃请求续租,进程中断后通常最多等待 10 分钟租约过期,再按最后持久化的 usage 检查点结算或退款。独立日志库恢复后可重放 outbox,不重复财务扣款。
|
||
|
||
用量日志的路由尝试面板显示请求/返回模型、实际分组、费用依据、缓存用量、估算标记和结算状态。面板的合计是各次已结算费用之和,不是再次收费。普通用户只能访问自己的记录,渠道 ID 仅管理员可见。
|
||
|
||
## 验证范围
|
||
|
||
- SQLite、MySQL 8.4、PostgreSQL 18.6:新库、存量升级、重复迁移、幂等结算、订阅、日志 outbox。
|
||
- SQLite 并发预扣/结算压力回归;钱包、Token 与渠道统计一致。
|
||
- 真实候选 HTTP:两错一对、三次都错、流式切换、固定渠道、previous_response_id、守卫关闭、缺失模型无消耗、缺失 usage 估算、交付后错误模型不重放。
|
||
- 实际 dashboard 鉴权下验证管理员/本人/其他用户记录隔离、看板总额、零上游路由预览。
|
||
- 前端类型检查、目标 lint 和 276 项组件/表单回归。
|
||
- 生产库隔离副本:32 个存量 Token 逐个对比旧配置,重复启动策略哈希不变。
|
||
|
||
ClickHouse 不是这次验证的数据库范围。
|