mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-11-07 09:47:23 +00:00
## 真实缺陷(照参考 credits.ts / auto-checkin.ts,2026-10-02 审查定位) 活动刷新时刻**各平台不同**:Qoder 是**每日 10:00(UTC+8)**才刷新。 而我们的自动领取只在 **08:00 跑一次**,于是: - 上午那次看到的是**昨天**那条 `CLAIMED` → 报 `already-claimed`; - 若拿它当"今天已处理"的凭证记档,当天 10 点刷新后就**再也不会去领**; - ⇒ **每天静默漏掉 100 积分**(且不可逆:用户以为今天不必再领)。 ## 修法:不靠"时刻表",让产出方自己声明 参考的做法(照抄,因为它是从根上对的):**不**给每个渠道配一张「刷新时刻表」 (那必然漂移),而是让**看得见该渠道刷新语义的那一层**声明 `covers_today`(本次结果算不算"今天这一轮"),记账方只数 「有几条能证明今天已被处理」。 - `covers_today` **缺省 true** ⇒ 绝大多数渠道(每日签到语义)行为完全不变; - Qoder 在**刷新前**置 `false` ⇒ 不得据此认定今天已处理; - **判据只看 `covers_today`,绝不用 `kind` 反推** —— `already-claimed` 天然有歧义(可能就是昨天那一轮的痕迹)。 - 未覆盖今天的平台会**待重试**并记日志;已覆盖的(按 UTC+8 日界记账) 下一次直接跳过,不会重复打上游。 ## 调度频率(两半都要,缺一仍漏) | 改动 | 为什么必须 | |---|---| | `every` 86400 → **7200** | 刷新时刻晚于那次执行、或那次没覆盖到的平台,一天一跑就整天漏 | | `at="08:00"` → **first_due_now** | 任何时刻重启都能补上,不等一个周期 | | 新增 `claimCovered` 持久化 | **这才是防重领的正确机制** —— 不是靠"一天只跑一次"碰巧避开 | ★ 旧判据(`TestAutoClaimScheduledWithModelRefresh`)明写「auto_claim 是每日任务, **不该** first_due_now(重启就重领是错的)」—— **那个假设本身就是缺陷的一部分**。 已按事实更新,并把这段经过写进注释(避免以后有人照旧判据再改回去)。 ## 判据 - `TestAutoClaimCountsCoversTodayNotKind`:① 刷新前必须 `covers_today=false` 且**绝不报** `already-claimed`;② 刷新后为 true;③ 六组记账判据逐条钉住 (含"刷新前的 already-claimed 不得算已处理"这一关键项); - `TestAutoClaimScheduledMoreThanOnceDaily`:间隔必须远小于一天 + first_due_now + 记账键存在; - `TestQoderAdapterParsesQueueAndBilling`(上一提交):5 组,含与通用 openai 适配器的**对比**(断言通用器做不到,否则专用适配器无存在理由)。 回归:9 个包全绿;内核非测试代码零厂商名。