解析规则修复后,不要把所有旧 URL 再请求一遍。只有保留本身、独立的重放用途和记录上下文均明确允许的快照才本地重放;对已过期或缺失的输入,只有当前任务仍有必要且当前请求授权明确允许时才重新采集。其余一律暂停。
本文面向获授权的持续数据工作流负责人:解析器变更后,如何修正带明确标记的历史输出,而不把修复扩大成无边界重新采集。它不授予访问权、不延长保留期、不证明来源仍然最新,也不诊断代理。API、授权导出、来源方更正或人工复核可能是更好的路径。
先分清两种产物:历史更正与新观察
本地重放是在新解析器下读取同一份已保留输入,并写入一条历史更正。保留原始观察时间、来源/上下文版本、快照标识、旧新解析器版本和更正时间。它只能修正当时那份输入的提取结果,不能声称来源现在仍是那个值。
重新采集会在新的时间产生新观察。它需要满足当前来源授权、任务范围、频率和保留规则,且不应悄悄覆盖旧结果。两条记录应关联保存。HTTP 对表示和缓存控制有定义,但 HTTP 新鲜度本身不等于业务工作流已获准保留、复用或再次请求来源材料。
| 现有什么? | 安全动作 | 产出代表什么 |
|---|---|---|
| 快照仍被保留;允许保留和重放;上下文完整 | 本地重放;保留旧结果并写入带标记的更正。 | 对该快照的历史解释更正,不是当前观察。 |
| 输入已过期或删除;当前任务仍需完成;当前请求授权明确允许 | 将该记录一次性加入重新采集集合。 | 带新时间戳的新观察,不是重建历史。 |
| 已保留字节的重放授权缺失、未知或被拒绝;不允许保留;或上下文不全 | HOLD。不能用日志片段、复制件或记忆替代,也不能自动改为新请求。 | 没有可修正的值。 |
| 输入已过期/缺失,但当前授权未知、被拒绝或任务已无必要 | HOLD;取得决定或关闭记录。 | 不请求,也不推断结果。 |
算出最小重新采集集合,而不是修复队列
先冻结受影响的解析器版本,并定义受影响的提取路径。选择器变了,不等于每条已存记录都错。每条记录只分类一次,审计行可写为:记录 ID|解析器/版本|输入状态|保留依据|重放授权|上下文完整性|原观察时间|当前必要性|当前请求授权|处置|负责人。
- 排除未受影响记录。不经过已变更解析路径的记录为
SKIP;不能因为发版就刷新它。 - 本地重放符合条件的保留输入。必须同时满足:字节仍按批准规则保留、允许保留、独立的重放/更正用途明确允许、记录上下文足以识别要修正的历史表示。语言、市场、账户范围、响应时间、来源版本或解析器来源缺失,都可能使快照不足以支撑更正。
- 对重放边界未解的保留输入保持暂停。重放授权缺失、未知或被拒绝;保留争议;或证据不全,都不能自动把已保留字节改为网络请求。已过期或删除的输入不同:它不能重放,但可以另行判断是否允许产生当前新观察。
- 只为尚未完成的当前决定放行新请求。必须有明确负责人、明确当前授权和适用限制。该记录 ID 只加入一次;解析修复本身不能证明第二次请求合理。
- 公布两套台账。历史更正与新观察使用不同时间戳、分母和下游标签。当前报表不能用新值替换历史时间段的记录。
形式化地说,最小重新采集集合为:受影响 AND 输入已过期或缺失 AND 当前仍需要 AND 当前请求授权明确允许 的记录。已保留但不可重放的输入不能悄悄算作“缺失”,而应暂停至其重放/保留边界明确。其他受影响记录只能走本地重放或暂停。这是在这些明确策略假设下的闸门,不是来源变化率或缓存命中率估计。
一个完全合成的例子
下表六条记录均为虚构教学输入,不代表客户数据、已存网页、访问权、IPHTML 表现或推荐保留期限。
| 记录 | 解析路径 | 输入与授权状态 | 决定 | 原因 |
|---|---|---|---|---|
| A | 受影响 | 快照被保留;允许保留和重放;上下文完整 | REPLAY_LOCAL | 更正旧输出,仍使用原观察时间。 |
| B | 受影响 | 快照已过期;当前任务需要;当前授权允许 | RECOLLECT | 过期阻止重放,但明确获准的当前任务产生新观察。 |
| C | 受影响 | 输入缺失;当前任务需要;授权允许 | RECOLLECT | 一条符合条件的新观察进入最小集合。 |
| D | 受影响 | 输入缺失;当前任务需要;授权未知 | HOLD | 不能从旧工作流推断现在仍有授权。 |
| E | 未受影响 | 有保留输入 | SKIP | 解析修复并未触及此路径。 |
| F | 受影响 | 快照被保留;重放授权未知;当前请求本可允许 | HOLD | 不能把未解决的重放授权自动变成新请求。 |
因此答案有两次当前请求:B 和 C。A 在无网络活动下修正;D 因当前授权未知而不在请求列表中;F 因保留输入的重放边界未解而不在列表中。B 和 C 都只产生新观察,绝不重建历史。
运行离线决策夹具
下载解析修复夹具,用 Python 3.9 或更高版本运行。它只使用标准库,没有配置,不发网络请求,也不会修改采集系统。
python3 parser-repair-replay-plan.py
其中的有效断言会验证:A 是历史本地重放;B 和 C 是两条合成重新采集;过期快照绝不重放;当前授权未知绝不放行请求;已保留字节的重放授权未知时,即使当前请求原本可允许也保持暂停。反例会拒绝无效授权值、未经批准的保留和未知重放授权。夹具只信任给定的策略字段;它无法检查实际合同、来源、快照或解析器。
让更正保持可信的控制项
- 保留对旧输出和输入处置的不可变引用;没有更正记录时,不要原地改写报表。
- 记录为何允许重放,以及输入何时必须删除。
no-store或来源专属规则是停止条件,不是可绕开的例外。 - 在接受更正前,用有代表性的保留夹具测试新解析器。解析成功不等于字段语义正确;字段契约和隔离请看记录质量检查。
- 把请求减少单独处理。重复请求减少指南讨论可共享获取和新鲜度,不决定历史解析缺陷是否值得发起新观察。
- 如历史报表使用了更正值,仍保留其覆盖和来源标签;地区覆盖偏差指南解释了为什么稍后的观察不能悄悄填补旧报告窗口。
- 授权、保留或可能重复副作用未解时交给负责人。事故积压有不同安全闸门,可参阅生产事故处置手册。
若经过分流后,确有获授权的当前观察需要合适的轮换网络上下文,可查看IPHTML 轮换代理信息。如需在范围内讨论,请联系 IPHTML,提供获授权来源、当前决定期限、上下文维度、保留边界和停止条件——不要提供凭据、原始快照或个人数据。现有 API、授权数据源、导出或直接获准访问只要能满足任务,仍应优先使用。
来源核查于 2026 年 11 月 9 日:RFC 9110(HTTP 表示和请求语义)、RFC 9111(缓存存储、新鲜度、验证及 no-store)以及 NIST 隐私框架(隐私风险管理背景)。这些资料不授予采集授权、不规定保留期限、不验证本夹具,也不证明需求、产品表现、付费转化或续用。