# Upload 631错误修复 - 测试验证计划 ## 修复方案 v2.0 **核心改动**:完全跳过NovaStorage云存储,改用Parse Attachment对象存储base64数据 ## 修改的文件 ### 1. `project-file.service.ts` - **方法**:`uploadProjectFileWithRecord()` - **改动**: - ❌ 移除NovaStorage上传逻辑 - ❌ 移除Parse File fallback逻辑 - ✅ 直接转换文件为base64 - ✅ 创建data URL格式存储 - ✅ 保存到Attachment和ProjectFile表 ### 2. 组件文件(无需改动) - `stage-requirements.component.ts` - 已使用`uploadProjectFileWithRecord()` - `stage-delivery-execution.component.ts` - 已使用`uploadProjectFileWithRecord()` ## 测试步骤 ### 前置条件 1. 清除浏览器缓存和localStorage 2. 刷新页面 3. 打开浏览器控制台 ### 测试用例 1:需求确认阶段 - 拖拽上传 **步骤**: 1. 进入项目详情页 → 需求确认阶段 2. 拖拽5-10张图片到上传区域 3. 观察控制台日志 **预期结果**: ``` 📤 开始上传文件: test1.jpg 🔄 使用Parse Attachment直接存储(跳过NovaStorage) ✅ 文件转换成功: test1.jpg(使用base64存储) ✅ 文件上传并记录创建成功: test1.jpg ``` **检查项**: - ✅ 所有图片上传成功(100%成功率) - ✅ 没有出现`http://api.qiniu.com`请求 - ✅ 没有出现631错误 - ✅ 图片能正常显示 ### 测试用例 2:需求确认阶段 - 粘贴上传 **步骤**: 1. 复制一张图片(Ctrl+C) 2. 在上传区域粘贴(Ctrl+V) 3. 观察控制台日志 **预期结果**:同测试用例1 ### 测试用例 3:需求确认阶段 - CAD文件上传 **步骤**: 1. 点击"上传CAD文件"按钮 2. 选择.dwg或.pdf文件 3. 观察控制台日志 **预期结果**:同测试用例1 ### 测试用例 4:交付执行阶段 - 拖拽上传 **步骤**: 1. 进入项目详情页 → 交付执行阶段 2. 拖拽5-10张图片到白模/软装/渲染/后期区域 3. 观察控制台日志 **预期结果**:同测试用例1 ### 测试用例 5:交付执行阶段 - 点击上传 **步骤**: 1. 点击"上传文件"按钮 2. 选择多张图片 3. 观察控制台日志 **预期结果**:同测试用例1 ### 测试用例 6:大文件上传 **步骤**: 1. 准备5MB、8MB、10MB的图片各一张 2. 依次上传 3. 观察控制台日志和上传时间 **预期结果**: - ✅ 所有文件上传成功 - ✅ 上传时间:5MB < 2秒,10MB < 5秒 ### 测试用例 7:数据持久化 **步骤**: 1. 上传5张图片 2. 刷新页面 3. 检查图片是否仍然显示 **预期结果**: - ✅ 所有图片仍然显示 - ✅ 图片URL为`data:image/jpeg;base64,...`格式 ### 测试用例 8:批量上传 **步骤**: 1. 一次性拖拽20张图片 2. 观察控制台日志 3. 等待所有上传完成 **预期结果**: - ✅ 所有20张图片都上传成功 - ✅ 没有任何631错误 - ✅ 上传速度可接受(<30秒) ## 成功标准 ### 必须满足 - ✅ **100%上传成功率**:无论上传多少次,所有图片都成功 - ✅ **0次631错误**:完全没有七牛云相关错误 - ✅ **0次NovaStorage调用**:控制台不应出现`NovaStorage`字样 - ✅ **图片正常显示**:base64 data URL能被浏览器正确解析 ### 可选优化 - ⚠️ 上传速度:10MB图片 < 5秒 - ⚠️ 数据库大小:可接受的增长(后期可迁移到CDN) ## 回退方案 如果base64方案出现问题,可以考虑: 1. 使用Parse Server的文件上传API(需要后端支持) 2. 配置NovaStorage只使用OSS(需要修改fmode-ng配置) 3. 自建文件上传服务器(长期方案) ## 监控指标 上线后观察: 1. **错误率**:631错误应为0% 2. **成功率**:上传成功率应为100% 3. **性能**:平均上传时间 4. **数据库大小**:Attachment表的增长速度 ## 结论 如果所有测试用例通过,证明: - ✅ 631错误已彻底解决 - ✅ 上传机制稳定可靠 - ✅ 方案简单易维护