2.0 KiB
2.0 KiB
实现方案-2026-05-21-00-43-44
实现方案文档路径
工程分析/实现方案-2026-05-21-00-43-44.md
修改目标
- 复现
3279-STL.zip导入时的 422 错误,获取具体失败原因。 - 修复 ZIP 内 STL 解压/筛选/写入逻辑,使该压缩包可导入。
- 优化导入失败 UI,将错误状态和原因显示在顶部导入进度区域。
- 补充测试记录和经验记录。
涉及路径
WebSite/server.tsWebSite/src/components/ProjectLibrary.tsx工程分析/经验记录.md
技术路线
- 使用
curl -F files=@3279-STL.zip对现有接口复现错误,查看响应体。 - 检查
AdmZip解包结果、ZIP 条目大小和写入逻辑。 - 如果问题来自大 ZIP 一次性
entry.getData()导致内存或写入失败,则改为按条目流式/逐条写入目标目录,减少内存峰值。 - 如果问题来自文件名扩展名、编码或路径处理,则修正筛选和安全文件名逻辑。
- 前端导入状态增加
failedphase,错误时保留进度卡并展示错误文案。
执行步骤
- 创建本次工程分析文档。
- 本地复现 422,记录响应。
- 修改后端 ZIP 导入逻辑和前端错误反馈。
- 执行
npm run lint、npm run build。 - 用
3279-STL.zip对临时项目实际导入验证。 - 追加经验记录,提交推送 Gitea,重新部署。
兼容性与回滚方案
- 若
AdmZip对该 ZIP 仍不稳定,可增加系统unzipfallback 或改用更适合流式解压的库。 - 前端错误卡只影响导入反馈,不影响其他页面。
- 导入失败时不更新项目状态,避免半成品资产进入项目库。
预计文件变更
- 后端 1 个、前端组件 1 个、工程分析文档 4 个。
提交与部署策略
- 不提交
3279-STL.zip和解压资产。 - commit message 包含
2026-05-21-00-43-44与“修复 ZIP STL 导入失败”。 - 部署后验证
/api/health、首页以及 ZIP 导入结果。