将要发出的请求
POST sampling-url/v1/domains · 人工复核走这条,不走 /v1/recheck
| field字段 | value取值 |
|---|---|
| domains域名数组 | ["news.example.tw"] |
| reason提交原因 | recheck |
⚠️ 人工复核不伪造 signal。POST /v1/recheck 的 signal 四个取值全部由调度器的统计发出,它们是「调度器观察到了什么」的记录。人工触发没有对应的观测,填任何一个都是假证据 —— 所以走 /v1/domains 的 reason = recheck。
⚠️ domains 是字符串数组,只用于 POST /v1/domains 与 POST /v1/seeds。装对象的数组必须另起名字并带 _list(如 undetermined_domain_list)—— 同名不同元素类型是命名规范里最严重的违反。
⚠️ 提交由控制台后端代发,前端不直连服务接口。服务间认证是固定 token(Authorization: Bearer),浏览器表单带不了也不该带。
复核的三种触发
DEV-sampler.md §九
| source来源 | basis依据 | 24h count24h 次数 |
|---|---|---|
| 定期 | 按 verified_at 到期 | 2,910 |
| 调度器 | POST /v1/recheck,带异常信号 | 193 |
| 人工 | 指定域名,reason = manual 或 recheck | 25 |
调度器送来的四种信号
CONTRACT.md §四 POST /v1/recheck · signal 只有这四个取值
| signal信号 | meaning含义 | 24h count24h 次数 |
|---|---|---|
| text_length_drop | 该域名 text_length 较历史中位数下降过多 | 104 |
| empty_streak_detected | 连续 N 次 fetch_status = empty | 51 |
| dom_change | dom_node_count 骤变 | 26 |
| api_auth_change | 后端接口开始返回 401 / 403 —— CSR 特有,文档层看不出来 | 12 |
⚠️ 取值 empty_streak_detected 刻意带了 _detected 后缀。裸用 empty_streak 会与统计字段 empty_streak_count 只差一个后缀,读代码时极易看错 —— 枚举取值不得与字段名重名。
⚠️ 统计由调度器维护(它收到每次 report 摘要),采样器不扫全库。api_auth_change 由 health_signal.xhr_denied_count 超阈值时发出。
⚠️ 调度器只送「内容变了,你去重新判定」,不送「这个域名挂了,你接手」。站点可用性由调度器的熔断自己处理,不推给采样器。这是唯一允许的方向,也是唯一的一条边。
复核结果与动作
DEV-sampler.md §九
| change变化 | means含义 | action动作 |
|---|---|---|
| ratio 显著升高 | 改成了 SSR | verdict = ssr,回调调度器 |
| ratio 显著降低 | 更 CSR 或结构变了 | 更新数值,重推 wait_selector |
| 渲染后为空 | 站点挂了或加了反爬 | verdict = unknown,不立即改判,进待定池 |
| 接口鉴权变更 | api_auth_change 触发 | 重推 wait_selector,必要时判 partial |
⚠️ 第三行不立即改判:渲染后为空可能是暂时的。直接判 ssr 会让一个 CSR 站被永久丢弃 —— 漏判是不可逆的。进待定池,走 30 / 90 / 180 天退避重采。
⚠️ 规则表里的 ratio 是 3~5 样本的中位数,不能直接与单页值比。复核要重新采样算中位数。
复核之后调度器必须重置统计
DEV-scheduler.md §五 · 引用,本服务不执行
采样器回调 /v1/rules 时,调度器要清空该域名的 domain_signal_statistic。不清会这样:
| step步骤 | what happens发生什么 |
|---|---|
| 1 | 站点确实改版 |
| 2 | 复核确认,规则已更新 |
| 3 | 但调度器的中位数仍是旧值 |
| 4 | 下一页立刻再触发 text_length_drop |
| 5 | ★ 复核风暴 |
⚠️ 这一步在调度器那边执行,采样器不写 scheduler:domain_signal_statistic。跨服务写表是明令禁止的 —— 每张表恰好一个写入方。本页只是把这条依赖标出来,以便联调时确认对方做了。