fix(douyu): 加固高价值三态迁移与状态口径

修复迁移中断重跑、旧快照回填覆盖、降级将 unknown 误写成可兑换,以及迁移前 CK 已失效账号未作废旧结论的问题。统一 CK error 的展示与筛选口径,补齐旧快照迁移和兑换兜底反向用例,并同步高价值结论时间语义。同时纳入 .gitignore 更新。
This commit is contained in:
yml2213
2026-11-06 13:25:45 +08:00
parent c9fbbdb828
commit 578e259eea
13 changed files with 286 additions and 68 deletions
+13 -5
View File
@@ -90,6 +90,8 @@ CK 本体和健康结果都在账号上:
列表只返回紧凑的三态 `high_value`(`state` + 每套的 `owned`/`available`/`unknown`),
不返回整份快照,避免响应体积膨胀。
`high_value_checked_at` 是“最近一次形成高价值结论”的时钟,结论本身可以为
`unknown`;它不表示每次执行都成功读到了可用的官方 `status`。
一键查询本身是只读聚合,不直接修改生命周期状态;官方兑换记录会以
`source=official_sync` 幂等补入事件流。
@@ -118,7 +120,8 @@ CK 本体和健康结果都在账号上:
两套都降为 `unknown`,等下一次真的读到官方 `storehome` 才写回。
作废发生在**数据层**(CK 检测结论落定处),不是展示层:CK 恢复之后展示层
就不再降级了,只在展示层降级会让陈旧的「可换」重新变绿。
`error`(查不到)不作废 —— 查不到不等于账号出问题了。
`error`(查不到)既不作废数据,也不在展示层降级 —— 查不到不等于账号状态变了;
它继续显示上一次有效结论,并计入「高价值但 CK 异常」筛选。
### 高价值的三类「查不到」必须分开
@@ -127,13 +130,18 @@ CK 本体和健康结果都在账号上:
| 筛选 | 判据 | 含义 |
| --- | --- | --- |
| `unqueried` | `overview_queried_at IS NULL` | 从没跑过一键查询(**旧口径**,保留不变) |
| `high_value_never` | `high_value_checked_at IS NULL` | 从没成功读到官方商城(商城接口失败 / 没配 `manualID`) |
| `high_value_unknown` | `checked_at` 非空,但已过期或状态是 `unknown` | 查过,但当前结论不可信 |
| `high_value_never` | `high_value_checked_at IS NULL` | 从没形成过高价值结论(商城接口失败 / 没配 `manualID`) |
| `high_value_unknown` | `checked_at` 非空,但已过期或状态是 `unknown` | 形成过结论,但当前结论未知或不可信 |
`high_value_never` 必须单独成档:账号可能查过其它资料、只是商城接口对它
稳定失败。它既不满足 `unqueried`(资料查过),也不满足 `high_value_unknown`
`high_value_never` 必须单独成档:账号可能查过其它资料、只是从未形成高价值结论。
它既不满足 `unqueried`(资料查过),也不满足 `high_value_unknown`
(那条要求 `checked_at` 非空)—— 不单独筛的话,这批账号在界面上**无处可寻**。
0065 迁移会把旧 `overview_snapshot` 回填成新三态。旧快照没保存原始
`status` 时状态保守写 `unknown`,但保留旧查询时间作为结论时钟,让这批账号
进入 6 小时慢速重试;迁移前已经 `CK invalid` 的账号也一律回填为 `unknown`。
没有旧快照的账号则保持 `checked_at=NULL`。
## 自动化策略
- CK 巡检按账号选行,不按登录历史选行。