食品出厂检验与留样记录核对(免费版)
完全本地运行:引擎已经打包在本技能里(
engine/目录)。 核对过程不需要联网、不需要 API Key、没有调用次数上限。
什么时候用
谁会在什么时候用:食品生产企业的品控 / 质量部(质量管理部、化验室),在 每批产品出厂前与每月质量例会 / 月度品控自查这两个固定节点上,必须把这张表核一遍才能往下走。 监管抽查(食品生产许可审查、日常监督检查)与第三方审核(体系审核、客户验厂)也都要看这张表。
为什么必须核:食品安全法与食品生产许可审查要求,食品生产企业每批产品出厂前必须检验 (出厂检验项目按该产品的执行标准逐项做)、每批留样并保存到保质期后(一般不少于保质期), 检验记录、原始数据、留样台账、不合格品处置都要能追溯到批次。这张表一旦出错,最常见的结果就是 被下整改通知:"出厂检验缺项 / 缺批次" "留样数量不足或提前销毁" "检验数据与报告不一致" "不合格品没有处置闭环"。
这张表会逐项核对什么(免费版 6 项,全部可以在本机复算):
- 批次检验覆盖 —— 按生产批次逐批核对"是否检验":检验日期缺失、检验结果缺失、 日期不可解析的批次逐批点名(缺批次的批号无法证明出厂前检验过)。
- 检验项目齐全性 —— 检验项目数 ≥ 规定检验项目数,不足给出差额; 表里有「检验项目清单」「规定检验项目」两列时,直接点名缺哪一项。
- 留样期限 —— 留样日期 + 留样期限(天) = 应销毁日期;核对日期(基准日)早于应销毁日期即报出, 销毁日期早于应销毁日期按提前销毁报出并给出提前天数;留样期限为 0 天或负数报非法。
- 同一生产批次 + 同一检验项目重复登记检测 —— 同批同项目出现两次以上即点名(含两行的原文定位)。
- 合计行逐列复核 —— 批次数、留样数量、检验项目数三类合计列与逐行加总比对,差额不为零即列出。
- 空白与占位符 / 日期格式 / 数值非法 / 状态值非法 —— 空白、"待补"这类占位符、 无法解析的日期(如 2026-13-45)、为负或无法解析的数量、以及 合格/不合格/待检/复检 之外的状态值, 逐处点名。
每条结论都带原文行号(第 N 行)+ 批次 + 日期/数字,可被第三方用同一口径复算; 材料不足(缺必需列、只有表头、没有表头)时不给结论,会明确列出还缺什么。
这个免费版查什么
(检查项由引擎的 CHECKS_* 导出,跑 --sample 会打印实际执行了哪些。)
本免费版执行引擎 CHECKS_GIVEN 里声明的 6 项;引擎 CHECKS_WITHHELD 里那 5 项
(不合格品处置闭环、检验数据与报告一致性、留样数量达标、同批跨生产线/跨班次、分产品×分班次汇总清单)
在免费版里不执行——会如实列为"未执行",绝不会被伪造出结论。
怎么用
node scripts/run.mjs --sample # 先看样例(一张干净的出厂检验与留样台账)
node scripts/run.mjs --input 你的材料.json # 跑自己的材料
入参就是一张含表头的表(从 Excel 把表头与数据行一起复制成文本,Tab 分隔最稳):
必需列:生产批次、产品名称、规格、生产日期、保质期至、检验日期、检验项目数、规定检验项目数、 检验结果、留样日期、留样数量、留样期限(天)、销毁日期、不合格处置、核对日期。 可选但很有用:规定留样数量、检验项目清单、规定检验项目、处置日期、复核人、报告结论、生产线、班次。
这个工具会拦下什么(每条都来自引擎的处置建议)
- 检验日期为空 / 检验结果为空 / 日期写错 → 这一批算"未检验",点名到批次; 先去找这一批的检验原始记录与出厂检验报告,确实没做的要在不合格品台账里写明去向(返工/降级/报废)。
- 项目数不够 → 报出差额;有清单列时点名缺哪一项,按该产品执行标准补做并留原始数据。
- 提前销毁 / 到期未处理 → 报出应销毁日期与提前(或超期)天数;确属提前销毁要有审批与原因, 还没销毁的请把销毁日期清空,别预填日期。
- 合计行与明细不符 → 报出差额;改过明细行却没重算合计是最常见原因。
- 看不懂的值 → 本工具不会把"两件""壹佰"这类值当成 0,也不会把空值当默认值,而是逐处点名。
常见错法(食品出厂检验与留样,5 个最容易被监管点名的坑)
- 把"生产批次"当"生产日期"填,一个月只检验一次就当成全月覆盖。 出厂检验是逐批的:同一配方同一天生产两批,就是两个批次、两份检验记录。 台账里只写日期不写批号的,等于事后无法证明哪一批检过哪一批没检—— 本工具会直接报"批次未检验"并点到行。
- 检验项目数按"报告上写了几项"填,而不是按该产品的执行标准逐项核。 标准要求 5 项(如 净含量、感官、菌落总数、大肠菌群、标签),只做了 3 项就填 3, 台账看起来"自己和自己一致",实际是缺项。规定检验项目数要填标准值, 本工具按"实际 ≥ 规定"判,差额与缺项都会点出来。
- 留样期限写成"保质期"却没换成天数,或销毁日期手填。 留样期限(天) 是天数(如保质期 6 个月 ⇒ 180 天);应销毁日期 = 留样日期 + 天数。 手填销毁日期最容易提前一两个月,这一条在审核里就是"留样保存期不足"。 注意别用 0 天或空值糊过去(本工具报"留样期限非法")。
- 检验记录写"合格",出厂检验报告的结论却是"待复检"或"不合格",两处各改一处。 记录与报告不一致是抽查最爱问的问题("以哪个为准")。免费版能核状态值是否合法, 完整档才把两处原文列出来对比。
- 判了不合格就算完事:处置结论写"已处理",但没有处置日期与复核人签字。 不合格品处置要形成闭环(处置结论 + 处置日期 + 复核人),并与处置单/销毁记录互相印证。 这类"写了等于没写"的处置,是完整档的"不合格品处置未闭环"逐条点名的对象。
完整版(完整档)多做什么
免费版只覆盖"台账字面算得对"。完整版在这 6 项之上追加 5 项,全部在本机离线跑:
- 不合格品处置闭环 —— 检验结果=不合格 但缺处置结论/处置日期/复核人 ⇒ 点名,并按超期天数给出。
- 检验数据与报告一致性 —— 报告结论与检验记录结论不一致时,把两处原文都列出来。
- 留样数量达标 —— 单批留样数量 < 规定留样数量(没有该列时按一般口径不少于 1 件核),报出差额。
- 同批产品跨生产线 / 跨班次 —— 同一批次出现在多条生产线或多个班次(防混批),点名到行。
- 分产品×分班次汇总清单 —— 按不合格数与缺检批次排序的分组清单,每组给出可整改动作
(
consolidated_actions字段)。
对应的完整档包是 skillpay-factory-inspection-record-check(完整档一次,跑多少次都不再收费)。
边界(请务必知道)
本工具不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断:不判定出厂检验项目本身是否适用于该产品
(那要按产品执行标准与生产许可审查细则认定)、不判定检验方法与检验结果是否科学准确
(那是检验机构与检验员的职责)、不判定留样是否被真实动用、不读 .xlsx/.pdf 原件、核对过程不联网核验报告真伪。
材料不足时不给结论,也不会输出「未发现问题」。
