工艺
这是一个用于注册产品经过哪些工艺、顺序如何、该工艺包含哪些设备以及设备之间的流动关系的界面(공정)。
如果说层级树(企业 → 站点 → 区域 → 线体 → 设备)说明的是**「谁属于谁」,那么这个界面说明的则是「什么流向什么」**。
链条是单向的 — 因此标签页顺序即为阅读顺序
제품 → 경로 → 단위 공정 → 설비 → 설비 간 연결
| 标签页 | 决定内容 | 回答的问题 |
|---|---|---|
| ① 产品路径 | 产品经过的单位工艺顺序 | 「这个产品是如何制造的」 |
| ② 单位工艺 | 工艺的定义 — 名称与所属设备 | 「包装工艺是什么,包含哪些设备」 |
| ③ 连接图 | 设备之间的流向与依赖 | 「如果该设备停止,影响范围到哪里」 |
由于很多人首先关心一个产品是如何制造的,因此 ① 是第一个界面。如果您想直接查看设备图,可以直接前往 ③。
「包装」工艺在产品 A 中可能是第 3 步,在产品 B 中可能是第 2 步。因此,顺序是由产品路径而非工艺决定的。 如果在工艺侧记录顺序,将无法同时描述两种产品。
① 产品路径

| 数字 | 位置 | 功能 |
|---|---|---|
| ① | 标签行 | 产品路径 · 单位工艺 · 连接图 三项 |
| ② | 左侧「产品」 | 产品列表。侧边的数字为阶段数,「–」表示尚未设置路径 |
| ③ | 中间阶段列表 | 通过上下箭头更改顺序,通过 × 移除阶段 |
| ④ | 下方选择行 | 选择工艺并通过 + 添加阶段 |
| ⑤ | 右上角 | 「保存路径」 |
在 ③ 和 ④ 中进行的操作仅为界面内的草稿。在点击保存之前,没有任何数据发送到服务器 — 这与那些修改即保存的其他界面不同。
在未保存状态下,列表下方会出现**「尚未保存」**提示。如果看到该行,说明数据尚未提交。
保存操作是将整个列表而非单个阶段一次性发送。因此,服务器端仅有一处负责编排阶段编号。
④ 的选择行可能会被锁定并显示「没有更多可添加的工艺」。这种情况发生在该产品已经遍历了该站点所有工艺时 — 同一个工艺不能在一条路径中出现两次(参考边界)。
② 单位工艺

| 数字 | 位置 | 功能 |
|---|---|---|
| ① | 标签行 | 「单位工艺」 |
| ② | 左侧「工艺」 | 工艺列表。通过 + 创建,通过铅笔修改名称和说明,通过垃圾桶删除。侧边的数字为所属设备数量 |
| ③ | 「所属设备」 | 包含在该工艺中的设备。从选择行选择并通 + 添加,通过芯片的 × 移除 |
| ④ | 「使用该工艺的产品」 | 只读 — 由产品路径推导出的值 |
「使用该工艺的产品」是由路径推导而来的。如果在两处都允许修改,产品顺序将被记录在两个地方,即使两者不一致也不会有任何红色预警。因此,我们将路径统一为唯一入口。
所属设备也可以在 ③ 连接图的检查器中进行添加或移除。这两个入口修改的是同一张表,无论在任何一侧修改,结果均一致。
③ 连接图

