aps-agent/docs/round-87-master-data-closeo...

84 lines
7.3 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.

# 第87轮交付:主数据改得对、排产用得上
日期:2026-09-09。结论:本轮软件改动和验收完成,已应用回用户当前项目工作区。
代码验证提交:`48b5a8cbc3bb123df77be679f22bca3992d62a36`。独立分支 `codex/round-87-master-data` 保存实现和审查历史;截至 2026-09-09,当前项目 main 仍为 `f9873ee`,没有创建 main 提交、修改暂存区或推送。
## 1. 完成的行为
- 聊天附件保存完整原文件到当前项目,检查/采用/维护/试排使用同一个来源。
- 锐扬16表结构识别,45物料、15设备、42用料关系、15工艺、26人员、5在制、2班次/1维护完整保留;5正式订单与1沙盒插单分开。
- 在途420、12条关键料、损耗、工时来源、21天计划周期及24小时冻结得到结构化保存与消费。
- 资料检查不提前改主数据,确认采用后再维护;相同原文件重复导入不覆盖维护,不同版本在原项目拒绝静默覆盖,需独立项目核对或后续差异审核。
- 导入后物料/设备/BOM/工艺使用稳定编辑编号;普通维护同步到柔性排产输入,历史版本和工单保持。
- 周末模板正确生成,并按真实设备区域限定范围;人员、在制、设备维护、午休/跨夜休息、库存与真实到货日期参与实际排程。
- 原表资料不足时按订单明确阻断;多批在制或剩余量不明确不覆盖、不猜测、不从零重复全量排。
- 复查已采用资料显示当前维护结果;原文件的问题另作历史记录。无工单时显示5单待补资料,不提示下载完整生产计划。
- 等待确认时隐藏重复排产快捷操作;修复新建项目临时会话竞态;桌面和手机完成上传、采用、工艺编辑及刷新恢复。
## 2. 最终验证
| 验证 | 结果 |
|---|---|
| 冻结代码全量 pytest | **2270 passed / 54 skipped / 5 warnings,0 failed,0 errors**;789.89秒 |
| 当前项目回写后的关键测试 | **57 passed / 1 warning**;13.44秒 |
| 实际源文件维护→试排脚本 | **PASS**;原始数据阻断与明确隔离补充的正向场景均通过 |
| 真实浏览器桌面1440×900、手机390×844 | **2 passed**;18.7秒;业务网络未模拟,仅登录为测试provider;无控制台错误 |
| Node | **63 passed / 1 skipped / 0 failed**;跳过的是未构建NSIS安装包的发现测试 |
| Web构建 | 独立工作区和当前项目均通过,输出同一JS/CSS构建文件 |
| 独立审查 | **AUDIT PASS**;7项可复现发现全部修复并复验 |
| 新增核心模块静态检查 | Ruff通过;git diff --check通过 |
| 源文件/工作区保护 | 源Excel SHA不变;原工作区19个已有文件在回写前逐项校验,回写46文件与测试树逐字节一致 |
54个Python跳过来自各自现有外部数据/环境条件;本轮指定锐扬原文件的验收不跳过。没有进行真实ERP/MES/WMS生产写入、正式授权或桌面安装包发布验收。
全量首轮发现的机器路径、旧DXF测试前置缺失和运行中脚本接口变更均已处理,失败范围508项先通过,再从冻结代码重新完整运行;最终结论只采用最后全量的通过结果。
## 3. 维护确实改变计算的证据
| 操作 | 实际结果 |
|---|---|
| 修改普通工艺工时 | 对应运行分钟88.9→177.8 |
| 库存和在途清零,再补回 | 缺料时0工单,补回后4工序;就绪提示与求解一致 |
| 停用A00047 | 新方案不分配该设备 |
| 保留/移除8月10日维护的隔离对照 | 有维护使用A00048,无维护可用A00047 |
| 普通周模板启用周末 | 实际开工8月10日08:00→8月8日08:00 |
| 保留已完成CUT | 仅排SO-001后续4工序,不重复已完成工序 |
| 保留运行中占用 | 后续任务需等原在制占用释放 |
| 再次排产 | 使用当前维护值,无再次导入;旧版本/输入快照/工单保持 |
正向场景明确在隔离内存世界选择SO-001,补测试喷涂人员及对应库存,按需启用周末。补充清单保存在运行证据的 supplements 字段,未修改原Excel,不能解释为客户已经确认这些值。
## 4. 原始资料仍需确认
原表明确注明订单、客户、库存、标准工时包含演示补充。本轮保留这一来源边界。
- 人员表缺喷涂技能。
- WIP-004引用A00247,但设备表没有该设备。
- 部分在制任务缺少剩余数量及前序完成确认。
- 原始日期为2026-08-04,使用历史日期回放,不把它当作今日新订单。
原始5单因此正确显示待补资料。本轮完成的是可靠导入、维护与实际消费闭环,未宣称原表已经满足生产放行。
## 5. 使用方式
在当前应用中新建一个锐扬项目,通过聊天附件上传用户指定的 `湖南锐扬APS精简演示数据.xlsx`,发送“分析一下数据文件”,核对资料后点击“确认采用资料”。在主数据中修改库存、工艺或设备,再发送“根据这些数据排产”;系统使用已维护的值并说明仍影响试排的问题。
可复跑独立脚本:`python scripts/round87_masterdata_e2e.py --source <用户指定工作簿> --output <证据文件>`。源文件缺失或哈希不匹配会直接失败,不使用替代样本。
详细背景见 [主数据专项审查](product/master-data-completion-audit-2026-09-09.md)、[源工作簿基准](product/ruiyang-workbook-intake-baseline-2026-09-09.md)、[独立审查报告](round-87-independent-audit.md)。前两份是整改前问题记录,以本交付报告为本轮完成状态。
## 6. 交付与保留状态
实现采用三个可互通子Agent:完整导入、主数据一致性、排产消费;完成后增加跨片独立审查和真实浏览器测试。
用户原main工作区的既有改动先保存基线,再在独立工作区实施。全量/浏览器/实际数据验证后,只将经过验证的文件改动应用回当前工作树,未推进main分支或暂存文件。回写前原文件备份、哈希清单、完整日志和6张浏览器截图保存在本轮独立 evidence 目录。独立分支和工作树作为恢复点保留。
2026-09-14:用户要求将当前工作区中已验证的集成改动整理为本地 Git 提交。该提交只在本地 `main` 创建,不推送、不合并、不发布。
本轮测试端口18787/18788已停止且无监听。自动审批以“blocked by policy”拒绝删除已识别的临时测试目录,因此这些目录保留;没有改用其他方式绕过。测试用旧DXF副本仅用于既有回归,留在独立工作树的忽略目录,未进入用户锐扬项目或Git提交。
## 7. 2026-09-13 语义变更(试排假设)
用户实测反馈「排产未排出来」后,试排(trial)语义调整:导入侧 `dueDate` 改为日期归一化比较(Excel 日期单元格不再误报 `SANDBOX_CONFLICT` 整份拒收);算法侧把「未登记人员技能」「在制剩余量/结束时间/前序/资源未确认」等在制事实类问题降级为显式 `ASSUMPTION`,真实物料短缺仍阻断。因此原始工作簿不再 5 单全灭:试排实测 `SO-002/003/005` 排出、`SO-001/004` 因真实缺料阻断、15 个工单、10 项试排假设、`solveStatus=PARTIAL_WITH_ASSUMPTIONS`。正式链路(`trial=False`)语义不变;本文第 4 节「原始 5 单全部待补资料」为 2026-09-09 当时结论,以本节为准。