4.5 KiB
4.5 KiB
DXF-01 工程图纸自动识别 · 验收报告(2026-08-06)
Goal:以
5060102101-001-e.dxf(MTU 12V 183 TB32 发动机安装图,AC1015,德英双语)为样例, 完成 工程目录发现图纸 → DXF 解析 → 图纸可视化 → 标题栏与技术信息提取 → 物料/BOM/工艺路线候选 → 人工确认 → 写入正式主数据 → 查询验证 → 参与 MRP 与排产 的安全管线。
交付清单
| 层 | 交付物 | 位置 |
|---|---|---|
| 领域 | DXF 解析 + 候选生成 + SVG/图层过滤 + 目录发现 + 缓存 | server/aps_domain/dxf_drawing.py(moduleId: domain-dxf-drawing) |
| 多模态 | DxfDrawingExtractor(kind=dxf_drawing, source=DXF_PARSE)注册进 default_registry;入库 fail closed 指引 /api/dxf/stage |
server/aps_domain/multimodal.py |
| 网关 | POST /api/dxf/parse · /parse-path · GET /api/dxf/{drawingId}/svg?layers= · GET /api/dxf/discover · POST /api/dxf/stage |
server/gateway/app.py |
| 前端 | 图纸识别面板(预览/缩放平移/图层开关/字段置信度/候选确认) | apps/web/src/drawing/DrawingPanel.tsx(moduleId: web-drawing)+ App.tsx 接线 |
| 测试 | 14 项黄金测试(解析/边界/SVG/图层/发现/多模态/P2 确认写物料/驳回不写/网关全链路) | tests/golden/test_dxf_drawing.py |
| 文档 | 端点清单、只读端点备案、确认暂存备案、CHANGELOG | docs/architecture/harness.md、docs/CHANGELOG.md |
| 依赖 | ezdxf>=1.4 | requirements.txt、pyproject.toml |
样例识别结果(实证)
- 标题栏通道①命中:块
SF_STD_A88 个 ATTRIB(置信 0.9)。 - 图号
506 010 21 01↔ 文件名5060102101互证 → 置信 0.95;张次1沿用文件名001写法 → 物料编码候选5060102101-001。 - 名称
Motor 12V 183 TB32 / Installation Drawing / Engine 12V 183 TB32;比例1:5;种类EB/Installation→ 类型推断成品(0.6,需确认);版本e(文件名后缀 + B_FREI 互证 0.9);适用机型OM 444 LA。 - 未填写字段(WERKSTOFF/MASSE/AUFTRAGSNUMMER 等)保持空 + missing,不编造。
- 装配位置号 38 个(14.001/06.020/15.108/09.152…)→ BOM 行候选:子件编码/名称/数量全部
missing(图纸无明细表)。 - 技术说明 9 条原文保留(德英双语注释),仅参考、不推断工艺。
- SVG 预览:2.2MB DXF → 1.3MB SVG(白底),约 1.3 秒;图层过滤变体缓存(如仅图层 6 → 约 260KB)。
安全边界(与 Goal 功能边界逐条对应)
- 候选 →
POST /api/dxf/stage→master.material/bom/routing.upsert的 P2 确认卡;唯一执行路径仍是/api/actions/confirm;确认前绝不写世界(测试实证:stage 后materials数量不变)。 - BOM 数量、采购属性、标准工时、设备能力、工艺版本:图纸未承载 → 显式 missing / 不生成候选,绝不臆造。
- 审计:
dxf.parse(P0/TOOL)、dxf.stage.*(P2/GATE,携带 drawingId 关联确认卡)。
验证
pytest tests/golden全量:1042 passed / 1 failed / 2 warnings(271.7 秒)。 唯一失败test_preference_features.py::test_extract_features_from_world为既有失败 (importserver.knowledge.preferences,本轮改动前同样失败,与 DXF 无关)。- 前端
npm run build(tsc -b + vite build)通过。 - ruff:本轮新增/修改文件全绿(
dxf_drawing.py、test_dxf_drawing.py0 问题;multimodal.py仅剩既有 TRY004 基线;app.py46 项为既有基线,未扩散)。 - 影响分析:GitNexus MCP 工具在本运行环境不可用,改走人工影响分析——新增模块零调用方、 multimodal/app 纯增量分支、两处 golden 注册表断言扩展(已同步);爆炸半径 LOW,无 HIGH/CRITICAL。
待开发项(不宣称已完成)
- 真实德文明细表(Stückliste)块内表格识别 → BOM 名称/数量自动映射。
- 中文 CAD 标题栏样例覆盖(当前仅有通道②规则,无真实样例验证)。
- 图元级选择/高亮与字段 ↔ 图元双向定位。
- 几何长度/面积推导下料尺寸;自然语言入口(「识别这个图纸」意图路由进 ChatPanel)。
- MRP/排产端到端联动验证:物料经 P2 写入后即可被
master_query/MRP 消费(机制复用既有 master.* 写入路径,未做真实排产场景演练)。
发布动作
无 commit/push/merge/publish。工作区原有未提交改动(多文件 M/??)保持原样,未混入本轮之外的内容。