一、解决什么问题
PPAP文件包通常包含多个Excel工作簿,跨文件一致性审核是重复劳动重灾区:
表格
设计目标:机器做80%的重复检查,SQE聚焦20%的专业判断。
二、技术架构
plain
Q-Heart PPAP Auditor├── 前端层:HTML/CSS/JS,Vue/React可选├── 桌面壳:Tauri(Rust后端)│ └── 系统级能力:文件拖拽、本地存储、打印服务├── 文件解析:SheetJS(xlsx.full.min.js)├── 数据安全:CryptoJS(AES加密)├── 报告渲染:Marked(Markdown→HTML)└── AI接口:可配置DeepSeek/OpenAI/Ollama
安全设计:
文件解析在浏览器内存完成,不上传服务器
API Key本地AES加密存储
一键清除所有数据
三、功能详解(对应代码实现)
3.1 多模型AI配置
JavaScript
// 预设模型配置(MODEL_PRESETS)const MODEL_PRESETS = {deepseek: {apiUrl: 'https://api.deepseek.com/v1/chat/completions',model: 'deepseek-chat',requiresKey: true},openai: {apiUrl: 'https://api.openai.com/v1/chat/completions',model: 'gpt-4o',requiresKey: true},ollama: {apiUrl: 'http://localhost:11434/v1/chat/completions',model: 'llama3:8b',requiresKey: false // 本地模型无需Key}};
UI实现:
下拉选择预设,自动填充URL和模型名
支持自定义配置
API Key密码框输入,加密存储
3.2 批量文件解析
支持格式:.xlsx / .xls / .csv

解析逻辑:
JavaScript
// 核心流程:processFiles → processDrop// 1. 过滤支持格式const supported = files.filter(f =>f.name.endsWith('.xlsx') ||f.name.endsWith('.xls') ||f.name.endsWith('.csv'));// 2. Excel解析(SheetJS)const wb = XLSX.read(new Uint8Array(data), { type: 'array' });wb.SheetNames.forEach(sn => {const json = XLSX.utils.sheet_to_json(wb.Sheets[sn]);// 清洗:去除全空行const cleanData = json.filter(row =>Object.values(row).some(v => v !== null && v !== undefined && String(v).trim() !== ''));});// 3. CSV直接读取文本const text = await file.text();
输出结构:
JavaScript
{name: "PSW.xlsx",type: "excel",sheets: [{name: "Sheet1",headers: ["零件号", "版本", "日期"],data: [{零件号: "ABC-123", 版本: "A", 日期: "2024-11-08"}]}]}
3.3 离线规则审核
当前实现规则:
表格
评分算法:
JavaScript
const score = Math.max(0, 100 - (majorCount * 25 + minorCount * 8 + obsCount * 3));// 严重:-25分/个,一般:-8分/个,观察:-3分/个
结论判定:
严重=0且一般≤2:
✅ 通过严重≥2:
❌ 不通过其他:
⚠️ 有条件通过
3.4 AI深度审核
调用流程:
JavaScript
// 1. 组装提示词(auditPrompt)const auditPrompt = `你是IATF 16949审核专家...` + allDataText;// 2. 构造请求头const headers = {'Content-Type': 'application/json'};if(modelConfig.apiKey) {headers['Authorization'] = `Bearer ${modelConfig.apiKey}`;}// 3. fetch调用const r = await fetch(modelConfig.apiUrl, {method: 'POST',headers: headers,body: JSON.stringify({model: modelConfig.model,messages: [{ role: 'user', content: auditPrompt }],temperature: 0.1 // 低温度,输出稳定})});
输出格式:Markdown,含四级标题结构
## 一、审核结论## 二、不符合项清单## 三、SMART整改指令## 四、详细审核意见
3.5 报告渲染
结论横幅(根据解析结果动态样式):
HTML
<!-- 通过:绿色渐变 --><divclass="conclusion-banner pass"><divclass="icon">✅</div><divclass="verdict">通过</div></div><!-- 有条件通过:黄色渐变 --><divclass="conclusion-banner conditional">...</div><!-- 不通过:红色渐变 --><divclass="conclusion-banner fail">...</div>
表格渲染:标准Markdown表格 → HTML <table>
操作按钮:
📋 离线审核(免费)🤖 AI深度审核(显示当前模型名)📄 导出PDF(调用window.print())🗑️ 清除数据(清除localStorage所有数据)
3.6 多语言支持
实现方式:i18n字典,三语言完整覆盖
表格
zh | ||
en | ||
de |
切换方式:顶部按钮,localStorage持久化
四、使用流程
plain
1. 启动应用(Tauri桌面端)└── 自动加载上次保存的模型配置2. 选择/拖拽文件夹└── 自动识别.xlsx/.xls/.csv文件└── 显示文件列表:文件名/工作表名/行数3. 选择审核模式├── 离线审核(免费):规则引擎,秒出结果└── AI深度审核(需配置API):关联分析,详细建议4. 查看报告└── Markdown渲染,含结论横幅、表格、列表└── 可打印/导出PDF5. 清除数据(可选)└── 一键清除localStorage所有数据
五、当前局限与诚实说明
表格
六、适用场景
表格
不适用:已部署成熟QMS/PLM系统的企业;年审PPAP<3个的个体。
七、获取与反馈
当前形态:Tauri桌面端,Windows/Mac
分发方式:
百度网盘: 链接: https://pan.baidu.com/s/1OLqdop88yL_Y_xHJZasIgg?pwd=5sbu 提取码: 5sbu
反馈渠道:
邮件:zhengjinfa33@163.com
特别征集:脱敏的PPAP文件包(用于测试规则覆盖度),可换取企业版授权。
八、技术栈依赖
表格
工具源于实际审核工作痛点,持续迭代中。欢迎试用,欢迎拍砖。
夜雨聆风