Files
REVOXELSEG_DICOM/工程分析/需求分析-2026-05-25-14-00-24.md

55 lines
3.4 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-25-14-00-24
## 开始时间
2026-05-25-14-00-24
## 原始需求摘要
用户反馈“导出项目及结果”的压缩包内容异常,只能看到 `entries``PaxHeaders` 和无扩展名编号文件,缺少可直接识别的 JSON、分割类别映射和 `.nii.gz` 分割结果。用户希望压缩包内不再套项目名目录,内容格式统一;分类导出的 `.nii.gz` 直接使用类别名作为文件名。同时,点击导出后需要在页面最上方显示不影响其他操作的导出进度条。最后需要提供一个可调用 API给定 DICOM 和 STL能够指定 X/Y/Z 轴拉伸、旋转、平移、缩放、镜像、是否自动配准、导出内容、是否记录项目库、是否上锁。
## 业务目标
- 让项目导出包在 Windows 常见解压工具中可直接识别文件结构,不出现 PAX 头目录。
- 让导出包内的分割结果、类别映射、位姿和模型文件按稳定目录命名,便于后续处理脚本读取。
- 让用户点击导出后能获得明确进度反馈,同时不阻塞逆向工作区其他功能。
- 为外部系统或脚本提供一条“上传 DICOM/STL -> 应用位姿/自动配准 -> 可选记录/锁定 -> 可选导出”的自动化接口。
## 输入与输出
- 输入:
- 当前项目库中的 DICOM、STL、构件可见性、构件 ID、位姿和导出选项。
- 批处理 API 的 multipart 文件或 JSON 资产、位姿参数、自动匹配参数、导出目标、项目记录与锁定开关。
- 输出:
- ZIP 格式项目导出包。
- 顶部导出进度条。
- 新增批处理 API 的 JSON 响应或 ZIP 下载响应。
## 影响范围
- `WebSite/server.ts`:项目导出包生成、批处理 API、导出响应类型与文件名。
- `WebSite/src/lib/api.ts`:项目导出包下载进度回调。
- `WebSite/src/components/ReverseWorkspace.tsx`:顶部导出进度条和导出调用。
- `工程分析/经验记录.md`:完成后追加本次经验。
## 关键约束
- 继续保持单独 DICOM 原始影像下载接口兼容,不主动改动其 tar.gz 行为。
- 项目导出包内不再以项目名作为根目录,因为下载文件名已经包含项目标识。
- 分类分割导出时,`.nii.gz` 文件名优先使用构件类别名。
- API 默认不导出任何内容,避免未明确指定时产生大文件下载。
- 当前系统的位姿模型为统一缩放X/Y/Z 轴拉伸沿用现有工作区语义,即选择轴向后计算统一缩放以适配 DICOM 尺寸,而不是引入三轴非等比例缩放字段。
## 风险点
- ZIP 替代 tar.gz 会改变导出包扩展名和 MIME 类型,需要前端下载逻辑正确读取服务端文件名。
- 导出进度条如果只依赖响应下载进度,在服务端生成阶段可能没有真实百分比,需要结合平滑进度和下载事件。
- 批处理 API 上传文件可能较大,需要复用现有导入解包逻辑并在临时项目不入库时清理文件。
- 自动配准可能因未指定骨骼构件或 DICOM/STL 不完整而失败,应返回可读错误。
## 默认假设
- 用户当前要修复的是“导出项目及结果”按钮生成的压缩包,不包括“下载原始 DICOM 归档”。
- 外部调用 API 可接受 multipart/form-data并可通过 `metadata` JSON 字段传入复杂参数。
-`recordProject=false``lock=true` 时,锁定没有项目库持久对象可附着,因此仅在 `recordProject=true``lock=true` 时保留项目记录。