aps-agent/docs/product/ruiyang-data-runbook.md

69 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 锐扬现场数据接入手册(MOM 主数据收集表 → APS 排产)
> 适用:湖南锐扬创科智能科技有限公司 · 项目「新工厂排产项目」。
> 配套实现:`server/aps_domain/importers.py`(round-55/57 模板识别 + 制造流程提取)与 `server/aps_domain/folder_pack.py`(round-61 非排产块跳过统计、round-63 结构化诊断与真实 Excel 行号)。
## 1. 工程目录
- 目录:由 `RUIYANG_DEMO_DIR` 指定
- 系统会自动扫描该目录下的 `.xlsx/.xlsm/.csv/.txt/.sql`(跳过 `~$` 临时文件)。
- 放好数据后,在工作台说「**给我模拟排产一下**」或「**带我排一版**」,系统先分析数据齐备度,再出 P2 确认卡(导入 + 试排,可回滚)。
## 2. 主数据收集表 sheet 映射(round-55/57/61/63)
| 文件 sheet | 内容 | 导入类型 | 说明 |
| --- | --- | --- | --- |
| 02-工艺模型 | 物料清单(BOM/物料) | 物料 + **工艺路线** | 每行 = 一个物料(ERP品号→编码、产品名称→名称);**第 17 列「制造流程」= 工艺代码序列**(如 `ZP01组装 / LM01POP拉铆 / BZ01机柜包装`,次行 01..12 为工序序号)→ 自动提取为工艺路线 |
| 04-物料模型 | 物料主数据 | 物料 | 「物料主数据」块第 5 行起为真实表头;物料组名称(成品/半成品/原材料)→类型;规格型号→spec |
| 07-设备模型 | 设备台账 | 设备 | 财务编号/固定资产编号/厂内编号→设备编码(最后一个非空值优先,空别名不覆盖已有编码)、设备名称→名称;无「可执行工序」列时暂记 GENERAL(需后续确认) |
| 01/03/05/06/09/10 | 工厂/质检/仓储/人力/客户/供应商 | 不导入 | 非排产数据块,已跳过且不计问题行;原始行数单独计入 `skippedRows`,不影响其余有效行入库 |
**字段别名**(圆括号内为系统标准字段,表头自动匹配):
- 编码:ERP品号 / 财务编号 / 固定资产编号 / 厂内编号 / 物料编码 / 物料代码 / 编码(code)
- 名称:物料名称 / 物料简称 / 产品名称 / 名称(name/name/productName)
- 数量:单套用量 / 数量 / 用量(quantity)
- 类型:物料组名称 / 物料类型 / 类型(type)
- 其他:单位、库存、规格型号(spec)、交期、订单号、客户、优先级、加急(isRush)
## 3. 订单表(样例已就绪)
现场表没有订单 sheet;排产必须有订单。请在该目录新增一个订单表(CSV 或 Excel 均可),列名按下表:
| 列名 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- |
| 订单号 | 是 | 唯一编号 | SO-RY-20260801 |
| 客户 | 是 | 客户/项目名称 | 比亚迪 |
| 产品编码 | 是 | 必须是 02/04 表里的成品编码(如 A0050101-00280) | A0050101-00280 |
| 数量 | 是 | 整数 | 1 |
| 交期 | 是 | YYYY-MM-DD(**不能留空**) | 2026-08-30 |
| 优先级 | 否 | 1-9,默认 5 | 5 |
| 加急 | 否 | 是/否 | 否 |
已放置样例:`订单-样例.csv`(改掉示例行即可;导入前系统会校验产品编码/数量/交期,错误行不入库)。
> 2026-08-02 round-63 全链路复核:订单样例入目录后,目录分析得到 **有效行 1404 / 问题行 1 / 跳过 974**。结构化诊断为 ignored 979(974 非排产块 + 5 内嵌表头/字典行)、warning 181(134 台设备暂按 GENERAL + 47 行重复编码列恢复)、blocking 1。唯一阻塞是 `07-设备模型` **Excel 第 130 行**“3.8吨锂电叉车”:财务编号、固定资产编号、厂内编号均为空;出厂编号仅保留审计,不冒充业务编码。
## 4. 排产必备清单(当前状态 2026-08-02)
| 必备项 | 状态 | 说明 |
| --- | --- | --- |
| 物料 | ✅ 823 行 | 02 工艺模型 415 + 04 物料模型 408 |
| 工艺路线 | ✅ 446 行 | 02 制造流程列提取(如 ZP01组装→ZP01/组装) |
| 设备 | ⚠️ 134 行可导入 / 1 行阻塞 | 134 台缺工序能力时暂按 GENERAL;Excel 第 130 行设备业务编码全空,修复后即可消除唯一问题行 |
| 订单 | ✅ 样例就绪 | `订单-样例.csv` 已入目录,目录分析显示「可开排」;**替换为真实订单后即可开排** |
## 5. 注意事项
- **工时**:现场表无工时列,工艺路线默认按 1 分钟/件兜底;需要准确排产请补「工时」列(表头:产品编码/序号/工序编码/工时[分钟])或单独工时表。
- **问题行、诊断与跳过行**:**非排产数据块已跳过且不计问题行**;`totalErrors` 只统计 blocking;结构行记 ignored、可恢复别名和 GENERAL 兜底记 warning,均不膨胀问题行。非排产块原始行数仍单独计入 `skippedRows`。每条诊断保留真实 `sheet + excelRow + rawSummary`,现场可直接回到 Excel 修复。
- **确认卡**:P2 需人工确认(批准后写入柔性主数据并试排一版,可回滚);JMS 登录用户默认 planner 角色可发起/批准(round-56)。
- 端到端路径:放文件 → 「带我排一版」→ 目录分析 → P2 确认 → 试排一版 → 甘特/负荷/交期看板。
## Round 65 闭环验收(2026-08-03)
1. 复制现场 world 到内存/临时目录,不对 `server/data/**` 执行 P1/P2/P3 写入测试。
2. 按 2026-08-02 历史验收日与 2026-08-03 当前日分别重算,数量均为 106 MAKE / 124 BUY / 0 SUBCONTRACT。
3. 当前主数据必须阻断:39 缺工艺、67 模板/缺资源能力、124 供应短缺/草稿供应不可信;新版本 0 VL/WO。
4. 只有工厂补齐正式工艺、ASM 能力、班组/模具、可信到货日期后才可重跑并进入 P2。
5. 证据文件:`docs/round-65-aps-end-to-end-runtime-final.json`;当前源 world 在隔离运行前后 SHA-256 一致。历史基线 hash 与 2026-08-03 10:10:24 的旧订单 GET 写入事件分开记录,禁止把该历史漂移伪称为本轮未发生。