aps-agent/docs/demo/ruiyang-demo.md

6.0 KiB
Raw Permalink Blame History

锐扬案例一键演示数据链路

1. 目标

基于 RUIYANG_DEMO_DIR 指向的真实目录,完成:

  1. 解析案例文件夹并盘点 XLSX/DXF;
  2. 使用正式 mom_pack 导入器生成 flex 主数据;
  3. 使用正式同步函数生成 canonical 主数据;
  4. 执行多层 BOM MRP 分解;
  5. 输出严格闭环准入诊断;
  6. 在显式、可审计的演示假设下生成生产订单和工单;
  7. 将完整 world 和订单面板数据写入 outputs/ruiyang-demo,供后端/桌面端接入。

脚本不修改活动项目 world,不修改 server/、前端或桌面核心。

2. 真实文件盘点(2026-08-05)

  • 湖南锐扬MOM主数据收集表.xlsx:9 个工作表。
  • DXF:3 个。
    • 5060102101-001-e(1).dxf
    • 5060102101-002-e(1).dxf
    • 5060102101-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 >= 3
  • bomItems >= 42
  • routings >= 3
  • routingSteps >= 15
  • canonical.bomItems == flex.flexBom
  • canonical.routingSteps == flex.flexRoutings
  • canonical.materials == flex.flexMaterials
  • canonical.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 中:

  • salesOrders
  • makeSuggestions(输出面板键为 make)
  • purchaseOrders
  • outsourceOrders
  • productionOrders
  • workOrders

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. 桌面端接入边界

桌面端只需负责两件事:

  1. 安装包中提供“一键准备锐扬案例”入口,执行 scripts/run-ruiyang-demo.ps1 或等价 Python 命令;
  2. 后端加载 outputs/ruiyang-demo/world-ruiyang-demo.json 后刷新订单/主数据/排产视图。

本数据链路不直接修改当前活动 world,避免覆盖用户已有项目。