2.4 KiB
2.4 KiB
需求分析-2026-05-21-00-05-04
开始时间
2026-05-21-00-05-04
原始需求摘要
- 项目库导入 DICOM 影像、3D 模型时增加进度条。
- 导入时允许选择 ZIP 或其他常见压缩格式,方便传输批量 DICOM/STL。
- 导入 3D 模型时出现 Chrome
Render process gone / Out of Memory,需要定位原因并修复。
业务目标
- 让大体量医学影像和 STL 构件导入过程有明确进度反馈。
- 支持用户用压缩包一次性传输多文件,减少文件选择和网络传输压力。
- 避免前端在大文件导入时因 base64 转换和 JSON 请求造成浏览器内存崩溃。
输入与输出
- 输入:DICOM 文件、STL 文件、ZIP/TAR/TAR.GZ/TGZ/GZ 等压缩文件。
- 输出:项目级 DICOM/STL 上传目录中的解包文件、更新后的项目状态、导入进度条、导入成功/失败反馈。
影响范围
WebSite/src/components/ProjectLibrary.tsx:导入入口、进度条、文件选择 accept、导入状态。WebSite/src/lib/api.ts:新增带上传进度的 multipart 导入 API。WebSite/server.ts:新增 multipart 文件接收、压缩包展开、导入文件筛选与项目状态更新。WebSite/package.json、WebSite/package-lock.json:新增 multipart/zip 解析依赖。工程分析/经验记录.md:记录本次导入链路经验。
关键约束
- 上传资产仍必须写入
WebSite/data/uploads/<projectId>/DICOM|STL,不能覆盖默认Head_CT_DICOM/与Head_CT_ReConstruct/。 - 大文件导入不能再在浏览器中整包 base64 化。
- 压缩包解压必须防止路径穿越,不能写出目标目录。
- 导入后需要清理项目预览缓存,避免继续使用旧 DICOM/STL。
风险点
- ZIP 内可能包含多层目录、中文文件名、无扩展 DICOM 文件或无关文件,需要筛选可导入文件。
- TAR.GZ 解包需要处理普通文件、目录和路径安全。
- 上传进度只能覆盖网络上传阶段,服务端解压/解析阶段需要用“处理中”状态承接。
- 大 STL 导入后如果立即按实体精度加载过多预览,仍可能造成前端渲染压力。
默认假设
- “其他常见压缩格式”优先支持
.zip、.tar、.tar.gz、.tgz,并支持单文件.gz。 - DICOM 导入接受
.dcm、.dicom,同时保留压缩包中无扩展 DICOM 的识别尝试空间。 - 3D 模型导入当前仍以 STL 为主,压缩包中只提取
.stl。