2. 批次与谱系核心概念建模
在批次物料与成品谱系追溯工程中,最基础也最容易混淆的一组概念是:批次、子批次、序列号、物料批次、成品批次、谱系节点、谱系边,以及正反向追溯语义。它们不是同义词,而是从“物理实体”到“逻辑记录”再到“关系网络”的三层抽象。如果建模时把批次和序列号混用,或者把物料批次与成品批次当成同一类节点,后续追溯就会出现断链、重复计数或方向错误。本节先建立一套可落地的概念模型,再用一个具体示例说明如何把车间里的实物关系映射成可查询的谱系图。
一、批次、子批次与序列号:三种粒度
批次(Lot/Batch)是一组在相同条件下生产、加工或接收的物料或产品的集合,通常由同一个工单、同一台设备、同一时间段产出。批次是追溯的最小管理单元,但不一定是物理不可分单元。例如,一桶1000 kg的原料批次A,可以分装成10个100 kg的子批次A-01至A-10,分别投入不同工单。
子批次(Sub-lot)是批次的下级拆分单元,用于表达“同一批次内部分物料被单独处理或分流”的情况。子批次必须继承父批次的来源信息,同时拥有自己的唯一标识。子批次不是必须存在的层级,只有在需要区分同一批次内不同去向、不同检验结果或不同时间投入时才引入。
序列号(Serial Number, SN)是单件级唯一标识,用于区分同一批次内每一件产品。序列号通常用于高价值、需单件维修或法规强制单件追溯的场景,如汽车安全件、医疗器械、航空零部件。序列号与批次的关系是“多对一”:一个批次可包含多个序列号,一个序列号只属于一个批次。
二、物料批次与成品批次:角色不同
物料批次是投入生产使用的原材料、辅料、半成品或包装材料的批次。它的关键属性包括:物料编码、供应商、收货日期、检验状态、有效期、存储位置。成品批次是经过生产加工后产出的可销售或可交付产品的批次,关键属性包括:产品编码、生产工单、生产日期、班次、产线、检验结果、放行状态。
两者在谱系图中都是节点,但角色不同:物料批次是“输入节点”,成品批次是“输出节点”。一个成品批次通常由多个物料批次共同构成,一个物料批次也可能被多个成品批次消耗。这种多对多关系正是谱系追溯需要解决的核心问题。
三、谱系节点与谱系边:图的骨架
谱系节点(Node)是追溯网络中的实体记录,可以是物料批次、成品批次、子批次、序列号、工单、设备、检验记录等。节点必须具有全局唯一ID,并携带类型标签和业务属性。谱系边(Edge)是节点之间的有向关系,表示“消耗”“产出”“拆分”“合并”“返工”“报废”等语义。边必须带方向、时间戳和数量,否则无法计算物料平衡。
常见的边类型包括:
- 消耗边(CONSUMES):从物料批次指向成品批次,表示投入关系,携带投入数量。
- 产出边(PRODUCES):从工单或设备指向成品批次,表示产出关系。
- 拆分边(SPLITS):从父批次指向子批次,携带拆分数量。
- 合并边(MERGES):从多个子批次指向新批次,表示合批。
- 返工边(REWORKS):从成品批次指向返工后的新批次,保留原批次历史。
节点和边共同构成有向无环图(DAG)。之所以要求无环,是因为物料在时间上只能从上游流向下游,如果出现环,说明数据录入有误或存在循环领用,必须排查。
四、正向与反向追溯语义
正向追溯(Forward Trace)是从已知的物料批次出发,沿边的方向向下游查找“它被用到了哪些成品批次、发往了哪些客户”。典型问题:“供应商通知原料批次RM-20240501-03存在微生物超标,我需要知道哪些成品受影响。”反向追溯(Backward Trace)是从已知的成品批次出发,沿边的反方向向上游查找“它由哪些物料批次、哪些工单、哪些设备生产”。典型问题:“客户投诉成品FG-20240612-07有异味,我需要知道它用了哪些原料和辅料。”
方向定义必须统一:本文约定“物料→成品”为正向,即从上游到下游。所有查询、图遍历和报表都遵循这一约定,避免同一张图在不同模块中被反向解释。
五、建模示例:从实物到图谱
假设某食品厂2024年6月12日生产一批调味酱,成品批次号为FG-20240612-07,工单WO-2406-118。实际投料情况如下:
| 投入物料批次 | 物料名称 | 投入数量(kg) | 供应商 |
|---|---|---|---|
| RM-20240501-03 | 辣椒粉 | 120 | 供应商A |
| RM-20240502-01 | 食用盐 | 30 | 供应商B |
| RM-20240503-05 | 植物油 | 200 | 供应商C |
其中辣椒粉批次RM-20240501-03在投料前被拆分为两个子批次:A子批次80 kg用于本工单,B子批次40 kg用于另一工单。成品产出后,包装线为每瓶产品赋序列号,本批次共生产SN-0001至SN-0003三瓶样品(实际大批量生产时序列号数量会更多,此处仅作示例)。
按照上述模型,谱系图包含以下节点和边:
- 节点:RM-20240501-03、RM-20240502-01、RM-20240503-05、RM-20240501-03-A、RM-20240501-03-B、FG-20240612-07、SN-0001、SN-0002、SN-0003。
- 边:RM-20240501-03 → RM-20240501-03-A(SPLITS,80 kg);RM-20240501-03 → RM-20240501-03-B(SPLITS,40 kg);RM-20240501-03-A → FG-20240612-07(CONSUMES,80 kg);RM-20240502-01 → FG-20240612-07(CONSUMES,30 kg);RM-20240503-05 → FG-20240612-07(CONSUMES,200 kg);FG-20240612-07 → SN-0001/0002/0003(PRODUCES)。
当供应商A通知辣椒粉批次RM-20240501-03存在风险时,正向追溯从该节点出发,沿SPLITS边找到子批次A和B,再沿CONSUMES边找到FG-20240612-07,最后沿PRODUCES边找到SN-0001至SN-0003。反向追溯则从SN-0001出发,沿PRODUCES边反向找到FG-20240612-07,再沿CONSUMES边反向找到RM-20240501-03-A、RM-20240502-01、RM-20240503-05,最后沿SPLITS边反向找到父批次RM-20240501-03及其供应商。
六、关键属性与约束
为了让谱系图可查询、可审计,每个节点和边都应携带必要属性。节点属性至少包括:唯一ID、节点类型、业务编码、创建时间、状态。边属性至少包括:起点ID、终点ID、边类型、数量、单位、时间戳、操作人。数量字段尤其重要,它使物料平衡校验成为可能:对任一成品批次,所有投入边的数量之和应等于产出数量加上合理损耗。如果偏差超过阈值,说明存在漏记、错记或未授权领用。
此外,节点类型和边类型应使用受控词表,不允许自由文本。例如边类型只允许CONSUMES、PRODUCES、SPLITS、MERGES、REWORKS、SCRAPS六种,避免出现“用了”“投入”“消耗”等近义词导致查询遗漏。时间戳必须使用统一时区,建议UTC+8并精确到秒,因为同一分钟内可能发生多次投料和产出。
最后,谱系图应支持版本化。当发现某条边录错时,不应直接删除,而应标记为失效并新增修正边,保留审计轨迹。这样即使追溯结果发生变化,也能解释“为什么之前查到的结果和现在不同”。