质量验证与可复现管线

本节目标

把清洗变成分层、可重复、可回归测试的发布流程;让任何接受、修复、隔离和覆盖动作都能由输入、规则与报告解释。

清洗流程的四层

  1. 原始层:只读保存接收内容、来源与校验和。
  2. 规范层:统一类型、时间、文本和枚举,不做不可解释猜测。
  3. 有效层:应用契约与跨字段规则,隔离问题记录。
  4. 发布层:为训练、RAG 或监控生成特定快照并记录版本。

不要原地覆盖原始文件。每次运行至少记录输入标识、代码/规则版本、开始时间、行数变化和各拒绝原因数量。

每个可被消费的发布批次还应有不可变清单:release_id、输入快照/哈希、数据与 schema 版本、规则/代码版本、分组和 split 映射版本、质量门结果、责任人与生成时间。清单证明“本次实际跑了什么”;它不能单独证明来源授权、隐私安全或业务正确,这些仍需各自的审查证据。

发布文件应先完整写入同目录临时文件,再替换目标,避免中途失败留下半份 CSV。多个输出文件很难获得跨文件事务保证,因此消费者还应依赖同一批次 ID/清单,只在整批完成后读取。

质量关卡

关卡示例失败动作
Schema必填列存在、类型可解析阻止发布
行级延迟非负、状态在枚举内隔离行
集合级主键唯一、缺失率低于阈值阻止或告警
分布级类别/长度/延迟无异常漂移人工复核
关系级chunk 指向真实文档阻止入库

“通过”不等于数据完美,只表示满足当前明确契约。质量指标必须带分母、时间窗口和数据版本。

可重复与幂等

同一输入、同一配置重复运行应得到同一输出;清洗脚本不依赖当前时间、目录顺序或隐含全局状态。需要时间戳时把它作为运行元数据,不让它改变数据内容。

默认拒绝覆盖既有输出能防止误操作;如果允许覆盖,应要求显式开关,并在覆盖前确认输入、输出和报告绝对路径互不相同。幂等不等于“随时覆盖原始数据”。

测试至少覆盖:正常行、每种边界、缺失、非法类型、重复主键、Unicode 文本和空文件。生产数据出现新失败后,把匿名化最小案例加入回归测试。

机器学习边界

确定性规范(解析时间、映射固定枚举)可在划分前进行;但要先确定实体/文档/会话级 group_id 与冻结评测边界,避免同源内容已经跨集后才“补救”。会从数据学习统计量的步骤(均值填补、词表、缩放、近重复阈值校准或文本统计特征)必须只在训练部分拟合,并随模型 Pipeline 保存。评测集可以接受同一已冻结的确定性解析规则,但不能反向决定阈值、词表或清洗策略。

练习

为文档入库设计五个阻断关卡和三个告警关卡。每个关卡写出计算方式、阈值、失败动作与负责人。

掌握检查

  • 我能画出原始、规范、有效、发布四层,并说明每层允许做什么。
  • 我会先写临时文件再替换目标,并理解两个文件不构成单一事务。
  • 我能证明同输入/规则重复运行逐字节一致,且失败不会覆盖源文件。
  • 我会把生产新失败压缩成脱敏最小回归样例。
  • 我会在发布清单中冻结 group/split 映射,并区分可全量执行的解析与只能训练集拟合的学习步骤。

下一步:项目:Agent 运行日志清洗。

参考资料

资料核验日期:2026-07-22。