1.7 KiB
1.7 KiB
合批原料 material_ofrom 历史排查
历史现象
曾出现合批或生产流转后,批次签带显示的原料类型与实物板段棒签不一致。同一工序可能存在多条并行原料输入,因此也可能发生真实混料。该问题当时决定暂缓,只有再次出现并取得可复现样本时再继续调查。
已确认的代码风险
WMaterial.locked_get_or_create(apps/utils/models.py)命中既有行时直接返回,不会应用 defaults。在 apps/wpm/services.py 的合批或流转逻辑中:
material_ofrom、batch_ofrom、number_from只放在defaults。- 定位既有行的键不包含
material_ofrom。
因此,一旦命中相同业务键的旧行,后续不同原料流入时,material_ofrom 可能继续保留首次建行时的值。该字段又是单个外键,结构上无法表达混料。签带展示值来自 serializer 中的 material_ofrom_name。
历史样本结论
当时抽样数据中的相关 WMaterial 行已经归零,来源记录也指向原有材料;实物板段号在当前 WPM 相关表中没有找到。由此推测,实物棒签的材料源和板段号可能来自上游拉丝或滚圆子系统,单靠当前库无法闭环证明。
下次接续
再次出现时应先取得一个“实物棒签材料与批次签带材料不一致、且两者来源可在同一系统追踪”的批次样本,然后:
- 确认实物棒签由哪个系统和表生成。
- 用只读查询验证流转前后定位键是否命中旧行。
- 区分真实混料、上游标签来源和
defaults未更新这三种原因。 - 在复现前不要直接修改字段结构或流转逻辑。
查询时遵守 生产数据只读验证。