| 数字 | 位置 | 功能 |
|---|---|---|
| ① | 标签行 | 「连接图」 |
| ② | 左侧「工艺筛选» | 仅缩小显示范围 — 仅使所选工艺的设备变亮。创建·修改·删除操作在 ② 单位工艺标签页中进行 |
| ③ | 画布左上角工具栏 | 缩小 · 放大 · 还原尺寸 · 适应屏幕 · 删除选中节点 |
| ④ | 左下角小地图 | 点击可跳转至该位置 |
| ⑤ | 下方图例 | 供给(蓝色) · 依赖(橙色) |
| ⑥ | 右侧「选中设备」 | 所属工艺 · 生产产品(只读) · 连接 |
| ⑦ | 右侧「下游影响」 | 若该设备停止,后续哪些内容会受到影响 |
页面右上角的**「保存布局」仅在此标签页可见 — 该按钮用于保存节点的坐标**。关系或所属关系的更改是即时生效的,与此按钮无关。
两种关系
| 关系 | 含义 | 线条颜色 |
|---|---|---|
| FEEDS (供给) | 上游向下游流动 | 蓝色 |
| DEPENDS_ON (依赖) | 依赖于电力 · 空气 · 冷却等公用设施 | 橙色 |
两者均仅在设备与设备之间建立。工艺并非画布的节点,而是附着在设备上的标签,而产品则通过路径定义。
连线方法
每个节点的左侧白色圆圈是«接收»端口,右侧圆圈是«发送»端口。
| 拖拽起点 | 创建的关系 |
|---|---|
| 右侧蓝色圆圈 | FEEDS (供给) |
| 右侧橙色圆圈 | DEPENDS_ON (依赖) |
🔴 开始拖拽的端口决定了关系类型。 放置线条后没有选择类型的步骤 — 从蓝色圆圈开始即为供给,从橙色圆圈开始即为依赖。
必须放置在相对节点的«左侧白色圆圈»上才能连接。放置在节点主体上无法连接。
除了拖拽,也可以在 ⑥ 检查器的「连接»节中选择添加。当对象在屏幕外或仅使用键盘时,此方式更为方便。
此规则同时在界面端和数据库端实施。界面端提前拦截是为了方便用户,即使界面未拦截,服务器也将拒绝该请求。
画布操作
画布的尺寸随绘制内容的扩展而增大。因此会出现水平和垂直滚动条。
| 操作目标 | 方法 |
|---|---|
| 移动画面 | 点击并拖拽空白背景(平移) |
| 移动节点 | 拖拽节点主体 |
| 放大 · 缩小 · 还原 · 适应屏幕 | ③ 工具栏 |
| 一键跳转至远处 | ④ 小地图 |
拖拽空白背景则画面移动,拖拽节点则节点移动 — 如果混淆两者,可能会产生「节点无法选中」的错觉。
无论如何滚动画布,工具栏和小地图都不会随之移动。小地图位于左下角是为了与流程编辑器保持一致,方便在两个界面间切换时,无需在两处寻找小地图。
路径是单一的有序列表
路径中特意排除了两类内容。数据库约束会直接拦截:
| 无法记录的内容 | 拦截约束 |
|---|---|
| 单一阶段内的并行 — 一个阶段包含两个工艺 | 主键 (product_id, step_no) — 一个阶段仅限一个工艺 |
| 回流(再投入) — 同一个工艺出现两次 | 唯一键 (product_id, segment_id) — 一条路径仅限一次 |
「如果有两台封盖机该如何绘制」 — 将两台设备都放入封盖工艺中,并在连接图中将上游设备分别与两台设备建立 FEEDS 关系即可。分支在设备层可见,而路径仅在上方按顺序经过。
如果要创建分支或再投入,则需要记录「是两者皆是还是两者择其一」等信息,这属于上级 MES 与作业指令 · 业绩 · LOT · BOM 一起管理的领域。如果后续需要,可以通过扩展为干线表来实现,且目前输入的数据可原样迁移 — 这并非功能缺失,而是特意未纳入。
绘制数据的用途
- 下游影响查询 — 沿着
FEEDS追踪以回答「若该设备停止,影响范围到哪里」(⑦)。 - AI 助手 — MCP 的关系图谱检索读取相同的关系 → MCP 服务器
- API — 可通过程序读取和写入路径与关系。
| 操作目标 | 端点 |
|---|---|
| 读取产品路径 | GET /api/v5/product/{product_id}/route |
| 整体更改产品路径 | PUT /api/v5/product/{product_id}/route — 正文 {"segment_ids":[…]} |
| 读取设备生产产品(推导值) | GET /api/v5/asset/{asset_id}/product |
空的 segment_ids 是删除路径的正常编辑行为。 «无产品»(404) 与 «无路径»(200, 空列表) 将被维持为不同的响应。
在未注册关系的站点查询下游影响时,将返回空结果。这表示**「没有绘制关系»**,而非「没有影响」。API 响应中会通过独立标识区分这两种状态。