附图报价系统设计分析6

附图报价系统设计分析6

报告核心发现速览

维度 关键数据
项目规模 129个Python文件,37,261行代码,50个MD文档16,397行
开发周期 2026-03-27 ~ 2026-05-01,共 36天,70次提交
UI占比 src/ui/ 16,737行,占总代码 44.9%,是最大模块
最大文件 gl_3d_widget.py 2,316行 / geometry_extractor.py 1,915行
提交节奏 前7天密集开发(日均5~7次),后转为修复打磨期
测试覆盖 仅7个测试文件1,000行,覆盖率远低于37K行源码

六大核心子系统

图纸解析(7格式·3级回退) → 预览引擎(3级OpenGL) → 成本核算(13步公式链) → 语义解析(GDT/焊缝/标题栏) → AI推理(Gemma本地+百炼云端) → 报价生成(Excel/Word)

三大核心风险

①单一main分支开发无特性分支

②gl_3d_widget单体2,316行

③测试覆盖率严重不足

报告包含了完整的 迭代路线图建议(短期重构→中期语义增强→长期多租户云端化),可直接用于后续开发排期。




目录

  1. 业务模型分析
  2. 需求清单(可追溯)
  3. 系统架构设计
  4. 功能清单与模块映射
  5. 代码规模全景
  6. 侧端推理链路
  7. 模型特征分析
  8. [Git 日志可视化与分析](#Git 日志可视化与分析)
  9. 风险与优化建议
  10. 迭代路线图建议

一、业务模型分析

1.1 业务定位

QuoteApp 是一款面向中小机加工企业桌面级 CAD 智能报价工具,核心价值是将"人工看图→手工报价"的传统流程升级为"图纸上传→AI 自动核算→导出报价单"的数字化链路。

1.2 目标用户画像

用户类型 规模 核心痛点 使用频次
中小机加工厂报价员 5~50人 依赖老师傅、报价周期2~3天 每日
大型制造企业工艺工程师 个人 缺乏快速核算工具 每周
销售/采购人员 个人 成本"黑盒",无法拆解费用明细 按需

1.3 业务价值链

复制代码
客户发来图纸
    ↓
上传 STEP/STL/PDF/DXF/DWG
    ↓
自动解析几何特征(体积、表面积、孔径分布、复杂度)
    ↓
工艺推断引擎 → 11道工序工时计算
    ↓
成本核算(材料费→加工费→管销费→利润→税费→含税价)
    ↓
校对与手工覆写 → 确认报价
    ↓
导出 Excel/Word 报价单
    ↓
回复客户

1.4 行业对标分析

对标系统 类型 QuoteApp 差异化定位
HCB 成本报表 Excel 表单工具 自动化替代人工填表
开目 3DDFC 国产 CAD 报价软件 轻量化 + 桌面部署(无需服务器)
meviy(米思米) 日本云端 AI 报价 离线可用,数据本地存储
寸铁应用平台 工业 AI SaaS 单 exe 分发,零部署成本

1.5 商业模型推断

  • 价值主张:将 2~3 天报价周期缩短至 30 分钟内,无需资深工艺师
  • 收入来源:未明确(推测为企业内部工具 / 打包销售 / 配套 digitmold.com 电商平台)
  • 交付模式:单 EXE 绿色分发(690MB),CLI 支持批量处理
  • 竞争壁垒:11道工序工时定额公式库 + 三级回退解析链 + 双 AI 引擎

二、需求清单(可追溯)

2.1 功能需求(FR)

编号 名称 描述 优先级 状态 对应文件
FR-01-1 3D文件上传 STEP/STP/STL/OBJ 解析 P0 ✅ 完成 geometry_extractor.py
FR-01-2 2D图纸上传 PDF/DXF/DWG 解析 P1 ✅ 完成 geometry_extractor.py
FR-01-3 拖拽上传 拖拽文件到界面 P1 ✅ 完成 quote_panel.py
FR-01-4 包围盒提取 L×W×H/直径(mm) P0 ✅ 完成 geometry_extractor.py
FR-01-5 体积表面积 自动计算 mm³/mm² P0 ✅ 完成 geometry_extractor.py
FR-01-6 孔径分布统计 11段区间分类 P0 ✅ 完成 geometry_extractor.py
FR-01-7 工艺特征识别 平面/凹槽/圆角/螺纹 P1 ✅ 完成 geometry_extractor.py
FR-01-8 3D 线框预览 OpenGL 渲染展示 P2 ✅ 完成 gl_3d_widget.py
FR-02-1 内置材料库 铝/钢/不锈钢等 P0 ✅ 完成 material.py
FR-02-2 材料属性 密度/单价 P0 ✅ 完成 material.py
FR-02-3 表面处理选项 阳极氧化/镀铬/发黑等 P0 ✅ 完成 quote_panel.py
FR-02-4 热处理选项 调质/淬火/渗碳等 P0 ✅ 完成 heat_treat_widget.py
FR-02-5 自定义材料 用户新增材料 P1 ✅ 完成 settings_panel.py
FR-02-6 编辑材料单价 修改市场单价 P0 ✅ 完成 settings_panel.py
FR-03-1 编程工时 基于复杂度评分 P0 ✅ 完成 quota_formulas.py
FR-03-2 调机(准终时间) 查表法 P0 ✅ 完成 quota_formulas.py
FR-03-3 空乘(装卸)时间 基于重量G公式 P0 ✅ 完成 quota_formulas.py
FR-03-4 热处理 净重×单价 P0 ✅ 完成 cost_calculator.py
FR-03-5 线切割 参考插床公式 P0 ✅ 完成 quota_formulas.py
FR-03-6 孔加工 D/L/K材料系数 P0 ✅ 完成 quota_formulas.py
FR-03-7 粗车/铣/磨 基于D/L/K光洁度 P0 ✅ 完成 quota_formulas.py
FR-03-8 精车/铣/磨 基于F/h/形位公差 P0 ✅ 完成 quota_formulas.py
FR-03-9 检测工时 公差特征数×系数 P0 ✅ 完成 quota_formulas.py
FR-03-10 包装 固定费用/重量 P1 ✅ 完成 quota_formulas.py
FR-03-11 表面处理 基于F面积 P0 ✅ 完成 cost_calculator.py
FR-04-1~11 费用汇总链 13步公式链 P0 ✅ 完成 cost_calculator.py
FR-05-1 批量报价 多零件上传 P1 ✅ 完成 batch_quote_panel.py
FR-05-2 报价单字段 14列标准字段 P0 ✅ 完成 quote_generator.py
FR-05-3 导出 Excel .xlsx 对齐 HCB P0 ✅ 完成 quote_generator.py
FR-05-4 导出 Word .docx 格式 P1 ✅ 完成 quote_generator.py
FR-05-5 历史报价存储 SQLite 本地存储 P0 ✅ 完成 quote_record.py
FR-05-6 历史报价查询 按日期/图号/客户 P0 ✅ 完成 history_panel.py
FR-05-7 历史重新导出 从历史记录导出 P1 ✅ 完成 history_panel.py
FR-06-1 材料库管理 CRUD 操作 P0 ✅ 完成 settings_panel.py
FR-06-2 工序单价配置 元/H 可配置 P0 ✅ 完成 settings_panel.py
FR-06-3 工时系数配置 支持微调校准 P0 ✅ 完成 settings_panel.py
FR-06-4 辅材费用清单 20+ 种辅料 P1 ✅ 完成 auxiliary_cost.py
FR-06-5 税率/管销/利润率 全局配置 P0 ✅ 完成 settings_panel.py
FR-03-N1~N4 定额系数校准 手册系数可调 P1 ✅ 完成 quota_formulas.py

2.2 非功能需求(NFR)

编号 类型 描述 状态
NFR-01 性能 STEP <10MB 后台解析,报价响应<3秒 ✅ 完成
NFR-02 离线可用 全程本地运行,无需联网 ✅ 完成(含本地 Gemma 模型)
NFR-03 兼容性 Windows 10/11 64位 ✅ 完成
NFR-04 可安装 单EXE绿色安装 ✅ 完成(PyInstaller,~690MB)
NFR-05 数据安全 本地 SQLite 存储 ✅ 完成
NFR-06 可维护 UI界面可调参数 ✅ 完成
NFR-07 估算精度 常规件<20%,复杂件<35% ⚠️ 待验证
NFR-08 易用性 核心流程≤5步 ✅ 完成

2.3 AI 增强需求

编号 名称 描述 状态
AI-01 工艺路线规划 Gemma-4-E2B 本地推理 ✅ 完成
AI-02 工序工时估算 Gemma-4-E2B 本地推理 ✅ 完成
AI-03 工艺对话 阿里百炼 Qwen-Plus(SSE流式) ✅ 完成
AI-04 Ollama 本地模型支持 替代百炼 ✅ 完成
AI-05 标题栏验证 Gemma 4 验证 Level 0 ✅ 完成
AI-06 材质语义理解 Gemma 4 语义增强 ✅ 完成
AI-07 技术要求分类 Gemma 4 智能分类 ✅ 完成

2.4 本文档未覆盖的需求增量(实际已完成)

增量功能 说明
ViewCube CAD 导航 3D 方位体交互控件
CAD 工具栏 测量/孔分布/标注/导出
2D DXF 显示 独立的 DXF 预览控件
工艺可视化 工序流程图可视化
语义审查对话框 AI 解析结果审查
语义参数配置 三级回退策略配置
反向标注 背部标注面板
粗糙度/形位公差/热处理控件 独立 UI 组件
模型树3D联动 选中节点联动高亮
CLI 无头模式 命令行批量处理

三、系统架构设计

3.1 六层架构总览

复制代码
┌──────────────────────────────────────────────────────────────────────┐
│                          UI 层(PyQt6,16,737行)                      │
│  MainWindow · QuotePanel · BatchQuotePanel · HistoryPanel            │
│  SettingsPanel · PreviewPanel · Gl3DWidget · ViewCube · CAD 工具栏   │
│  SemanticReview · SemanticSettings · AI Chat · 工艺表格/可视化        │
├──────────────────────────────────────────────────────────────────────┤
│                     业务逻辑层(core/,7,410行)                       │
│  GeometryExtractor → ProcessEngine/V2 → CostCalculator               │
│  ←→ QuotaFormulas (定额手册公式库) → QuoteGenerator                    │
│  DrawingExporter · BatchExtractor · PreviewEngine · CliRunner         │
├──────────────────────────────────────────────────────────────────────┤
│                    语义解析层(core/semantic/,3,202行)                │
│  SemanticExtractor · GDTDetector · WeldDetector · TechReqParser      │
│  TitleBlockParser · OcrUtils · Gemma4Validator · AliyunValidtor      │
├──────────────────────────────────────────────────────────────────────┤
│                    数据模型层(models/,837行)                         │
│  Material · ProcessParam · QuoteRecord · AuxiliaryCost · Database    │
│  QuotaFormulaParam (定额系数)  [SQLAlchemy 2.0 ORM]                  │
├──────────────────────────────────────────────────────────────────────┤
│                    持久化层(SQLite)                                  │
│  6张核心表:materials / quote_records / process_params                │
│  quota_formula_params / auxiliary_costs / weld_annotations           │
├──────────────────────────────────────────────────────────────────────┤
│                    文件输入/输出层                                     │
│  输入:STEP/STL/OBJ/PDF/DXF/DWG/ZIP                                  │
│  输出:Excel(.xlsx) / Word(.docx)                                    │
└──────────────────────────────────────────────────────────────────────┘

3.2 核心数据流

复制代码
文件上传 ─→ 格式检测 ─→ 三级回退解析链 ─→ GeometryFeatures
                                                  ↓
                                       13步成本公式链
                                           ↓
                                    11道工序工时分配
                                           ↓
                                    报价汇总(含税/不含税)
                                           ↓
                                  Excel/Word 导出或历史存储

3.3 图纸解析回退链(7种格式·3级回退)

复制代码
STEP   → pythonOCC → trimesh → 正则提取
STL    → trimesh 直接加载
OBJ    → trimesh 直接加载
PDF    → pymupdf 矢量 → PaddleOCR → pdfplumber
DXF    → ezdxf 直接解析
DWG    → ODA (Open Design Alliance) → DXF → ezdxf
ZIP    → 自动解压 → 逐文件处理

3.4 三级 OpenGL 渲染架构

级别 API 着色特性 触发条件
Primary OpenGL 3.3 Core Phong + 半球环境光 + 边缘光 + 菲涅尔 + Gamma GPU 支持 GL 3.3
Secondary OpenGL 2.1 (GLSL 120) 标准 Phong GPU 仅支持 GL 2.1
Fallback QPainter 软件渲染 线框模式 无 GPU / 远程桌面
3.4. 1. QuoteApp 与 OpenCASCADE (OCCT) 架构关联度分析报告核心结论

QuoteApp 不是基于 OCCT 构建的 CAD 软件 ,而是一个机械零件报价辅助工具 。它与 OCCT 的关系是单向读取 ------仅利用 OCCT 的数据读取能力提取几何特征(尺寸、体积、孔径),用于报价计算,不使用 OCCT 的任何建模、编辑、渲染能力


3.4.2. OCCT 七层架构 vs QuoteApp 对照
OCCT 层级 OCCT 能力 QuoteApp 对应 关联度
① Foundation Classes 内存管理(handles 智能指针)、跨平台可移植性 ❌ 无对应 0% --- QuoteApp 用 Python GC
② Modeling Data B-Rep 拓扑 (TopoDS)、几何/曲面数据结构 ⚠️ 仅读取 15% --- pythonOCC 路径遍历 Face/Edge 提取孔径,但不维护拓扑
③ Modeling Algorithm 布尔运算、倒角、偏移、填充 ❌ 完全不用 0% --- 报价工具不需要建模
③ Mesh BRepMesh 三角化 ⚠️ 间接使用 10% --- pythonOCC 的 BRepMesh_IncrementalMesh 仅作为 STEP→三角网格的转换桥梁
④ OCAF 文档-视图架构、Undo/Redo、持久化 ❌ 无对应 0% --- QuoteApp 用 SQLite + 自研 UI
⑤ Data Exchange STEP/IGES/STL 读写 关键依赖 40% --- STEP 读取是核心功能之一
⑥ Visualization 3D 渲染、视图管理、选择高亮 ❌ 无对应 0% --- QuoteApp 自研 OpenGL 渲染器(三级降级)
⑦ GUI Framework Qt/MFC/.NET 集成 ❌ 独立使用 PyQt6 0% --- 直接用 PyQt6,不走 OCCT 的 Qt 集成层

3.4.3. 实际代码中的 OCCT 依赖点

QuoteApp 通过 pythonocc-core(Python 绑定)间接使用 OCCT,涉及以下模块:

OCCT 模块 QuoteApp 用途 关键文件
STEPControl_Reader STEP 文件读取 preview_engine.pygeometry_extractor.py
BRepGProp 体积/面积精确计算 geometry_extractor.py
BRepMesh_IncrementalMesh B-Rep → 三角网格(仅用于 3D 预览) preview_engine.py
TopExp_Explorer 遍历 Face/Edge 拓扑 geometry_extractor.py
BRepAdaptor_Surface 曲面类型判断(识别圆柱面→孔) geometry_extractor.py
Bnd_Box / BRepBndLib 包围盒计算 geometry_extractor.py

关键特征: 所有 OCCT 调用都在 try/except ImportError 内,是可选路径 。主路径使用 cascadio(纯 Python 封装)或 trimesh


3.4.4. QuoteApp 自研替代了 OCCT 的哪些层
OCCT 能力 QuoteApp 的替代方案
Visualization(渲染器) GL3DWidget:自研 OpenGL 3.3/2.1/软件三级降级渲染器(1535行),含 Blinn-Phong 三光源、菲涅尔轮廓光、ViewCube
Modeling Data(数据结构) MeshData:纯三角网格(vertices+normals+indices numpy 数组),无 B-Rep
GUI Framework PyQt6:独立于 OCCT,自研 PreviewPanel、QuotePanel 等
数据交换(写出) ❌ 暂无 CAD 格式导出(DXF/PDF 导出在 Phase 2/3 计划中)
标注系统 DimAnnotation + QPainter 叠加层:自研 3D 尺寸标注(ISO/ASME 箭头)
语义解析 SemanticExtractor:GDT 形位公差检测、粗糙度、焊接符号、标题栏解析

3.4.5. 综合关联度评分
维度 评分 说明
数据交换(读取) ⭐⭐⭐⭐☆ STEP 读取是核心功能,但用 cascadio 主路径
几何内核 ⭐⭐☆☆☆ pythonOCC 仅做读取+测量,不做建模
可视化 ⭐☆☆☆☆ 完全自研,与 OCCT Visualization 无关
应用框架 ⭐☆☆☆☆ 完全自研
建模能力 ☆☆☆☆☆ 无布尔运算、倒角、偏移等
GUI 集成 ☆☆☆☆☆ 独立 PyQt6,不走 OCCT Qt 层

总体关联度:约 15% --- QuoteApp 只"消费"了 OCCT 数据交换层的一小部分(STEP 读取),其他 85% 完全自研或使用其他库(trimesh、ezdxf、PyMuPDF、PaddleOCR)。


3.4.6. 技术栈对比一览
维度 OCCT 架构 QuoteApp 实现
语言 C++ Python 3.13
几何内核 B-Rep(精确几何) 三角网格(近似几何)
建模能力 布尔运算/倒角/偏移/扫掠 无(只读)
数据格式 STEP/IGES/STL/VRML 读取 STEP/DXF/PDF,无写出
渲染 OpenCascade Visualization 自研 OpenGL(三级降级)
UI 框架 Qt/MFC/.NET 抽象层 PyQt6(直接使用)
数据持久化 OCAF 文档模型 SQLite
OCR PaddleOCR / OpenVINO
AI 能力 Gemma4 本地 LLM

3.4.7. 架构关系图
复制代码
┌─────────────────────────────────────────────────┐
│                  QuoteApp 应用层                  │
│  报价引擎 │ OCR 语义解析 │ 3D 标注 │ AI 辅助     │
├─────────────────────────────────────────────────┤
│              PyQt6 GUI(自研面板系统)              │
├──────────────┬──────────────────────────────────┤
│   自研       │        第三方依赖                   │
│ GL3DWidget  │  trimesh │ ezdxf │ PyMuPDF        │
│ (OpenGL)     │  cascadio │ PaddleOCR             │
├──────────────┴──────────────────────────────────┤
│          pythonocc-core(可选路径)                 │
│   ┌──────────────────────────────────────────┐   │
│   │   OCCT Data Exchange ◄── STEP 读取       │   │
│   │   OCCT Mesh          ◄── BRep 三角化     │   │
│   │   OCCT Modeling Data ◄── 拓扑遍历        │   │
│   │   OCCT Foundation     ◄── 基础类         │   │
│   └──────────────────────────────────────────┘   │
├─────────────────────────────────────────────────┤
│              Python 3.13 + SQLite                │
└─────────────────────────────────────────────────┘

3.4.8. 小结

QuoteApp 是 OCCT 生态的下游消费者 ,不是上层应用。它从 OCCT "吸"了一根管子(STEP 文件读取),但自己搭建了完整的渲染引擎、标注系统、语义解析和报价引擎。

如果要升级 OCCT 关联度(比如增加建模编辑能力),需要引入 BRep 建模 API,这是一个架构级别的变化

3.5 13步成本公式链

复制代码
净重 = 体积 × 密度
    → 用料重量 = 净重 × 1.15(余量系数)
        → 材料费 = 用料重量 × 单价
            → 加工费 = Σ(11道工序成本)
                → 辅助费 = 用户勾选辅料合计
                    → 产品成本 = 材料费 + 加工费 + 辅助费
                        → 管销费 = 产品成本 × 2.88%
                            → 利润 = 产品成本 × 13%
                                → 不含税价 = 产品成本 + 管销费 + 利润
                                    → 税额 = 不含税价 × 13%增值税
                                        → 含税单价 = 不含税价 + 税额
                                            → 含税总额 = 含税单价 × 数量

3.6 数据库 ER 核心关系

复制代码
materials (材料库, 19种预设)
    ↑ FK
quote_records (报价记录, 含几何JSON/工序JSON快照)
    ↑ FK
weld_annotations (焊缝标注, 独立表)

process_params (21道工序参数, DB可校准)
quota_formula_params (31个定额公式系数, 用户可调)
auxiliary_costs (20项辅材费用)

四、功能清单与模块映射

4.1 六大核心子系统

# 子系统 核心文件 代码行数 功能描述
1 图纸解析引擎 geometry_extractor.py 1,915 7种格式·三级回退·几何特征提取
2 预览引擎 preview_engine.py + gl_3d_widget.py + view_cube_widget.py 3,662 三级OpenGL·ViewCube·2D/3D
3 成本核算引擎 cost_calculator.py + process_engine.py + process_engine_v2.py + quota_formulas.py 2,433 13步公式链·11道工序·定额手册系数
4 语义解析引擎 semantic/ 9个文件 3,202 GDT·焊缝·粗糙度·标题栏·技术要求
5 AI 推理引擎 gemma4_validator.py + aliyun_bailian_validator.py 1,108 Gemma本地·百炼云端·Ollama
6 报价生成引擎 quote_generator.py 1,256 Excel 14列·Word 6区·单件+批量

4.2 UI 组件全景(31个文件,16,737行)

模块 文件 行数 功能
3D 视图 gl_3d_widget.py 2,316 OpenGL 三级渲染,Arcball 交互
报价面板 quote_panel.py 1,588 单件报价编辑工作台
设置面板 settings_panel.py 1,232 全局参数配置
预览面板 preview_panel.py 1,194 2D/3D 混合预览
批量报价 batch_quote_panel.py 983 多工件批量处理
聊天组件 chat_components.py 848 Markdown 渲染、气泡组件
AI 聊天 ai_chat_panel.py 824 大模型对话界面
增强预览 enhanced_preview_panel.py 693 增强型预览面板
ViewCube view_cube_widget.py 563 CAD 风格 3D 导航
主题系统 theme.py 479 应用主题定义
软件3D software_3d_widget.py 479 软件渲染回退
模型树 model_tree_widget.py 395 树形结构+3D联动
历史面板 history_panel.py 401 报价历史查询
工艺表格 process_table.py ~350 工序编辑表格
语义审查 semantic_review_dialog.py ~350 语义解析审核
主窗口 main_window.py ~350 Tab 布局/主题/DB 初始化
CAD 工具栏 cad_toolbar.py ~300 测量/标注/导出
2D 预览 dxf_2d_widget.py ~300 DXF 图纸显示
热处理 heat_treat_widget.py 402 热处理选择
尺寸列表 dim_list_widget.py 408 尺寸标注列表

4.3 语义解析模块全景(10个文件)

模块 检测内容 检测策略 精度策略
GDT 检测 14种 GD&T 符号 YOLOv8 → OpenCV → 正则(三级)
焊缝检测 7种焊缝类型 YOLOv8 → OpenCV → 正则(三级)
粗糙度检测 Ra/Rz 数值 正则匹配
标题栏解析 图号/名称/材料/比例/日期 PaddleOCR表格 → 向量 → 正则(三级)
技术要求解析 热处理/涂层/检验 规则引擎 + AI 智能分类

4.4 打包与部署功能

功能 说明
PyInstaller 打包 6.19.0,单 EXE
zipapp 打包 __main__.py 入口
CLI 无头模式 --cli --input --output --batch
UPX 压缩 启用
排除大依赖 torch/paddlepaddle/scipy 等
控制台模式 console=False 纯窗口

五、代码规模全景

5.1 全局统计

统计项 数值
项目总文件数(源码) 278
Python 文件数(项目源码) 129
Python 代码总行数 37,261
Markdown 文档数 50
Markdown 文档总行数 16,397
Git 提交数 70
代码变更 +45,421 / -722(212 files changed)

5.2 按目录代码分布

目录 .py 文件数 代码行数 占比
核心源码 src/ 61 28,186 75.6%
├─ src/ui/ 31 16,737 44.9%
├─ src/core/ 13 7,410 19.9%
├─ src/core/semantic/ 10 3,202 8.6%
└─ src/models/ 6 837 2.2%
根目录(打包/测试脚本) 54 6,219 16.7%
tests/ 7 1,000 2.7%
scripts/automation/ 5 1,621 4.3%
hooks/ + migrations/ 2 235 0.6%
合计 129 37,261 100%

5.3 最大源文件 TOP 15

排名 文件 行数 模块归属
1 src/ui/gl_3d_widget.py 2,316 UI-3D渲染
2 src/core/geometry_extractor.py 1,915 核心-图纸解析
3 src/ui/quote_panel.py 1,588 UI-报价面板
4 src/core/quote_generator.py 1,256 核心-报价生成
5 src/ui/settings_panel.py 1,232 UI-设置面板
6 src/ui/preview_panel.py 1,194 UI-预览面板
7 src/ui/batch_quote_panel.py 983 UI-批量报价
8 src/core/cost_calculator.py 877 核心-成本核算
9 src/ui/chat_components.py 848 UI-聊天组件
10 src/ui/ai_chat_panel.py 824 UI-AI对话
11 src/core/preview_engine.py 783 核心-预览引擎
12 src/ui/enhanced_preview_panel.py 693 UI-增强预览
13 src/core/semantic/title_block_parser.py 655 语义-标题栏
14 src/core/semantic/aliyun_bailian_validator.py 567 语义-百炼API
15 src/ui/view_cube_widget.py 563 UI-ViewCube

5.4 代码复杂度分析要点

  • UI 层占比 44.9%,是整个项目最庞大的模块,表明 PyQt6 开发效率较高但 UI 逻辑占比大
  • gl_3d_widget.py(2,316行)是单体最大文件,建议未来拆分
  • geometry_extractor.py(1,915行)承载7种格式解析逻辑,复杂度高,建议按格式拆分
  • core/semantic/ 共10个文件但仅3,202行,模块化程度较好
  • models/ 仅837行/6个文件,ORM 设计简洁

六、侧端推理链路

6.1 推理链路总览

复制代码
PDF/DXF 输入 ──────────────────────────────────────────────────┐
    ↓                                                          │
┌──────────────────────────────────────────────────────────┐   │
│                语义解析链路(全本地推理)                    │   │
│                                                          │   │
│  ① PaddleOCR-Table(文字检测+表格识别)← OpenVINO 加速     │   │
│     ↓                                                    │   │
│  ② Gemma-4-E2B 验证器(Level 0,可选)                    │   │
│     ├─ 标题栏验证:图号/名称/材料/比例                     │   │
│     ├─ 材质语义理解:材料牌号智能匹配                      │   │
│     └─ 技术要求分类:热处理/涂层/检验等                   │   │
│     ↓                                                    │   │
│  ③ YOLOv8(可选)------ 符号检测                              │   │
│     ├─ GDT 检测器:14种形位公差符号                        │   │
│     └─ 焊缝检测器:7种焊缝类型                             │   │
│     ↓ ↓                                                  │   │
│  ④ OpenCV 模板匹配(二级回退)                            │   │
│     ↓ ↓                                                  │   │
│  ⑤ 正则匹配(三级兜底)                                   │   │
│                                                          │   │
└──────────────────────────────────────────────────────────┘   │
    ↓                                                          │
┌──────────────────────────────────────────────────────────┐   │
│              AI 工艺助手链路(混合推理)                     │   │
│                                                          │   │
│  ① 本地推理:Gemma-4-E2B(GGUF, ~2.5GB)                  │   │
│     ├─ llama-cpp-python 加载                              │   │
│     ├─ 工艺路线规划:根据几何特征推断加工工序                │   │
│     └─ 工序工时估算:基于语义理解输出工时                  │   │
│                                                          │   │
│  ② 云端推理:阿里百炼 Qwen-Plus                           │   │
│     ├─ SSE 流式输出(流式追加)                            │   │
│     └─ 工艺知识对话                                       │   │
│                                                          │   │
│  ③ Ollama 本地替代(2026-04 新增)                        │   │
│     └─ 替代百炼 API 的本地部署方案                         │   │
└──────────────────────────────────────────────────────────┘   │
    ↓                                                          │
┌──────────────────────────────────────────────────────────┐   │
│              成本核算链路(纯规则引擎,无AI)                │   │
│  定额手册公式库(31个公式系数,DB可校准)                   │   │
│  输入:GeometryFeatures + 语义字段 → 输出:报价单          │   │
└──────────────────────────────────────────────────────────┘   │
    ↓                                                          │
                       报价单输出(Excel/Word) ◄─────────────────┘

6.2 本地 AI 模型规格

模型 规格 推理框架 存储路径 用途
Gemma-4-E2B-it-GGUF Q4_K_M, ~2.5GB llama-cpp-python models/gemma-4-2b-it-vision-q4_k_m.gguf 工艺规划+工时估算+语义验证
PaddleOCR 轻量,~20MB PaddleOCR + OpenVINO 内置 文字检测与表格识别
YOLOv8-GDT(可选) 定制,~45MB ultralytics models/ GDT 符号检测
YOLOv8-WELD(可选) 定制,~45MB ultralytics models/ 焊缝符号检测
Ollama 模型 用户自选 Ollama 系统级 替代云端推理

6.3 推理性能特征

推理步骤 延迟 依赖项 可选/必需
PaddleOCR(单页) 1~3s paddlepaddle-gpu/openvino 必需(已打包)
OpenVINO 加速 -10~30% 耗时 openvino 可选
Gemma-4 (2B) CPU 推理 2~5s/次 llama-cpp-python 可选(Level 0)
YOLOv8 检测 0.5~2s/页 ultralytics 可选(未打包)
阿里百炼 API 5~15s/次(网络) requests + SSE 可选
纯规则引擎核算 <0.1s 无外部依赖 必需

6.4 侧端推理特点总结

  1. 三级回退策略 --- 每层推理结果不达标时自动降级,保证高可用性
  2. 全本地推理能力 --- PaddleOCR + OpenVINO 可在无 GPU 设备上运行
  3. 双 AI 引擎互补 --- Gemma 本地(离线·隐私·低延迟)+ 百炼云端(在线·强能力·流式)
  4. 规则引擎兜底 --- 核心报价流程不依赖任何 AI 模型,AI 为增强而非必需
  5. 可选依赖设计 --- YOLOv8 / Gemma 等大模型均为 try/except 导入,缺失不影响核心功能

七、模型特征分析

7.1 领域模型概览

模型 类型 输入 输出
GeometryFeatures 数据类 图纸解析结果 核算引擎输入
ProcessItem 数据类 工艺推断结果 工序明细表
QuoteSummary 数据类 成本核算结果 报价单数据
GDTAnnotation 数据类 GDT 检测 语义审核展示
WeldAnnotation 数据类 焊缝检测 语义审核展示
ExtendedGeometryFeatures 数据类 语义增强解析 V2 工艺引擎输入

7.2 数据模型特征

复制代码
materials (19种预设材料)
├── name/density/price_per_kg/category
└── 预置:铝合金3种 + 碳钢4种 + 不锈钢3种 + 模具钢6种 + 铜合金3种

quote_records (快照设计)
├── drawing_no / part_name / material_id (外键)
├── weight_material_kg / weight_net_kg
├── material_cost / process_cost / aux_cost
├── management_fee / profit / tax_amount
├── unit_price_ex_tax / unit_price_inc_tax
├── process_detail_json (工序快照)
├── geometry_info_json (几何快照)
└── 语义增强字段:tightest_tolerance/ra/has_weld/title_block_json...

process_params (21道工序参数)
├── process_code / name / price_per_hour
├── base_time_coefficient / complexity_factor / formula_type

quota_formula_params (31个定额公式系数)
├── process_code / param_name / param_value (DB可校准)
└── default_value / machine_model / material_type

auxiliary_costs (20项辅材)
├── name / category / unit_price / unit
└── 预置:刀具/冷却液/砂轮/量具/包装等

7.3 模型约束与假设

约束/假设 说明 影响范围
材料密度为零 → 重量计算异常 输入校验 报价准确性
手工覆写标记(绿色底色) is_manual_override=True 报价一致性
历史快照设计 报价时快照存储,不受参数变更影响 数据一致性
置信度 < 0.6 → 高亮提示 用户手工复核 用户体验
利润率校验(<0% 或 >200%) 预警提示 报价合理性
孔径分段 11 段(HCB 标准) 固定分段 孔加工工时计算

八、Git 日志可视化与分析

8.1 提交时间线

复制代码
2026-03-27 ████████████████████████████ 19 commits  (启动+基础框架)
2026-03-28 ████ 4 commits                   (OpenVINO+PaddleOCR)
2026-03-29 █████ 5 commits                  (批量报价+功能优化)
2026-03-30 ███ 3 commits                    (Claw技能调用)
2026-03-31 █████ 5 commits                  (2D/3D显示+OpenGL)
2026-04-01 ████ 4 commits                   (测试优化)
2026-04-02 ██ 2 commits                     (测试优化)
2026-04-04 ███ 3 commits                    (Gemma-4-E2B集成)
2026-04-05 ███ 3 commits                    (AI工艺规划+工时估算)
2026-04-06 ████ 4 commits                   (百炼API+项目总结)
2026-04-11 █ 1 commit                       (测试优化)
2026-04-16 ████ 4 commits                   (ViewCube/CAD工具栏)
2026-04-17-29         (子模块/分离阶段)
2026-04-30 ███ 3 commits                    (模型渲染UI+打包测试)
2026-05-01 ████ 4 commits                   (打包配置+修复)

8.2 月度提交分布

月份 提交数 关键事件
2026-03 (3月27~31日) 20 项目启动+基础框架+OpenVINO+PaddleOCR+批量报价
2026-04 (4月) 47 AI集成+3D优化+语义解析+ViewCube+修复
2026-05 (5月1日) 3 打包配置最终优化

8.3 提交类型分析

类型 数量 占比 典型提交
测试/问题优化 ~30 ~43% "测试问题优化", "测试验证优化"
功能开发 ~20 ~29% "增加Gemma-4-E2B", "集成OpenVINO"
3D/渲染优化 ~10 ~14% "三维渲染测试优化", "模型渲染问题优化"
AI 集成 ~6 ~9% "增加阿里百炼", "Ollama模型支持"
打包/部署 ~4 ~6% "更新打包配置", "修复打包后运行报错"

8.4 文件变更频率 TOP 10

文件 变更次数 说明
src/ui/quote_panel.py 19 报价面板最活跃
src/ui/gl_3d_widget.py 19 3D渲染持续迭代
src/ui/preview_panel.py 14 预览面板
build.spec 14 打包配置高频调整
src/ui/settings_panel.py 12 设置面板
src/core/geometry_extractor.py 11 图纸解析
src/core/preview_engine.py 9 预览引擎
setup.py 9 打包脚本
src/ui/ai_chat_panel.py 8 AI对话
requirements.txt 8 依赖管理

8.5 开发节奏特征

  1. 高强度前7天 (3/274/2):完成基础框架→OpenVINO→批量报价→Claw→2D/3D显示,日均57次提交
  2. AI 集成阶段(4/4~4/6):3天完成 Gemma-4 下载→集成→工艺规划→百炼API,日均3~4次提交
  3. 修复打磨阶段(4/11~5/1):以测试优化、3D修复、打包问题为主
  4. 单人开发模式:100% commit 来自 david_232656,无协作痕迹
  5. 分支单一 :仅 main 分支,所有开发直接在主线进行

九、风险与优化建议

9.1 技术债务清单

风险项 严重度 说明 建议
单一main分支开发 🔴 高 所有开发直接在主线进行,无feature/develop分支 引入 Git Flow 或 Trunk-based 策略
UI层过于庞大 🟡 中 gl_3d_widget.py (2,316行) 单体过大 拆分为 renderer/, interaction/, shader/ 子模块
geometry_extractor.py 🟡 中 1,915行承载7种格式解析逻辑 按格式拆分为独立解析器(step_parser.py, stl_parser.py...)
错误处理统一性 🟡 中 try/except ImportError 分散在各处 抽取统一依赖检测框架
测试覆盖率低 🟡 中 仅7个测试文件,1,000行,远低于源码规模37K 增加单元测试,目标覆盖核心公式链
Windows 路径硬编码 🟢 低 部分路径处理假设 Windows 环境 使用 pathlib 替代字符串拼接
ORM 迁移版本管理 🟢 低 仅1次迁移(002_add_semantic_fields) 引入 Alembic 管理 Schema 版本

9.2 性能风险

风险项 描述 缓解建议
大 STEP 文件解析 >50MB 文件耗时 >30秒 增加进度条 + 取消按钮
CPU 推理延迟 Gemma 2B CPU 推理 2~5s 增加缓存机制,预加载模型
打包体积 690MB 分发 按功能模块拆分可选组件
多模型内存占用 PaddleOCR + OpenVINO + Gemma 同时加载 懒加载 + 按需卸载

9.3 功能缺失评估

缺失功能 影响 建议优先级
DWG 格式 ODA 集成不稳定 部分用户图纸无法解析 P0
表面粗糙度语义识别 影响精加工工时精度±25% P1
形位公差语义识别 精密件报价精度不足 P1
多用户/权限管理 无法区分不同用户的报价 P2
MES/ERP 对接接口 无法接入工厂上游系统 P2
在线采购平台对接 无法直连 meviy/怡合达等平台 P3

十、迭代路线图建议

10.1 短期修复(2周)

任务 目标 工作项
代码重构 解耦单体文件 拆分 gl_3d_widget (2.3K行) → renderer/ + interaction/
拆分 geometry_extractor (1.9K行) → 格式独立解析器
测试强化 提升覆盖率至40%+ 核心公式链单元测试、UI 集成测试
打包优化 缩减分发体积 按需排除、可选组件分离

10.2 中期增强(1~2月)

任务 目标 工作项
语义增强 v2 提升非3D文件精度 表面粗糙度识别、形位公差识别
AI 模型迭代 提升推理准确率 Gemma 微调 + RAG 知识库嵌入
DWG 解析加固 兼容性提升 ODA 路径优化 + 错误恢复
批量报价增强 批量处理效率 多线程解析、ZIP目录批量处理

10.3 长期演进(2~4月)

任务 目标 工作项
多租户支持 多用户数据隔离 用户管理 + 权限体系
云端协同 数据同步 可选云端存储 + 报价共享
Web 版本 拓宽平台 FastAPI 后端 + Vue 3 前端(配套 digitmold.com
专业定额扩展 行业定制 冲压/注塑/铸造定额公式库
MES/ERP 对接 企业级集成 REST API + WebHook 推送

附录 A:技术栈完整清单

类别 技术 版本
语言 Python 3.13 (conda)
GUI PyQt6 6.6.1
3D 渲染 PyOpenGL / OpenGL 3.3 Core / 2.1
3D 解析 pythonOCC (可选) + trimesh + cascadio -
2D 解析 ezdxf + ODA -
PDF 解析 pymupdf + pdfplumber -
OCR PaddleOCR + OpenVINO -
数据库 SQLite + SQLAlchemy 2.0 ORM 2.0+
报表导出 openpyxl + python-docx -
本地 AI llama-cpp-python (Gemma-4 GGUF) -
云端 AI 阿里百炼 API (Qwen-Plus) -
YOLO ultralytics (可选) -
打包 PyInstaller 6.19.0
数学计算 NumPy 1.26+
部署形态 EXE (~30MB) / 总包 (~690MB) UPX 压缩

附录 B:项目文件索引

类别 文件 路径
入口 __main__.py 根目录 (zipapp)
入口 main.py 根目录 (GUI/CLI双模式)
核心文档 DESIGN.md 系统架构设计
核心文档 REQUIREMENT.md 需求分析
核心文档 BUSINESS_RULES.md 1156行业务规则规范
核心文档 QUOTA_ENGINE_DESIGN.md 工时定额公式集成设计
总结 QuoteApp_项目成果总结.md 完整成果总结
总结 全链路开发项目总结报告.md 中期总结

相关推荐
郝学胜-神的一滴1 小时前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
倔强的胖蚂蚁1 小时前
Transformer 大模型原理 完整入门指南
人工智能·深度学习·云原生·transformer
大强同学1 小时前
Warp终端安装与设置
人工智能
码途漫谈1 小时前
Easy-Vibe高级开发篇阅读笔记(二十一)——AI能力强化之RAG 与企业级智能客服
人工智能·笔记·ai·开源·ai编程
薛定猫AI1 小时前
【深度解析】Hermes Agent:持久记忆、自学习闭环与桌面化 Autonomous AI 工作流实践
人工智能·学习
Resistance丶未来1 小时前
Sub2API:订阅转API网关平台,魔芋AI接入指南
人工智能·gpt·大模型·claude·gemini·skill·sub2api
独隅2 小时前
用 Anaconda 驯服 AI 开发流:从数据预处理到模型部署的全链路环境标准化实战指南
人工智能·neo4j
zhangfeng11332 小时前
超算中心海光异构卡dcu bw 64G显卡报错 nccl通讯错误,无法通过设置来解决的办法,需要安装shca IB卡驱动
人工智能