aps-agent/docs/product/master-data-completion-audi...

81 lines
8.7 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.

# 主数据完成度专项审查
日期:2026-09-09;当前 main 工作区。作为 application-completion-audit-2026-09-09.md 的主数据补充。
## 1. 判断
基础档案、导入、部分编辑、版本快照和审批已有实现,但尚未形成可靠、统一、方便计划员使用的主数据管理模块。最关键的问题是“显示、编辑、导入、排产消费”使用的对象不完全一致。
本次为审查,没有修改业务代码或用户数据。三个验证在内存中构造数据,并通过 tests.conftest 将所有持久化路径隔离到临时目录;没有启动用户服务或读写现场数据库。
## 2. 三个已复现的问题
| 编号 | 操作与前提 | 本次实际结果 | 含义 |
|---|---|---|---|
| MD-F01 | materials 与 flexMaterials 均有同一产品 P1,库存都是 5;调用普通物料编辑将库存改为 123 | materials.stock=123,flexMaterials.stock=5 | 普通编辑没有同步到柔性排产数据,排产可能继续使用旧库存 |
| MD-F02 | 只有 flexRoutings 中存在 CUT 工艺;master_overview 生成 FLEX-IMPORT 显示行,步骤 ID=1;按 ID 编辑工时 | routingSteps 为空;返回“工艺步骤不存在:1” | 为显示临时生成的编号不是正式可编辑对象的编号 |
| MD-F03 | 周模板明确设置 workdays=[5,6],生成 2026-09-12 至 2026-09-13 的生产日历 | generatedCount=0,skippedWeekendCount=2 | 页面允许选周末,生成逻辑却无条件跳过周末 |
这是领域函数的直接复现,不是浏览器 E2E。MD-F01 证明当前编辑函数存在不同步;不据此声称所有导入路径都不同步,因为物料批次导入确实同时更新两套表。
代码依据:
- server/aps_domain/masterdata.py:master_overview 的 flexBom/flexRoutings 显示投影;apply_master_action 的 master.material.upsert;normalize_routing_payload;apply_calendar_week_copy。
- server/aps_domain/importers.py:apply_import_commit 对 materials 同时写普通/柔性表,设备/工艺/日历主要进入 flex 表。
- server/state/store.py:加载时存在条件性的 flex→classic 投影,不构成所有入口的持续双向同步。
## 3. 分项完成情况
| 主数据类别 | 已有能力 | 剩余缺口 |
|---|---|---|
| 工厂、车间、产线、工位 | 资源树、已有产线属性编辑、工位 CRUD | 缺统一的从零建厂配置流程;master.line.upsert 是已有产线更新,未提供同等完整的工厂/车间/产线建档链 |
| 产品、原料、半成品 | 编码、名称、规格、类型、单位、库存、采购前置期维护 | 普通/柔性编辑口径不一致;来源权威、单位换算、未知与零、外部编码映射及受控改码流程不完整 |
| 产品用料表(BOM) | 多层用料在业务分解中已有消费,页面可建头、增删明细、改用量、标关键料、快照发布/回滚 | 导入柔性 BOM 的显示投影不等于正式编辑对象;缺统一的来源/修订/生效/订单绑定语义与完整维护体验 |
| 工序和工艺路线 | 工序池、前后顺序、准备/单件时间、外协标记、路线编辑和版本快照 | 导入工艺显示与编辑脱节;普通 routingSteps 与 flexRoutings 尚未统一;设备专属工时、适用条件、来源确认需更清晰 |
| 标准工时 | 工时维护、来源标记、缺失检查、推断提示 | 模板和推断还不是工艺人员确认的正式标准;部分路径缺值时存在 1 分钟/件兜底,虽有错误/冲突提示,不能作为可信生产参数 |
| 设备与加工能力 | 普通设备 CRUD、停用、效率/产能;柔性设备可导入、看能力池、改状态/区域等 | 柔性资源主页面是只读+导入,缺完整在线维护;普通设备变更与柔性设备没有统一对象;能力、适用产品、设备工时需统一维护 |
| 模具和工装 | 模具导入、寿命显示、锁定/解锁;数据模型有设备适配关系 | 日常建档、适配设备/产品、维护和寿命标定缺统一编辑流程;快速 patch 仅覆盖状态/寿命/区域等字段 |
| 人员、班组与技能 | flexTeams 数据、班组人数/技能/覆盖工序展示;算法有人力并发约束 | 当前页面无完整班组/成员/技能维护;通用导入也未覆盖 teams;人员可用日历、请假、资格及有效期未形成完整产品流程 |
| 班次、日历、休息、维保 | 多班次、周模板、节假日、复制周、维保窗口 | 周末配置与生成矛盾;shiftCalendar/flexCalendar 分属不同入口;设备/人员特例和工厂倒班需统一核验 |
| 换型与工厂经验 | 产品族换型矩阵、部分 SOP 规则编译 | 经验提取、条件/例外、缺省时长确认、历史回放和批准后生效仍不完整 |
| 库存、预留、在途、在制 | 基础库存/在途字段,另有 MRP/供应可信性与执行记录 | 基础物料档案和动态库存应区分;缺统一真实来源、时点、仓库/批次/预留口径及外部对账;不能只按物料上的库存数代表当前可用供应 |
| 客户、供应商与外部编码 | 订单客户字段、SAP/MES/WMS 模拟或适配流程 | 不必重做 ERP 全部档案,但缺标准引用、映射与权威来源,避免按名称匹配或默认创建 |
| 导入与数据检查 | 表头识别、批次校验、错误/跳过记录、确认入库 | 不同上传/编辑入口未合并;缺统一可保存映射、逐项纠错、重复冲突处理、增量变更预览和责任人确认 |
| 版本与变更影响 | BOM/工艺发布快照、回滚、确认、审计与排产检查点 | 发布当前主要保存快照;默认路线/BOM 查询仍按 isDefault。尚未形成“草稿编辑→验证→生效范围/日期→订单引用→影响提示”的一致机制 |
| 存储一致性 | world JSON 和数据库镜像/投影、变化指纹 | WorldStore 数据库同步异常可回退 JSON,DB 有数据时启动又以 DB 投影为准。主数据发生保存失败时,缺面向用户的明确同步状态和恢复/冲突处理;本次只查代码,未做故障注入 |
## 4. 对计划员最直接的影响
1. 不确定该在哪个页面修改;同名设备或产品可能出现在不同视图和数据表。
2. 已经修改的数据未必进入本次使用的排产模型,造成“明明改了,为什么还这样排”。
3. 能看到导入结果,却不一定能原地纠错或发布其正式版本。
4. 有设备和工艺记录不代表两者能正确关联,更不代表工时、日历和材料已确认。
5. 库存未知、模板工艺和推断工时如果与正式值混在一起,会损害排产结果的可信度。
## 5. 应该形成的用户流程
界面可叫“排产资料”,内部保留标准模型。按计划员要回答的问题组织:
- 做什么:产品、订单引用、数量和交期。
- 怎么做:加工步骤、先后关系、每步工时与来源。
- 用什么料:每件用量、可替代材料和使用规则。
- 谁来做、用什么做:设备、模具、人员资格和容量。
- 什么时候能做:班次、休息、停机、维护和人员可用时间。
- 哪些必须遵守:已确认的工厂规则与例外。
Pi 数据 Agent 先读取项目资料和连接器快照,识别字段、对齐关系,生成待核对清单。对缺工时、缺能力等直接指出影响哪张订单的哪道工序;经验/规则 Agent 可提出候选,但不能把猜测直接当成正式值。
默认操作是“核对并采用本次资料”;高级页面再维护编码、映射和修订。任何采用动作都说明影响的产品、订单、现有方案,并保存可回溯版本。
## 6. 优先修复顺序和验收
1. 修复 MD-F01/F02/F03,首先证明“改了就生效、看到就能按正确对象编辑、选了周末就能生成周末班次”。
2. 明确唯一标准模型和编辑入口,固定/柔性算法改成消费该模型的不同投影;不能只给两个页面换名称。
3. 将普通/柔性导入映射到稳定对象 ID,给已有数据制定迁移、冲突核对和回退方案。
4. 补齐设备能力、模具适配、班组技能和人员日历的在线维护。
5. 分开事实数据、候选模板和临时假设;按本次订单做关联校验和确认,不用单一“可开排”掩盖缺项。
6. 把主数据修订/生效与排产版本、已发布工单和外部来源绑定;变更提供影响预览。
7. 通过统一连接器持续同步 ERP/MES/WMS 的权威数据,APS 维护自身排产补充项与经确认规则。
核心验收场景:改库存能改变缺料判断;停用设备后相关算法不再分配;改工时后新方案采用新值且历史版本不被改写;周末班次真实可排;导入工艺可原地纠错;重复导入不产生重复设备;未确认模板不会被描述为已验证工厂标准。