factory/.codex/memory/project_material_ofrom_merg...

1.7 KiB
Raw Blame History

合批原料 material_ofrom 历史排查

历史现象

曾出现合批或生产流转后,批次签带显示的原料类型与实物板段棒签不一致。同一工序可能存在多条并行原料输入,因此也可能发生真实混料。该问题当时决定暂缓,只有再次出现并取得可复现样本时再继续调查。

已确认的代码风险

WMaterial.locked_get_or_createapps/utils/models.py)命中既有行时直接返回,不会应用 defaults。在 apps/wpm/services.py 的合批或流转逻辑中:

  • material_ofrombatch_ofromnumber_from 只放在 defaults
  • 定位既有行的键不包含 material_ofrom

因此,一旦命中相同业务键的旧行,后续不同原料流入时,material_ofrom 可能继续保留首次建行时的值。该字段又是单个外键,结构上无法表达混料。签带展示值来自 serializer 中的 material_ofrom_name

历史样本结论

当时抽样数据中的相关 WMaterial 行已经归零,来源记录也指向原有材料;实物板段号在当前 WPM 相关表中没有找到。由此推测,实物棒签的材料源和板段号可能来自上游拉丝或滚圆子系统,单靠当前库无法闭环证明。

下次接续

再次出现时应先取得一个“实物棒签材料与批次签带材料不一致、且两者来源可在同一系统追踪”的批次样本,然后:

  1. 确认实物棒签由哪个系统和表生成。
  2. 用只读查询验证流转前后定位键是否命中旧行。
  3. 区分真实混料、上游标签来源和 defaults 未更新这三种原因。
  4. 在复现前不要直接修改字段结构或流转逻辑。

查询时遵守 生产数据只读验证