Repository navigation
Commit 84bc772
committed
fix(engine): DEAD 现场复探额度,积分耗尽的 401 不再硬禁用
81d6b36 的收口要求「已探明额度 ≤ 0」,但积分是分钟级烧完的,而周期探额
60 分钟一轮 —— 401 到达时库里往往还是正数,收口条件根本不成立。
实测 2026-11-03 三条 officeace 凭证:
- 07:39:37 401,07:36:54 探到 56.66
- 08:00:38 401,00:52:09 探到 100
- 08:25:44 401,08:14:42 探到 51.37
三条全部判 DEAD → 硬禁用 + credential_unavailable;08:40 复探立刻为 0
(新用户福利 4000/4000 + 每日签到 100/100 用满),确认是积分耗尽。
- `_credit_if_exhausted` 改异步:本地证据成立(health == -1 或
quota_remaining <= 0)直接 CREDIT 不出网;证据陈旧(正数 / 未探测)时
`_probe_quota_now` 现场复探一次 `GET /v1/subscription`(只读、不耗积分、
不刷新凭据),写回后按新鲜证据再判。
- 复探仍为正数 / 复探失败 / provider 无 probe_quota / 凭证已并发删除,
一律保持 DEAD:未知 ≠ 耗尽,不能把真坏的 AppKey 静默成「等签到」。
`probe_failed` 不入库,免得一次网络抖动把已探明的正数抹成未知。
- 复探走 `credential_scope`,与推理同一出口(一号一出口);同号并发 401
在 60s 窗口内共用一次复探,避免对着同一账号并发打 N 次订阅接口。
- 五个分类点与 `_stream_error_type` 同判据,尝试行 / 收尾行不会互相矛盾。1 parent 592fb50 commit 84bc772
8 files changed
Lines changed: 308 additions & 29 deletions
File tree
- src
- engine
- provider/officeace
- tests/engine
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
| 86 | + | |
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
522 | 522 | | |
523 | 523 | | |
524 | 524 | | |
525 | | - | |
| 525 | + | |
526 | 526 | | |
527 | 527 | | |
528 | 528 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
524 | 524 | | |
525 | 525 | | |
526 | 526 | | |
527 | | - | |
| 527 | + | |
528 | 528 | | |
529 | 529 | | |
530 | 530 | | |
| |||
0 commit comments