aps-agent/docs/development/kangni-mapping-validation.md

8.6 KiB
Raw Blame History

康尼映射表数据验证报告(阶段 A)

Round 76 更新:下方“2/10 订单”是阶段 A 历史基线,已被当前 10/10 导入与 Web 试排结果替代;设备/模具现场映射缺口仍然有效。

Round 76 当前结果

  • 订单:10/10;工艺记录:72;唯一工序:26;工时来源:72/72 为 工时.xlsx。
  • BOM:965 条源行,按产品/物料投影后 823 条。
  • BOM 对账:84 条差异用量按“订单+物料+消耗工序”显式求和,58 条完全重复记录去重;不同消耗工序分别保留。
  • 资源:41 台设备、40 套模具;40 台真实设备仍无工序能力,40 套模具仍缺工序/设备/寿命映射。
  • 本地 trial:10 VL / 72 WO / 10 DELAY;当前共享设备占位下总延期约 33,576.13h、利用率 0.167,只作诊断。
  • Web:新建项目 -> 上传 9 份 XLSX -> 分析 -> “根据这些数据排产” -> P2 -> 五策略 -> MPS trace/gap -> 订单/设备导出已实测通过。
  • 数据保护:9 份源 Excel 与上传副本 SHA-256 一致;只读 CLI 前后默认 world.json 不变。
  • 操作手册:kangni-real-data-browser-runbook.md。

已解决的历史问题:

  • Sheet2-Sheet9 不再按 sheet 名猜订单;工艺按工时规范序列匹配,BOM 按结构化工单编号归集。
  • 主订单标准工时优先回填 工时.xlsx,不再保留 45/30 分钟推断值。
  • 映射模板兼容带括号说明的表头。

仍待现场完成:设备-工序真实能力、模具-工序/设备/寿命、库存/在途、可动率、移动/换型和班次参数。

  • 日期:2026-08-17
  • 角色:康尼真实数据验证工程师(sub-agent)
  • 工作区:当前仓库根目录
  • 数据目录:KANGNI_DATA_DIR(不在 git 内)
  • 运行命令:.\.venv\Scripts\python.exe -X utf8 scripts/load_kangni.py --with-siblings --no-persist

阶段 A 历史结果(已被 Round 76 替代)

导入与排产成功,映射表被实际读取:

  • 订单数:2 / 10(主订单 102285668 + 同源订单 102289293)
  • 设备数:41 台(40 台来自 设备.xlsx + 1 台共享装配设备占位)
  • 模具数:40 套(全部来自 模具.xlsx)
  • 工序种:10(仅已导入 2 个订单的并集;真实源表共 26 道)
  • VL / WO:2 / 20
  • 冲突:2(均为 MAJOR DELAY)
  • 总延期:921.31 h
  • 利用率:0.0612
  • 关键推断:设备能力映射表已读取(41 台)、模具适配映射表已读取(40 套)
  • 全部工序落在共享设备 EQ-SHARED-CG-01 上,符合“保守假设 + 待现场确认”口径

生成 / 修改文件

  • %KANGNI_DATA_DIR%\设备能力映射模板.xlsx(新建,非 git)
  • %KANGNI_DATA_DIR%\模具适配映射模板.xlsx(新建,非 git)
  • docs/development/kangni-mapping-validation.md(本报告)
  • tests/golden/test_kangni_mapping_validation.py(解析契约测试)

