# 代码功能性能测试报告答复 ## 修复与优化清单(对应《代码功能性能测试报告.md》) ### 一、严重问题修复 🔴 1) 下载函数重复定义 → 已抽取公共工具 - 新增:`src/utils/download.js` - 提供:`downloadBlob`、`downloadFile`、`getFilenameFromContentDisposition`、`saveBlobResponse` - 改造:`src/api/services.js` 全量改用公共工具,移除重复函数 2) 会议纪要 API 错误处理不一致 → 已重写 - 位置:`src/api/services.js` → `meetingMinutesAPI.generateMinutes` - 逻辑: - 优先以 `responseType: 'blob'` 请求并保存; - 捕获后仅做一次 JSON 回退,若返回 `fileUrl` 则下载; - 双重失败则向上抛出,避免循环与沉默失败。 ### 二、中等问题修复 🟡 1) 表单输入校验 - `src/views/KnowledgeBase.vue`:新增 `validateForm()`,要求“主题、详细内容”非空。 - `src/views/MeetingMinutes.vue`:新增最小校验,至少有一项文本不为空。 2) 文件上传限制 - `src/views/InvoiceExtractor.vue`:新增类型与大小限制(PDF/图片,≤10MB),在 `onChange` 中过滤,警告提示。 3) 环境变量访问方式 - `env.config.js`:改为 `import.meta.env?.VITE_*`,避免对 `import.meta` 的可选链访问。 ### 三、轻微问题优化 🟢 1) 支持动态文件名 - 下载工具支持从 `Content-Disposition` 解析文件名,若未提供则回退默认名:`saveBlobResponse()`。 ## 回归测试结论 - 构建:容器内 `npm install && npm run dev` 正常,Vite 监听 `0.0.0.0:3000`。 - 基本功能: - 路由切换正常; - 知识库提交校验生效; - 会议纪要至少一项校验生效; - 发票提取仅接受 PDF / 图片且 ≤10MB; - 竞品调研下载流程正常(需后端配合)。 - 下载:若响应为 blob,并且提供 `Content-Disposition`,可自动使用服务端文件名;否则使用回退名。 - 错误处理:会议纪要下载流程在 blob 失败时做一次 JSON 回退,不再二次递归或死循环。 ## 影响面 - 统一了下载行为,降低重复代码。 - 提高了用户输入、上传的安全性与后端容错性。 ## 后续建议(与测试报告一致) - 引入公共错误提示封装与请求防抖; - 增加单元测试(download 工具、表单校验、API 异常分支); - 完善安全策略(XSS 过滤、CORS、后端敏感配置)。