mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-15 23:22:59 +08:00
parseZhipuTokenTiers 只在 limitType == "TOKENS_LIMIT" 分支里按 unit 显式分类, 而智谱当前把 5h / weekly 两条窗口都标成 CREDIT_LIMIT(level=lite)。这些条目被放进 creditFallback,entry 结构体又不带 unit,信息在此永久丢失,降级路径退化为 「按 nextResetTime 升序填空位」。当周窗口先于 5h 重置时(每个周期临尾的几小时), 周窗口会被先填进 5h 槽,两档必然标反 —— 函数文档注释第 1 条已警告过该场景, 只是防线建在了错误的 type 分支上。 因为只在「CREDIT_LIMIT 且周窗口更早重置」这一种组合下出错,症状是间歇性的, 容易被误判为随机抽风。该函数自 v0.2.0 到 v0.2.16 逐字节未变,不属于版本回归。 改动: - entry 增加 unit 字段;classify 改为直接接收 unit,不再依赖 item。 - 仅在降级路径(无任何 TOKENS_LIMIT 条目)上,对 creditFallback 中 unit 可识别的 条目先按 unit 分类;unit 仍不可识别的才落入原有的 reset 时间启发式。 - TOKENS_LIMIT 优先占槽的既有语义保持不变:两种 type 同时返回时 CREDIT_LIMIT 依旧不参与槽位竞争。 - 更新 cnZhipuWindow 与 parseZhipuTokenTiers 的文档注释。 - cn_providers_test.go 补充 3 个回归用例。 验证: - 反向验证:仅回退源文件保留测试,CreditLimitUnitClassification 失败于 14 vs 90(两档被对调);另两个钉住原语义的用例修复前后均通过。 - go build ./... 通过;gofmt -l 无输出;golangci-lint v2.14.0 0 issues。 - go test -tags=unit ./internal/service/ 全量通过。 影响范围:backend/internal/service 两个文件(service + unit test)。