# 康尼映射表数据验证报告(阶段 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](./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/工时回填问题解决后重跑。