Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-21-00-43-44.md

52 lines
2.0 KiB
Markdown
Raw Blame History

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