附图报价系统设计分析5
项目画像
| 维度 | 数据 |
|---|
| 类型 | 模具制造业附图智能报价工具(全前端SPA) |
| 代码规模 | 核心JS 12,184行 + 主HTML 8,175行 + 14个Python工具 |
| 开发周期 | 2026-03-14 ~ 03-22(8天密集迭代) |
| 定价数据 | 10MB+(含数百种零件28个维度参数) |
🏗 业务闭环
系统配置→图纸上传→AI解析→工艺规划→工时估算→成本核算→报价输出→合同签订
🔗 四层架构
UI层:5个Tab(系统配置/零件管理/报价管理/报价单/特殊功能)
业务层:14个JS模块(计算/解析/AI处理/校验/策略/标定)
状态层:AppState + LocalStorage(12个数据实体)
AI层:4种解析模式(正则/VL视觉/LLM文本/本地AI)+ Node.js代理
⚙ 核心推理链路
PDF上传 → [PDF.js转图] → [VL/LLM/本地AI] → [正则校验] → [工时估算]
→ [成本计算] → [策略应用] → [报价单]
三级降级:VL视觉→DeepSeek LLM→正则匹配
📈 关键发现
50% 提交是"测试问题优化",典型测试驱动密集迭代
最大瓶颈:PDF转图片内存消耗大、VL API需额外代理、本地AI模型400MB
最急待修:工序/术语的编辑删除功能不完整、大写金额函数缺失


目录
- 项目概览
- 业务模型分析
- 需求清单
- 系统设计
- 功能清单
- 代码规模统计
- 侧端推理链路
- 模型特征分析
- Git 历史分析
- 后续迭代建议
1. 项目概览
| 维度 | 内容 |
|---|
| 项目名称 | 模具附图报价系统(Mold Drawing Quotation System) |
| 项目定位 | 面向模具制造企业的附图智能报价工具,覆盖"图纸解析→工艺规划→工时估算→成本核算→报价输出→合同签订"全流程 |
| 技术栈 | 纯前端:HTML5 + CSS3 + JavaScript (ES6+);桌面端:Electron |
| 数据存储 | 浏览器 LocalStorage(Web版)/ JSON文件(桌面版) |
| AI能力 | 多模型接入:VL视觉模型(通义千问VL)、DeepSeek LLM、Qwen LLM、本地AI(Transformers.js CLIP) |
| 文档处理 | PDF.js(PDF解析)、CAD解析(DXF/DWG) |
| 开发者 | david_232656(GitCode) |
| 开发周期 | 2026-03-14 至 2026-03-22(密集开发约8天) |
| 仓库 | GitCode(gitcode.com:david_232656) |
2. 业务模型分析

2.1 核心业务流
系统配置 → 上传附图 → AI大模型解析 → 自动规划工艺路线
→ 工序工时定额估算 → 成本核算 → 报价输出 → 合同签订
2.2 业务角色
| 角色 | 职责 |
|---|
| 报价工程师 | 上传图纸、审核解析结果、调整工艺路线、确认报价 |
| 工艺工程师 | 维护工序/术语/材料参数、标定工时公式系数 |
| 采购人员 | 管理外购件信息、生成采购单、跟踪交付 |
| 销售/管理层 | 配置报价策略(管理费率/利润率)、审批报价、签订合同 |

2.3 业务闭环
┌──────────────────────────────────────────────────────────────┐
│ 业务闭环 │
├──────────────┬──────────────────┬───────────────────────────┤
│ 报价准备 │ 报价中 │ 报价后 │
├──────────────┼──────────────────┼───────────────────────────┤
│ · 材料库配置 │ · 上传图纸 │ · 采购单生成 │
│ · 工艺参数配置 │ · AI解析图纸 │ · 合同生成/签订 │
│ · 报价策略配置 │ · 工艺路线规划 │ · 交付管理/状态跟踪 │
│ · VL模型配置 │ · 工时定额估算 │ · 历史报价查询 │
│ │ · 成本核算 │ │
│ │ · 报价计算/输出 │ │
└──────────────┴──────────────────┴───────────────────────────┘
2.4 报价计算模型

