mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-16 23:53:33 +08:00
问题背景(Refs #4599):OpenAI OAuth 账号请求 /v1/responses 全模型 503, 日志仅有 no available OpenAI accounts supporting model 且 excluded_account_count=0。selectByLoadBalance 初筛循环的每个过滤分支 (配额自动暂停、渠道上游模型限制、运行时熔断等)都是静默 continue, 最多只有 Debug 级日志,用户与维护者都无法定位候选账号被哪个隐式 过滤点剔除。 修改: - selectByLoadBalance 初筛循环为每个 continue 分支记录原因计数 (excluded/not_schedulable/platform_mismatch/runtime_blocked/ privacy_not_set/transport_incompatible 及请求兼容性细分原因) - isAccountRequestCompatible 新增 isAccountRequestCompatibleReason 变体,细分 runtime_blocked/quota_auto_pause_<窗口>/ shadow_parent_unhealthy/model_not_supported/ channel_upstream_restricted/capability_mismatch;原 bool 函数改为 包装变体,其余调用点行为不变 - noAvailableOpenAISelectionError 增加 details 参数,初筛全灭时输出 如 (pool=3, filtered: excluded=1 model_not_supported=1 quota_auto_pause_7d=1),原因按字典序排序保证输出确定;快照池为空 时输出 (pool=0);选择序列耗尽路径追加 selection_order_exhausted 标注;legacy 调用点传空保持原消息不变 兼容性:错误仍通过 Unwrap 匹配 ErrNoAvailableAccounts,分类与 ops 标记逻辑不变;客户端可见错误仍为通用分类消息,统计仅进服务端日志; happy path 原因 map 惰性分配,无额外开销。 Refs #4599 Co-authored-by: Cursor <cursoragent@cursor.com>