4. 产品谱系建模基础
产品谱系建模是质量追溯系统的“骨架工程”。它要回答的核心问题不是“产品叫什么”,而是“这个产品由谁构成、被谁装配、经历了哪些版本变化、在何时何地发生了状态迁移”。只有把谱系关系建模清楚,追溯查询才能从“查一个批次”升级为“沿关系网络精准定位影响范围”。本节围绕谱系树、父子关系、装配关系、版本演化与谱系数据模型五个关键概念展开。
一、核心原理:谱系是带语义的关系网络
谱系(Genealogy)本质上是一张有向关系图。节点代表可追溯对象,如原材料批次、零件、组件、整机、软件版本、工艺版本;边代表对象之间的语义关系,如“由……装配而成”“替代”“返修”“升级”“拆分”。谱系树是这张图在某一视角下的投影:当只关注“整机—部件—零件—材料”的组成关系时,它呈现为树;当引入版本、替代、返修等横向关系时,它更接近有向无环图(DAG)。
因此,谱系建模的第一原则是:节点标识唯一,边语义明确,时间有效可查。节点标识通常采用“对象类型 + 业务主键 + 版本号”的组合;边语义必须区分装配、供应、替代、返修、软件烧录等不同关系;时间有效性则要求每条关系记录生效时间与失效时间,避免“当前状态覆盖历史状态”。
谱系建模三要素:唯一节点标识(Who)、明确关系语义(How)、有效时间区间(When)。缺少任何一项,追溯结果都可能出现歧义或断链。
二、父子关系与装配关系:从结构到语义
父子关系是谱系树的基本结构。父节点表示装配体或上层产品,子节点表示其直接组成部分。父子关系通常携带数量、单位、装配工位、装配时间、操作人员等属性。例如,一台电机(父)由定子总成、转子总成、端盖、轴承等(子)组成,每个子件还带有批次号和序列号。
装配关系比父子关系更具体,它描述“谁在什么时间、什么工位、用什么工艺、把哪些子件装到了哪个父件上”。在数据模型中,装配关系往往表现为一条“装配事件”记录,连接父件实例与多个子件实例,并附带工艺参数和检验结果。父子关系是静态结构,装配关系是动态事件;前者回答“由什么组成”,后者回答“如何组成、何时组成”。
实际建模中,建议将父子关系与装配关系分层存储:结构层维护 BOM 式的组成定义,事件层记录每一次实际装配。这样既能支持设计变更后的结构对比,也能支持单台产品的精确追溯。
三、版本演化:谱系不是静态树
产品在生命周期中会经历设计变更、工艺优化、软件升级、物料替代和返修。版本演化建模的关键是区分“对象版本”与“关系版本”。对象版本描述某个零件或软件从 V1 到 V2 的变化;关系版本描述“某父件在某个时间段内使用某子件的哪个版本”。
常见的版本演化模式包括:
- 线性升级:V1 → V2 → V3,旧版本失效,新版本生效。
- 分支并行:同一产品面向不同市场或客户,形成 V2-A、V2-B 分支。
- 替代关系:物料 A 因缺料被物料 B 替代,二者在功能上等效但批次不同。
- 返修回流:已交付产品返修后更换子件,谱系中新增一条返修装配边,而非覆盖原边。
版本演化的数据模型通常采用“有效期 + 版本号 + 变更单”三件套。任何一次版本切换都应关联变更单号,确保追溯时能回答“为什么换、谁批准、影响哪些批次”。
四、谱系数据模型:表结构与关系设计
一个可落地的谱系数据模型至少包含对象表、关系表和事件表。对象表存储产品、零件、物料、软件版本等主数据;关系表存储父子、装配、替代、返修等边;事件表存储装配、检验、返修、升级等业务动作。三者通过对象标识关联,形成可查询的谱系网络。
| 模型要素 | 典型字段 | 作用 |
|---|---|---|
| 对象表 | 对象ID、类型、名称、版本号、批次号、序列号 | 定义可追溯节点 |
| 关系表 | 父对象ID、子对象ID、关系类型、数量、生效时间、失效时间 | 描述结构与替代关系 |
| 事件表 | 事件ID、事件类型、父对象ID、子对象ID、工位、时间、操作人、工艺参数 | 记录装配与变更过程 |
| 变更单表 | 变更单号、变更类型、影响对象、审批人、生效时间 | 支撑版本演化审计 |
在查询层面,谱系数据模型需要支持向上追溯(从整机查子件)、向下追溯(从材料查影响整机)和横向追溯(从替代料查同效批次)。这要求关系表建立双向索引,并对时间区间做有效过滤。
-- 示例:查询某整机在指定时间点的完整装配谱系
SELECT child.object_id, child.name, child.version, rel.relation_type
FROM genealogy_relation rel
JOIN genealogy_object child ON child.object_id = rel.child_id
WHERE rel.parent_id = 'MOTOR-2024-0001'
AND rel.relation_type = 'ASSEMBLY'
AND '2024-06-01' BETWEEN rel.effective_from AND rel.effective_to;
五、案例场景:电机装配谱系追溯
某电机制造企业生产一批工业电机,整机序列号为 MOTOR-2024-0001。其装配谱系如下:整机由定子总成、转子总成、前端盖、后端盖和轴承组成;定子总成又由硅钢片批次、漆包线批次和绝缘材料批次组成。若客户反馈某台电机温升异常,追溯系统需要沿谱系向下查询:该整机使用了哪些漆包线批次?这些批次还装配到了哪些其他整机?如果发现某漆包线批次存在绝缘缺陷,系统应能快速圈定所有受影响整机,而不是只查单台。
在这个场景中,父子关系提供结构导航,装配关系提供事件证据,版本演化提供变更上下文,数据模型提供查询能力。四者缺一不可。
六、误区与复盘
常见误区一:把谱系树当成静态 BOM。BOM 只描述“应该由什么组成”,谱系必须记录“实际由什么组成”。若只维护 BOM,返修、替代、临时换料就无法追溯。
常见误区二:用当前版本覆盖历史版本。版本演化必须保留时间维度。一旦覆盖,历史批次就无法还原当时的真实结构。
常见误区三:关系类型混用。把“替代”和“装配”存在同一字段,会导致查询时无法区分等效替换与真实组成,影响召回范围判断。
复盘建议:建模初期先画出三条主线——结构线(父子)、事件线(装配)、变更线(版本)。每条线独立建表、独立索引,再通过对象标识关联。这样既能保证查询性能,也能让追溯逻辑清晰可维护。
总结来看,产品谱系建模的核心不是画出一棵树,而是建立一套“节点可标识、关系有语义、时间可回溯、查询可双向”的数据基础设施。谱系树提供结构视角,父子关系提供组成逻辑,装配关系提供事件证据,版本演化提供变更上下文,谱系数据模型则把这些要素组织成可计算、可查询、可审计的整体。只有这五者协同,质量追溯才能从单点查询走向全链路影响分析。