成本构成树
总报价 = 产品总价 + 税费
├── 工件总价 = Σ(材料费 + 加工费 + 热处理费 + 表面处理费)
│ ├── 材料费 = 重量 × 材料单价
│ ├── 加工费 = Σ(工序工时 × 工序单价)
│ ├── 热处理费 = 重量 × 热处理费率
│ └── 表面处理费 = 面积 × 表面处理费率
├── 外购费用
├── 包装费用
├── 运输费用
├── 设计费用
├── 管理费用 = (工件总价 + 外购费 + ...) × 管理费率
├── 二装费用
└── 税费 = 应纳税基数 × 税率
报价策略维度
| 策略类型 | 管理费率 | 利润率 | 适用场景 |
|---|
| 标准报价 | 12% | 18% | 常规项目 |
| 竞争报价 | 10% | 12% | 竞争激烈项目 |
| 高端报价 | 18% | 25% | 高精度/高难度项目 |
| 批量报价 | 8% | 10% | 批量生产项目 |
2.5 数据实体关系
客户 1─N→ 产品 1─N→ 工件
├─ 工艺路线(多道工序)
└─ 费用明细
原材料 ─→ 材料成本
外购件 ─→ 外购费用
报价策略 ─→ 管理费率/利润率
3. 需求清单
3.1 核心功能需求(已实现)
| 编号 | 模块 | 需求描述 | 实现状态 | 优先级 |
|---|
| R01 | 系统配置-工序 | 工序名称增删改查,支持分类 | ✅ 已实现 | P0 |
| R02 | 系统配置-术语 | 工艺术语增删改查,支持分类 | ✅ 已实现 | P0 |
| R03 | 系统配置-原材料 | 原材料类别/价格管理,启用禁用 | ✅ 已实现 | P0 |
| R04 | 系统配置-材料明细 | 原材料规格/密度/单价/供应商明细 | ⚠️ 部分实现 | P1 |
| R05 | 零件管理-零件记录 | 零件编号/名称/材质/重量等管理 | ✅ 已实现 | P0 |
| R06 | 零件管理-外购件 | 外购件编号/名称/供应商/单价管理 | ✅ 已实现 | P0 |
| R07 | 报价管理-客户信息 | 客户名称/联系人/电话/地址管理 | ✅ 已实现 | P0 |
| R08 | 报价管理-产品信息 | 产品编号/名称/图号/数量管理 | ✅ 已实现 | P0 |
| R09 | 报价管理-工件明细 | 工件编号/材质/重量/工艺路线配置 | ✅ 已实现 | P0 |
| R10 | 报价管理-工艺路线 | 工序选择/工时/单价/小计 | ✅ 已实现 | P0 |
| R11 | 报价管理-费用计算 | 材料费/加工费/管理费/利润完整计算 | ✅ 已实现 | P0 |
| R12 | 报价单输出 | 报价单格式化输出/打印 | ✅ 已实现 | P0 |
| R13 | 图纸上传 | PDF文件上传/预览 | ✅ 已实现 | P0 |
| R14 | 图纸解析-正则 | 正则表达式提取零件名称/材质/尺寸等 | ✅ 已实现 | P0 |
| R15 | 图纸解析-VL模型 | 通义千问VL视觉模型解析 | ✅ 已实现 | P1 |
| R16 | 图纸解析-DeepSeek | DeepSeek LLM解析 | ✅ 已实现 | P1 |
| R17 | 图纸解析-Qwen | Qwen3.5 LLM解析 | ✅ 已实现 | P1 |
| R18 | 图纸解析-本地AI | Transformers.js CLIP本地解析 | ✅ 已实现 | P2 |
| R19 | CAD说明解析 | DXF/DWG文件格式说明解析 | ✅ 已实现 | P1 |
| R20 | 报价策略管理 | 多策略维护/对比/推荐 | ✅ 已实现 | P1 |
| R21 | 工时公式标定 | 实测数据录入/系数拟合/参数配置 | ✅ 已实现 | P1 |
| R22 | 采购单生成 | 基于报价生成采购单 | ✅ 已实现 | P2 |
| R23 | 合同生成 | 基于采购单生成合同 | ✅ 已实现 | P2 |
| R24 | 交付管理 | 项目状态跟踪/交付信息管理 | ✅ 已实现 | P2 |
| R25 | 数据导入导出 | 策略/配置数据导入导出 | ✅ 已实现 | P2 |
3.2 增强功能与待完善项
| 编号 | 需求描述 | 当前状态 | 建议优先级 |
|---|
| R26 | 工序编辑(修改已有工序) | ⚠️ 部分覆盖 | P1 |
| R27 | 工艺术语完整编辑/删除功能 | ⚠️ 部分覆盖 | P1 |
| R28 | 大写金额转换函数实现(中文大写) | ⚠️ 未完整实现 | P2 |
| R29 | 响应式设计(移动端适配) | ⚠️ 仅基础viewport | P2 |
| R30 | 批量PDF图纸上传/解析 | ⚠️ 部分实现 | P2 |
| R31 | 数据持久化导出(非LocalStorage) | ⚠️ 部分实现 | P1 |
| R32 | 输入校验完善(空值/数字合法性) | ⚠️ 部分覆盖 | P1 |
| R33 | 三级解析降级策略(VL→LLM→正则) | ⚠️ 部分实现 | P2 |
| R34 | 解析置信度/原始文本查看 | ⚠️ 部分覆盖 | P2 |
3.3 设计文档中的规划需求(未实现)
| 编号 | 需求描述 | 规划文档来源 | 建议优先级 |
|---|
| R35 | 批量PDF处理(批量上传/批量解析) | SPEC.md §9.6.3 | P3 |
| R36 | 移动端支持 | 项目分析.md §9.2.4 | P3 |
| R37 | 企业ERP系统集成 | 项目分析.md §9.1.1 | P3 |
| R38 | 多用户支持与权限控制 | 项目分析.md §9.1.2 | P3 |
| R39 | 云存储/多设备数据同步 | 项目分析.md §9.1.3 | P3 |
| R40 | 深度学习模型(RNN/Transformer工时预测) | 工时公式标定系统设计.md | P3 |
| R41 | 行业标准模板库 | 项目分析.md §9.3 | P3 |
| R42 | 地区差异化价格体系 | 项目分析.md §9.3.3 | P3 |
4. 系统设计
4.1 架构总览
┌──────────────────────────────────────────────────────────────┐
│ 用户界面层 │
│ ┌──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │ 系统配置 │ 零件管理 │ 报价管理 │ 报价单 │ 策略/标定 │ │
│ └──────────┴──────────┴──────────┴──────────┴─────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ 业务逻辑层 │
│ ┌──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │ AI处理 │ 计算 │ 解析 │ 校验 │ 策略 │ │
│ │(ai-handler)│(calculator)│(parsers)│(validator)│(strategy) │ │
│ └──────────┴──────────┴──────────┴──────────┴─────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ 状态管理层 │
│ ┌───────────────────────┐ ┌──────────────────────────────┐ │
│ │ AppState (state.js) │ │ LocalStorage / JSON文件 │ │
│ └───────────────────────┘ └──────────────────────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ AI/外部服务层 │
│ ┌──────────┬──────────┬──────────┬──────────┬─────────────┐ │
│ │ VL模型 │ DeepSeek │ Qwen │ 本地AI │ Node.js代理 │ │
│ │(视觉API) │ (LLM API)│ (LLM API)│(Transformers)│(vl-proxy) │
│ └──────────┴──────────┴──────────┴──────────┴─────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ 图形渲染层 │
│ ┌───────────────────────┐ ┌──────────────────────────────┐ │
│ │ PDF.js (PDF渲染) │ │ CAD解析 (DXF/DWG) │ │
│ └───────────────────────┘ └──────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
4.2 模块职责与依赖关系
| 模块 | 文件 | 行数 | 职责 | 依赖 |
|---|
| 主逻辑 | main.js | 5,559 | 业务编排、PDF转图片、AI调用、UI事件绑定 | 所有模块 |
| 状态管理 | state.js | 430 | 全局状态(工件/零件/配置/报价单/模型配置) | - |
| AI处理 | ai-handler.js | 692 | 请求重试、超时控制、降级策略 | state.js |
| 本地AI | ai-local.js | 258 | WebGPU检测、Transformers.js模型加载 | - |
| 计算器 | calculator.js | 556 | 工时计算、材料计算、报价计算 | state.js |
| 解析器 | parsers.js | 432 | 正则提取图纸信息 | - |
| CAD解析 | cad-parser.js | 401 | DXF/DWG文件解析 | - |
| 校验器 | validator.js | 358 | 数字/文本/必填项验证 | - |
| 报价策略 | strategy.js | 286 | 策略增删改查、对比、推荐 | state.js |
| 标定系统 | calibration.js | 392 | 实测数据录入、最小二乘法拟合 | calculator.js |
| UI组件 | ui.js | 1,699 | Tab布局、表格渲染、表单生成、报价单模板 | state.js |
| VL代理 | vl-proxy.js | 226 | Node.js代理服务器(解决CORS问题) | - |
| DWG转换 | dwg-converter.js | 249 | DWG格式转换工具 | - |
| 样式 | style.css | 646 | 全局样式(配色/布局/打印) | - |
4.3 数据存储设计
LocalStorage Key 结构:
| Key | 存储内容 | 格式 |
|---|
mold_quotation_operations | 工序名称列表 | JSON Array |
mold_quotation_terms | 工艺术语列表 | JSON Array |
mold_quotation_materials | 原材料及价格 | JSON Array |
mold_quotation_parts | 零件记录 | JSON Array |
mold_quotation_purchased | 外购件信息 | JSON Array |
mold_quotation_customers | 客户信息 | JSON Array |
mold_quotation_products | 产品信息 | JSON Array |
mold_quotation_workpieces | 工件明细 | JSON Array |
mold_quotation_strategies | 报价策略 | JSON Array |
mold_quotation_calibration | 工时标定数据 | JSON Array |
mold_quotation_formula_params | 工时公式参数 | JSON Object |
mold_quotation_vl_config | VL模型配置 | JSON Object |
currentQuotation | 当前报价单 | JSON Object |
4.4 部署方案
方案A:纯前端SPA(当前)
- 直接在浏览器打开 HTML 文件运行
- 数据存储 LocalStorage
- 需要 Node.js 代理服务器解决 VL API CORS 问题
方案B:Electron桌面应用(开发中)
- Electron 28 + electron-builder 打包
- 内置 Node.js 代理服务器
- 支持 DWG 文件本地转换
- 文件系统操作(保存/读取配置)
- 生成 Windows 安装包(NSIS/自定义打包)
5. 功能清单
5.1 Tab1:系统配置
┌─────────────────────────────────────────────┐
│ 系统配置 │
├─────────────────┬───────────────────────────┤
│ [工序名称配置] │ · 添加工序(类型:加工/热 │
│ │ 处理/表面处理/检验/装配) │
│ │ · 预设标准工序库(20+种) │
│ │ · 启用/禁用 │
├─────────────────┼───────────────────────────┤
│ [工艺术语配置] │ · 添加术语及定义 │
│ │ · 分类管理 │
├─────────────────┼───────────────────────────┤
│ [原材料配置] │ · 原材料类别/价格 │
│ │ · 启用/禁用/更新时间 │
├─────────────────┼───────────────────────────┤
│ [报策略配置] │ · 标准/竞争/高端/批量4种 │
│ │ · 管理费率/利润率配置 │
│ │ · 策略导入导出 │
└─────────────────┴───────────────────────────┘
5.2 Tab2:零件管理
┌─────────────────────────────────────────────┐
│ 零件管理 │
├─────────────────┬───────────────────────────┤
│ [零件记录] │ · 零件编号/名称/材质/重量 │
│ │ · 图纸编号/展开面积 │
│ │ · 所属产品/备注 │
├─────────────────┼───────────────────────────┤
│ [外购件信息] │ · 外购件编号/名称/规格 │
│ │ · 供应商/单价/最小订购量 │
└─────────────────┴───────────────────────────┘
5.3 Tab3:报价管理
┌─────────────────────────────────────────────┐
│ 报价管理 │
├─────────────────┬───────────────────────────┤
│ [客户信息] │ · 客户名称/联系人/电话/地址 │
├─────────────────┼───────────────────────────┤
│ [产品信息] │ · 产品编号/名称/图号 │
├─────────────────┼───────────────────────────┤
│ [工件明细] │ · 工件编号/名称/材质 │
│ │ · 重量/面积/数量 │
├─────────────────┼───────────────────────────┤
│ [工艺路线] │ · 工序选择/工时/单价 │
│ │ · 自动/手动模式 │
├─────────────────┼───────────────────────────┤
│ [费用计算] │ · 材料费/加工费/管理费 │
│ │ · 包工包料/来料加工模式 │
│ │ · 大写金额显示 │
└─────────────────┴───────────────────────────┘
5.4 Tab4:报价单输出
┌─────────────────────────────────────────────┐
│ 报价单输出 │
├─────────────────┬───────────────────────────┤
│ [客户信息确认] │ · 客户/产品基本信息 │
├─────────────────┼───────────────────────────┤
│ [工件明细表] │ · 工件清单/工艺路线 │
├─────────────────┼───────────────────────────┤
│ [费用汇总] │ · 各项费用明细 │
├─────────────────┼───────────────────────────┤
│ [打印输出] │ · 格式化报价单打印 │
│ │ · @media print样式 │
└─────────────────┴───────────────────────────┘
5.5 特殊功能模块
┌─────────────────────────────────────────────┐
│ 特殊功能模块 │
├─────────────────┬───────────────────────────┤
│ [工时公式标定] │ · 实测数据录入 │
│ │ · 系数拟合(最小二乘法) │
│ │ · 参数配置(切削效率/材料 │
│ │ 系数/精度系数) │
│ │ · 拟合结果可视化验证 │
├─────────────────┼───────────────────────────┤
│ [AI图纸解析] │ · 正则解析(免费) │
│ │ · VL模型解析(需API Key) │
│ │ · DeepSeek LLM解析 │
│ │ · Qwen LLM解析 │
│ │ · 本地AI解析(Transformers) │
│ │ · 三级降级策略 │
├─────────────────┼───────────────────────────┤
│ [采购/合同管理] │ · 采购单生成 │
│ │ · 合同生成/打印 │
│ │ · 交付状态跟踪 │
└─────────────────┴───────────────────────────┘
6. 代码规模统计
6.1 总体统计
| 统计项 | 数值 |
|---|
| 总文件数 | ~190+(含数据文件、图片、文档) |
| 核心JS代码行数 | ~12,184 行(dev目录14个JS模块) |
| 主HTML文件 | 模具附图报价系统.html(8,175行) |
| Electron桌面版 | 主进程570行 + 渲染进程JS 2,500+行 |
| Python工具脚本 | 14个脚本,共~682行 |
| 设计文档(MD) | 12个文档,共~6,000+行 |
| 价格数据文件 | 定价数据JS(4.4MB+3.4MB+1.7MB) |
| 测试HTML文件 | 5个测试页面,共~1,145行 |
| CSS样式 | dev/style.css(646行) |
6.2 核心代码分布
| 层次 | 文件 | 行数 | 占比 |
|---|
| 主逻辑 | main.js | 5,559 | 23.9% |
| UI渲染 | ui.js | 1,699 | 7.3% |
| 前端页面 | index.html | 1,575 | 6.8% |
| AI处理 | ai-handler.js | 692 | 3.0% |
| 样式 | style.css | 646 | 2.8% |
| 计算引擎 | calculator.js | 556 | 2.4% |
| 状态管理 | state.js | 430 | 1.9% |
| 解析器 | parsers.js | 432 | 1.9% |
| CAD解析 | cad-parser.js | 401 | 1.7% |
| 标定系统 | calibration.js | 392 | 1.7% |
| 校验器 | validator.js | 358 | 1.5% |
| 策略管理 | strategy.js | 286 | 1.2% |
| 本地AI | ai-local.js | 258 | 1.1% |
| DWG转换 | dwg-converter.js | 249 | 1.1% |
| VL代理 | vl-proxy.js | 226 | 1.0% |
| 小计 | | 13,799 | |
| 主HTML | 模具附图报价系统.html | 8,175 | — |
| 定价数据 | dev/pricing-data*.js | 10+MB | — |
6.3 文档规模
| 文档 | 行数 | 说明 |
|---|
| SPEC.md | 965 | 完整系统设计规格书 |
| 图纸解析问题分析.md | 597 | 技术攻关记录 |
| 报价策略系统设计.md | 367 | 策略模块详细设计 |
| 报价系统业务流程.md | 286 | BPMN业务流程图 |
| 工时公式标定系统设计.md | 402 | 标定系统详细设计 |
| 桌面版报价程序设计方案.md | 473 | Electron桌面应用设计 |
| 附图报价项目总结文档.md | 625 | 项目总结复盘 |
| 直接发送PDF给大模型解析分析.md | 316 | PDF发送方案分析 |
| 项目分析.md | 273 | 初始项目分析报告 |
6.4 Python工具脚本
| 脚本 | 行数 | 功能 |
|---|
| read_excel_sheets.py | 100 | 读取Excel定价表,生成压缩JSON |
| _audit_deep.py | 127 | 深度检查:工序编辑/外购件/置信度等 |
| _audit_html.py | 124 | HTML审计:SPEC验收标准覆盖检查 |
| _audit_gap.py | 111 | 精准检查:疑似缺失功能验证 |
| _audit_detail.py | 86 | 详细检查:术语删除/大写金额/定额Tab |
| read_excel.py | 16 | Excel读取测试 |
| read_pdf.py | 13 | PDF读取测试 |
| build_html.py | 20 | HTML构建辅助 |
| extract_docx.py | 28 | DOCX文档提取 |
| inject_data.py | 30 | 数据注入测试 |
| check_json.py | 4 | JSON格式验证 |
| _find_lines.py | 10 | 文件行搜索工具 |
| _find_media.py | 6 | 媒体文件查找 |
| _count_lines.py | 4 | 行数统计 |
7. 侧端推理链路
7.1 核心推理流程
用户上传PDF图纸
↓
PDF.js 加载PDF → 渲染为Canvas → 转Base64 JPEG
↓
┌──────解析策略选择──────┐
│ │
├──▶ 模式1:正则解析(无AI成本)
│ PDF文本提取 → 正则匹配 → 结构化数据
│ [无需网络,立即出结果]
│
├──▶ 模式2:VL视觉模型(推荐)
│ PDF图像 → VL API → JSON结构解析
│ [需API Key,效果最好,约0.02元/次]
│ ├── 通义千问VL-Plus/ Max
│ └── 需Node.js代理解决CORS
│
├──▶ 模式3:DeepSeek/Qwen LLM
│ PDF文本提取 → LLM API → 结构化数据
│ [基于文本,效果中等]
│
├──▶ 模式4:本地AI(Transformers.js)
│ PDF图像 → CLIP零样本分类 → 材质/特征识别
│ [完全本地,隐私安全,约400MB模型]
│ └── 硬件要求:WebGPU/8GB+ RAM
│
└──────────────────────────
↓
结构化解码 → 置信度评估
↓
填充报价表单(用户确认/修正)
↓
调用 Calculator.estimateProcessRoute()
↓
自动规划工艺路线(基于材质/尺寸/精度规则)
↓
估算工时定额(切削效率 × 材料系数 × 精度系数)
↓
成本核算 → 应用报价策略 → 生成报价单
7.2 AI推理链路时序
[用户] ───上传PDF───→ [PDF.js] ──渲染为图像──→ [Canvas]
│ │
│ ┌────────────────────────────────────────┘
│ ▼
│ [VL API Proxy:3001] (或直连DashScope)
│ │
│ ├── request: image/jpeg base64 + prompt
│ ├── response: JSON {partName, material, dimensions...}
│ │
│ ▼
│ [Validator] ──校验数据类型、范围
│ │
│ ▼
│ [Parser] ──结构化解析
│ │
│ ▼
│ [Calculator] ──工时估算 + 成本计算
│ │
│ ▼
│ [Strategy] ──应用报价策略
│ │
│ ▼
│ [UI] ──渲染报价单
7.3 容错/降级机制
| 层级 | 机制 | 实现 |
|---|
| AI请求 | 最大3次重试 + 指数退避 | ai-handler.js execute() |
| 超时控制 | 120s超时(可配置) | Promise.race + setTimeout |
| 降级链路 | VL → DeepSeek → 正则(三级降级) | executeWithFallback() |
| 模型降级 | WebGPU → WebGL → WASM → CPU | ai-local.js 设备检测 |
| 网络检测 | HuggingFace HEAD请求探活 | checkNetworkStatus() |
| 内存监控 | JS堆内存用量监测 | performance.memory 检查 |
7.4 已知推理瓶颈
| 瓶颈 | 原因 | 影响 |
|---|
| PDF转图片内存爆炸 | PDF.js 渲染大尺寸PDF时内存飙升 | 页面卡顿/崩溃(已限制到3MB/600px) |
| VL API CORS问题 | 浏览器跨域限制 | 需额外Node.js代理服务器 |
| Transformers.js模型大 | CLIP模型约400MB下载 | 首次加载时间长,需耐心等待 |
| API Key管理 | VL/DeepSeek/Qwen各自需要API Key | 用户配置门槛较高 |
8. 模型特征分析
8.1 价格数据模型
定价数据从 Excel 导出并转换为 JS 文件,共包含:
| 数据维度 | 数量/大小 |
|---|
| 材料类型 | ~50+种(钢材/铜/铝/塑料等) |
| 零件记录 | 数百条(含C类零件完整数据集) |
| 规格字段 | 28个维度(长/宽/高/材质/工时/成本/定价等) |
| 原始数据大小 | dev/pricing-data.js: 4.4MB |
| 压缩形式 | pricing_data_compact.json: 1.7MB |
8.2 工时计算数学模型
车削: T = (π × D × L) / 切削效率 × 材料系数
铣削: T = (L × W) / 切削效率 × 材料系数
CNC: T = (L × W × H) / 切削效率 × 材料系数
磨削: T = (L × W) / 磨削效率 × 材料系数 × 精度系数
线割: T = (周长 × H) / 切割速度 × 复杂度系数
总工时 = Σ(T_i) + 基础工时
设备费率
| 设备 | 费率(元/h) |
|---|
| 车床 | 30 |
| 铣床 | 30 |
| CNC | 60 |
| 加工中心 | 60 |
| 平面磨/外圆磨 | 30 |
| 线割 | 50 |
| 钻孔 | 25 |
| 热处理 | 40 |
8.3 工艺路线规则模型
材质 → 基础工艺路线:
| 材质类型 | 默认工艺路线 |
|---|
| 模具钢 | 粗加工 → 热处理 → 精加工 → 检验 |
| 普通钢材 | 粗加工 → 热处理 → 精加工 |
| 铝合金 | 粗加工 → 精加工 → 表面处理 |
| 铜合金 | 粗加工 → 精加工 → 抛光 |
| 不锈钢 | 粗加工 → 精加工 → 表面处理 |
尺寸 → 附加规则:
- 大尺寸(>200mm) → 龙门铣粗加工 + 卧式加工中心精加工
- 小尺寸(<50mm) → 精密车削 → 磨削 → 抛光
- 高精度(IT6+) → 多次精加工 → 研磨 → 检验
表面粗糙度 → 工艺调整:
- Ra>3.2:车/铣 → 磨 → 抛光
- Ra1.6-3.2:车/铣 → 磨 → 精磨
- Ra0.8-1.6:车/铣 → 磨 → 研磨 → 抛光
- Ra<0.8:车/铣 → 磨 → 研磨 → 超精加工
8.4 系数拟合模型(标定系统)
采用最小二乘法(Linear Regression)进行系数拟合:
公式: y = a × x + b
其中:a = 1/切削效率,b = 基础工时
拟合方法:
a = (n×Σxy - Σx×Σy) / (n×Σx² - (Σx)²)
b = (Σy - a×Σx) / n
材料系数归一化:以45#钢为基准(1.0),其他材料相对值
精度系数归一化:以粗加工为基准(1.0),精加工(1.3),超精加工(1.8)
9. Git 历史分析
9.1 提交概览
| 指标 | 数值 |
|---|
| 总提交数 | 22 |
| 开发者 | 1人(david_232656) |
| 首个提交 | 2026-03-14 17:44 |
| 末次提交 | 2026-03-22 18:00 |
| 开发周期 | 8天(密集迭代) |
| 分支 | master(本地);origin/master + origin/DEV(远程) |
9.2 提交时间线
2026-03-14 Initial commit (671a3b7) ✓
附图报价测试功能优化 (d7567df)
测试问题优化 (6a820e6)
2026-03-15 测试问题优化 (66d3828)
测试问题优化 (ea5fcae)
2026-03-16 VL大模型解析图纸测试问题优化 (c3afda5) ← 核心AI功能
PDF解析测试问题优化 (590f973)
PDF文件解析报错优化 (f7eb71a)
测试问题优化,增加业务流程图 (bef65bd)
测试问题优化 (e239b30)
测试问题优化 (12e68ab)
测试问题优化 (b1dfa66)
增加ElectronDev桌面程序 (88bf7c2) ← 桌面版启动
启动问题优化 (d5ceab7)
更新自述文件 (fa61c95)
2026-03-17 构建问题优化 (9516025)
构建问题优化 (da52a43)
测试问题优化 (1b5e33e)
测试问题优化 (cd095cc)
Initial commit (0db1fc0) ← ElectronDev独立初始化
2026-03-22 3月18-21日代码更改:报价策略测试问题优化 (4678e19)
添加Git LFS配置,防止提交大于100MB的文件 (19e8b38)
9.3 提交类型分布
| 类型 | 数量 | 占比 | 说明 |
|---|
| 测试问题优化 | 11 | 50% | 密集的测试驱动迭代 |
| 构建/启动优化 | 3 | 13.6% | Electron构建/启动问题 |
| PDF解析优化 | 2 | 9.1% | PDF核心功能修复 |
| VL模型功能 | 1 | 4.5% | 视觉大模型集成 |
| 桌面版 | 1 | 4.5% | Electron桌面应用 |
| 基础设施 | 2 | 9.1% | Git LFS/README |
| Initial commit | 2 | 9.1% | 项目初始化 |
9.4 开发节奏分析
测试优化
┌──────────┐
VL集成 ─→ PDF解析 ─→ 业务流程图 ─→ Electron ─→ 策略优化 ─→ LFS配置
03-14 03-16 03-16 03-16 03-17~21 03-22
- 前3天(03-14~03-16)为核心功能建设期——VL模型、PDF解析、业务流程
- 03-16 密集提交9次,单日最高活跃度
- 03-17~03-22 转向稳定性优化和策略系统完善
- 平均每天2.75次提交(密集度较高)
9.5 代码变更量
| 统计项 | 数值 |
|---|
| 总变更文件数 | 71个 |
| 总新增行数 | 510,062 |
| 总删除行数 | 8,862 |
| 净增行数 | 501,200(含大量价格数据文件) |
| 单个最大文件 | dev/pricing-data-new.js(294,703行)/ dev/pricing-data.js(198,523行) |
注:大量新增行主要来自pricing-data*.js系列文件(累计约10MB、50万行),
这些是Excel定价数据的JS序列化文件。删除行中含有二进制文件的Git LFS迁移。
10. 后续迭代建议
10.1 技术债务清单
| 编号 | 问题 | 位置 | 影响 | 建议 |
|---|
| T01 | 全局变量过多,模块间耦合度高 | main.js + 各模块 | 维护困难 | 逐步迁移到模块化架构(ES Module) |
| T02 | 无单元测试 | 全部 | 修改风险高 | 引入Jest/Vitest,为核心计算函数写测试 |
| T03 | 数据文件过大(10MB+ JS) | dev/pricing-data*.js | 加载慢 | 改为按需加载/Lazy Load/服务端API |
| T04 | LocalStorage容量限制(5MB) | 全部 | 数据易丢失 | 引入IndexedDB或SQLite(Electron) |
| T05 | 浏览器文件编码问题 | state.js等UTF-16文件 | 乱码 | 统一UTF-8编码 |
| T06 | 价格数据与代码硬耦合 | dev/pricing-data.js | 更新困难 | 改为独立JSON文件按需加载 |
10.2 功能迭代优先级
P0 — 核心稳定性(建议立即启动)
- 完善工序/术语的编辑+删除功能(当前仅部分覆盖)
- 实现完整的大写金额转换函数
- 增加报价数据的导入/导出备份功能
- 完善输入校验(空值、数字范围、必填项)
P1 — 用户体验提升(建议1-2周内)
- 实现三级推理降级策略的完整链路(VL→LLM→正则)
- 解析置信度可视化展示 + 原始文本查看
- 响应式布局适配平板/移动设备
- 优化PDF解析内存占用(支持更大文件)
P2 — 功能扩展(建议1个月内)
- 批量PDF上传与解析
- 兼容层替换LocalStorage为IndexedDB
- Electron桌面版打包与发布(Win安装包)
- 工时标定系统的可视化图表(拟合曲线)
P3 — 长期演进(建议3个月+)
- 后端服务化(Spring Boot)—— 支持多用户、数据共享
- ERP/CRM 数据接口集成
- 基于历史报价的AI智能策略推荐
- 移动端适配(H5 / 小程序)
10.3 架构演进方向
当前(纯前端SPA)
↓
近期(Electron桌面版——有Node能力,可本地文件操作/数据库)
↓
中期(Electron + 本地SQLite + 后端API服务)
↓
远期(Spring Boot + Vue3 前后端分离——与客户赋能系统融合)
10.4 潜在风险
| 风险 | 描述 | 应对措施 |
|---|
| AI API依赖 | VL/LLM API变更或停服 | 强化本地AI(Transformers.js)能力 |
| 图纸数据安全 | 图纸上传到第三方API | 推广本地AI解析模式,数据脱敏 |
| 定价数据过期 | 材料价格波动导致报价不准 | 建立价格更新机制,支持定期导入 |
| 浏览器兼容 | Transformers.js/WebGPU依赖 | 完善降级策略,提示推荐浏览器 |
所有评论(0)