Files
Head_CT_Morph/工程分析/需求分析-2026-05-03-23-22-10.md

56 lines
2.8 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-03-23-22-10
## 原始需求
用户要求严格使用代码编纂工作流,并在最开始确认整体流程。本次需求分析、实现方案、测试方案和执行修改均不需要用户二次人工确认。
需要修复两个问题:
1. 点击 DICOM 阅览中的切片滚动条时出现与 ZIP 文件相关的浏览器警告:`The file at ...head_ct_morph_selected_54ed40feeb63.zip was loaded over an insecure connection. This file should be served over HTTPS.`
2. 切换 DICOM 阅览显示模式时出现请求失败:`GET /api/library/reformat-preview ... net::ERR_CONNECTION_RESET`
## 目标
- DICOM 阅览切片滚动和显示模式切换不再导致后端连接重置。
- 降低切片滑杆快速拖动时的请求风暴和后端内存压力。
- ZIP 下载完成后只触发一次下载,避免和其他 UI 操作交织造成误触发。
- 尽量避免通过直接加载 ZIP URL 的方式触发浏览器 insecure file 警告。
## 影响范围
- `web_backend.py`
- DICOM 阅览重建预览接口。
- DICOM 体数据读取和缓存策略。
- 文件下载响应的连接中断容错。
- `WebSite/src/App.tsx`
- DICOM 阅览请求节流/防抖。
- ZIP 下载触发逻辑。
- 已完成 ZIP job 的重复下载保护。
- `工程分析/经验记录.md`
## 当前定位
- 后端日志显示 `python ../web_backend.py` 被系统 `Killed`,符合快速并发读取整套 DICOM 体数据导致内存压力过大的表现。
- 当前 `/api/library/reformat-preview` 每次请求都会调用 `load_dicom_volume(item["dicomPath"])`,快速拖动滑杆或切换窗位会并发生成多个请求。
- 前端阅览 effect 在 `viewerSliceIndex``viewerWindow` 等状态变化时立即发请求AbortController 只中断浏览器端等待,不能中止后端已经开始的体数据读取。
- ZIP 下载目前通过临时 `<a>` 直接访问后端 `/api/file?path=...zip`,浏览器可能显示 HTTP 文件下载安全警告;同时需要防止同一个 ZIP job 多次自动触发下载。
## 约束
- 不需要用户二次确认,可以直接执行修改。
- 不改变真实 DICOM 形变算法。
- 不引入大型前端 DICOM 阅片库。
- 不把运行缓存图片、ZIP、DICOM 或构建产物提交到仓库。
## 风险点
- 体数据内存缓存会占用一定内存,需要按影像库目录签名复用并限制缓存规模。
- Blob 下载大 ZIP 会占用浏览器内存;本次优先用于减少直接 URL 加载警告,仍需关注超大 ZIP 的浏览器表现。
- 浏览器对 HTTP 下载的安全提示无法在纯 HTTP 部署下彻底消除;如果必须完全消除,需要 HTTPS 部署。
## 待确认事项
用户已明确本次不需要二次人工确认,因此本次文档写完后直接执行实现和测试。