upload-fix-test-plan.md 3.9 KB

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错误已彻底解决
  • ✅ 上传机制稳定可靠
  • ✅ 方案简单易维护