未修改 server/**、apps/web/**、docs/CHANGELOG.md、docs/product/**、康尼项目/*.xlsx, 也未覆盖用户目录中已生成的两份模板。

数据口径与假设

  • 真实工序编号:来自 工时.xlsx 10 个订单 sheet,共 26 道;工艺路线.xlsx 的 Sheet2-9 与 BOM 的 工单编号 对应后 8 个订单,工序集合与工时表一致。
  • 真实标准工时:采用 工时.xlsx 每道工序在各订单中的最大值(分钟/件),写入共享设备行的“单件工时”。
  • 设备:40 台真实设备全部入表,可执行工序编号 留空,状态按源表 启用/停用 映射为 RUNNING/MAINTENANCE;区域编码取源表工段编号,缺省 ZONE-CG。40 台中无装配类设备,因此不伪称能力。
  • 共享设备:EQ-SHARED-CG-01 共享装配设备(待现场确认) 为合成占位,覆盖全部 26 道工序; 这是保守假设,不代表任何真实设备已确认能力。
  • 模具:40 套真实模具全部入表,适用工序编号/适配设备编号/寿命上限/已用寿命 留空, requireMold=false,不占模具槽,全部标注“待现场确认”。
  • 可动率、是否可移动、移动耗时、换型耗时、班次日历均未取得现场值,使用保守默认值。

发现的问题

  1. 工艺路线.xlsx 和 BOM.xlsx 后 8 个订单位于 Sheet2-9,sheet 名不是订单号; parse_routing_sheet / parse_bom_sheet 仅按订单号查找 sheet,导致 --with-siblings 只导入 2 / 10 个订单。
  2. 主订单 102285668 从 outputs/.../订单102285668_完整生产路线.xlsx 解析时未回填 工时.xlsx 真实值,10 道工序仍按类型推断为 45 / 30 分钟;同源订单 102289293 已使用真实工时。
  3. 康尼项目/设备能力映射模板.xlsx、模具适配映射模板.xlsx 的表头带括号说明 (如 单件工时(分钟,工序:分钟;多值分号)、适配模具编号(逗号分隔)), 而 parse_equipment_capability_map / parse_mold_adaptation_map 的列别名不含括号, 导致这两份模板即使填写了单件工时、适配模具/设备,也会被解析为空。本次未修改该目录文件; 新建于 康尼/数据 的两份映射表使用解析器精确表头,已验证可完整解析。

缺什么

  • 设备 → 工序真实能力映射(当前仅共享设备占位)
  • 模具 → 工序 / 适配设备 / 寿命上限 / 已用寿命映射
  • 8 个订单的 sheet 命名或按 工单编号 列解析的导入支持
  • 主订单真实工时回填
  • 可动率、移动耗时、换型耗时、班次日历、库存 / 在途等现场参数

下一步

  • 由现场确认 26 道工序实际使用哪些设备/工装,再回填 康尼/数据 两份映射表;
  • 将工艺/BOM 的 Sheet2-9 重命名或增强导入解析(需 server 改动,本 sub-agent 不擅自改);
  • 补齐主订单工时回填后,重跑 10 订单全量导入并核对延期/利用率。

协作沟通记录

本 sub-agent 会话未暴露 multi_agent_v1__send_input 工具(函数列表与 MCP 资源均为空), 因此无法直接向 peer 发送消息。以下为已备好、供 supervisor/协调层转发的中文消息:

握手(发给 01a00bc6-091a-7110-a7d7-22604e1cdd85 MPS 计划台接线、 01a00bc6-2106-7831-bbcc-f722bcdf37ff 策略/导出增强):

我是康尼真实数据验证工程师。我的数据范围:康尼/数据 的工艺路线/工时/设备/模具/订单/BOM, 输出 设备能力映射模板.xlsx 与 模具适配映射模板.xlsx(40 真实设备 + 1 共享设备占位、 40 套真实模具,能力/适配均标注“待现场确认”)。预计在 2026-08-17 完成导入验证与报告。 请确认共享工作区可读可写;如你们涉及订单结构、设备/模具主数据口径,请同步告知。

完成摘要(发给两位 peer):

康尼映射验证完成。已生成/更新 康尼/数据 两份映射表并跑通 load_kangni.py --with-siblings --no-persist:读取 41 台设备、40 套模具, 2 订单/20 WO,冲突 2,总延期 921.31h,利用率 0.0612,全部工序走共享设备占位。 注意:真实源表共 26 道工序,但工艺/BOM 后 8 个订单在 Sheet2-9(sheet 名非订单号), 当前导入只覆盖 2 个订单;主订单工时仍为推断值;康尼项目模板表头带括号说明,解析器读不到 单件工时/适配模具/适配设备。需要你们在 MPS/导出侧按“2 订单 + 共享设备”口径处理, 完整 10 订单能力待现场确认后重跑。

2026-08-17 收到 supervisor 转发的 peer 01a00bc6-091a-7110-a7d7-22604e1cdd85(MPS 计划台接线) 握手与完成摘要:其范围为 client.ts/types.ts/PlanBucketsView.tsx MPS 页签、mps_api.py 契约小修、 test_mps_planning.py,不碰 engines/flex/reports/docs/康尼项目;persist/trace/gap 接线完成, mps_planning 9 passed + contract_sync 12 passed + build:web 通过;调用 /api/mps/persist 时 createdBy 请使用 LLM/USER/SYSTEM。已核对共享工作区存在对应未提交改动 (server/gateway/mps_api.py、server/aps_domain/mps_planning.py 等),与 peer 描述一致。

回复文本(供 supervisor 转发给该 peer):

收到,握手和完成摘要已确认。我的数据侧口径:26 道真实工序、40 台真实设备 + 1 台共享设备占位、 40 套真实模具,映射均标注“待现场确认”;load_kangni.py --with-siblings --no-persist 当前只导入 2 个订单,全部工序走 EQ-SHARED-CG-01。createdBy 我会按 LLM/USER/SYSTEM 口径使用,不额外引入自定义值。需要你们在 MPS 侧把 2 订单共享设备结果视为保守占位, 完整 10 订单待 Sheet2-9/工时回填问题解决后重跑。