6.0 KiB
6.0 KiB
锐扬案例一键演示数据链路
1. 目标
基于 RUIYANG_DEMO_DIR 指向的真实目录,完成:
- 解析案例文件夹并盘点 XLSX/DXF;
- 使用正式
mom_pack导入器生成 flex 主数据; - 使用正式同步函数生成 canonical 主数据;
- 执行多层 BOM MRP 分解;
- 输出严格闭环准入诊断;
- 在显式、可审计的演示假设下生成生产订单和工单;
- 将完整 world 和订单面板数据写入
outputs/ruiyang-demo,供后端/桌面端接入。
脚本不修改活动项目 world,不修改 server/、前端或桌面核心。
2. 真实文件盘点(2026-08-05)
湖南锐扬MOM主数据收集表.xlsx:9 个工作表。- DXF:3 个。
5060102101-001-e(1).dxf5060102101-002-e(1).dxf5060102101-003-e(1).dxf
- 3 个 DXF 文件名在 Excel 单元格中没有直接匹配,当前只做文件级盘点,不虚构图纸与物料关系。
3. 一键命令
PowerShell(桌面演示推荐)
powershell -ExecutionPolicy Bypass -File .\scripts\run-ruiyang-demo.ps1 `
-SourceDir $env:RUIYANG_DEMO_DIR `
-BusinessDate '2026-08-05' `
-ScheduleStart '2026-08-06' `
-DueDate '2026-09-04'
省略日期参数时,脚本以运行当天为业务日期,次日为排产起点,业务日期后 30 天为演示交期。
Python
python .\scripts\ruiyang_demo.py `
--source-dir "$env:RUIYANG_DEMO_DIR" `
--business-date 2026-08-05 `
--schedule-start 2026-08-06 `
--due-date 2026-09-04
4. 双投影硬门禁
脚本在 MRP 之前强制验证 flex/canonical 两套投影,任一失败立即退出:
boms >= 3bomItems >= 42routings >= 3routingSteps >= 15canonical.bomItems == flex.flexBomcanonical.routingSteps == flex.flexRoutingscanonical.materials == flex.flexMaterialscanonical.salesOrders == flex.flexOrders
完整原始 XLSX 当前实测为:
| 投影 | 数据量 |
|---|---|
| flexMaterials | 253 |
| flexBom | 383 |
| flexEquipment | 135 |
| flexOrders | 1 |
| flexRoutings | 400 |
| materials | 253 |
| boms | 119 |
| bomItems | 383 |
| routings | 80 |
| routingSteps | 400 |
| salesOrders | 1 |
这可以直接识别“会话回复已分解,但项目 world 只有 flex 数据、canonical BOM/工艺为空”的问题。
5. MRP 与订单面板预期
当前真实文件的稳定结果:
- 销售订单:1 张(源文件无销售订单号,演示号为
RY-DEMO-A0050101-00280)。 - 自制建议:106 条。
- 采购建议:124 条。
- 委外建议:0 条。
- 演示排产后生产订单:1 张。
- 工单:5 张,对应 CUT、BEND、WELD、PAINT、ASM。
订单面板应读取 07-order-panel.json 或 world-ruiyang-demo.json 中:
salesOrdersmakeSuggestions(输出面板键为make)purchaseOrdersoutsourceOrdersproductionOrdersworkOrders
6. 为什么严格闭环仍会 BLOCKED
真实文件当前存在以下正式准入缺口:
- Excel 没有销售订单交期,必须由演示参数补充;
- 当前导入器对 02-工艺模型的真实制造流程码尚未逐列解析,而是生成五道模板工艺;
- 67 个自制需求为未确认模板工艺;
- 39 个半成品缺完整工艺路线;
- 124 条采购记录是 DRAFT 建议,不能作为可信供应;
- ASM 在设备台账中没有原生能力标签。
因此 04-strict-readiness.json 保留正式 CLOSED_LOOP_V1 的阻断结果,不能把“演示可排”误报为“生产可发布”。
7. 演示适配层
为了让桌面演示完整走到生产订单/工单,脚本显式执行以下适配并写入 05-demo-adapter.json:
- 使用参数补充交期;
- 将根产品绑定到正式同步生成的“柔性能力池”;
- 从真实设备中选择:
- CUT:光纤激光切割机;
- BEND:数控折弯机;
- WELD:二保焊接机器人;
- PAINT:喷粉线设备;
- ASM:真实压铆机作为组装代理;
- 生成 08:00-17:00 演示白班;
- 默认按本次 MRP 净需求建立演示齐套快照。
不希望假设齐套时,使用:
powershell -ExecutionPolicy Bypass -File .\scripts\run-ruiyang-demo.ps1 -NoAssumeKitted
此时仍会生成排产草案,但会保留真实缺料冲突。
8. 输出文件
默认目录:outputs/ruiyang-demo
| 文件 | 用途 |
|---|---|
00-source-inventory.json |
XLSX/DXF 清单、大小、SHA-256、DXF 实体统计 |
01-field-mapping.json |
源字段到 flex/canonical 字段映射 |
02-import-projection.json |
导入结果、双投影计数和硬门禁 |
03-mrp.json |
自制/采购/委外建议及完整摘要 |
04-strict-readiness.json |
正式闭环准入阻断及原因 |
05-demo-adapter.json |
演示假设、真实设备映射、齐套假设 |
06-schedule.json |
排产版本、生产订单、工单、冲突 |
07-order-panel.json |
订单面板可直接消费的数据集合 |
compact-ruiyang-demo.json |
精简演示包:计数、样例、设备映射、1 张生产订单和 5 张工单 |
world-ruiyang-demo.json |
完整隔离演示 world |
summary.json |
一页式结果摘要 |
manifest.json |
输出文件大小和 SHA-256 |
9. 验证
python -m pytest tests/golden/test_ruiyang_demo_flow.py -q
PowerShell 一键脚本在生成后会自动执行 scripts/verify_ruiyang_demo.py,校验源目录、2026-08-05 业务日期、双投影、MRP、生产订单/工单和全部输出哈希。
Golden 测试使用真实 XLSX,并重复验证:文件盘点、双投影、MRP 数量、严格闭环阻断、真实设备映射、精简包、生产订单/工单以及输出哈希。
10. 桌面端接入边界
桌面端只需负责两件事:
- 安装包中提供“一键准备锐扬案例”入口,执行
scripts/run-ruiyang-demo.ps1或等价 Python 命令; - 后端加载
outputs/ruiyang-demo/world-ruiyang-demo.json后刷新订单/主数据/排产视图。
本数据链路不直接修改当前活动 world,避免覆盖用户已有项目。