追溯
序列号与批次跟踪,以及把投入品与产出品关联起来的谱系。
Carbon 把单个序列号和批次表示为****。消耗和生产记录会建立谱系,支持从成品向后追溯,以及从可疑批次向前追溯。
跟踪实体
跟踪实体是一个被跟踪的物料数量。**物料每个单位一个实体(数量为 1);**物料每个批次一个实体。序列号或批号及其来源保存在实体的属性中。实体在流转过程中带有状态:
偏轨状态
已消耗
已发料到生产订单或已发货。
实体从哪来
收货一个跟踪物料会创建暂扣状态的实体;过账收货后释放为可用,除非该物料需要检验——此时会一直保持暂扣,直到检验放行,检验不合格则变为已拒收。制造侧,生产订单会预先预留其产出实体,并在生产完成后翻转为可用。
谱系
每一次物料事件(消耗、生产、拆分、发货)都记录为一条带输入(消耗了什么)和输出(产出了什么)的活动。父子关系通过活动连接,因此谱系图随着作业实时构建,之后可以沿图追溯某个单位的上游来源或下游去向。消耗批次的一部分会记录一次拆分,把原批次与已消耗部分和剩余部分关联起来。
与之相反的是合并:把同一物料的多个批次合并为一个批次,数量相加,并取其中最早的到期日。原批次仍保留在图中作为该合并的输入,因此新批次可以沿每个原批次向上追溯。工序分批会把一次运行完成的成员合并到同一个批号下;未合并的批次仍可从批次抽屉中合并。
NOTE
没有独立的序列号表或批号表——同一个跟踪实体模型同时表示两者,号码本身只是一个属性。谱系也不是存储的父级指针,而是从某个单位出发遍历活动图重建出来的。
保质期
跟踪物料可以带有保质期:固定时长、收货时指定的日期,或根据消耗的最早到期组件计算得出。Carbon 会把算出的到期日写到实体上,拣货时优先选择最早到期的批次(FEFO)。保质期只适用于序列号和批次物料,因为必须存在按单位的记录才能写入日期。