附图报价系统设计分析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)