# 需求分析 开始时间: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 下载目前通过临时 `` 直接访问后端 `/api/file?path=...zip`,浏览器可能显示 HTTP 文件下载安全警告;同时需要防止同一个 ZIP job 多次自动触发下载。 ## 约束 - 不需要用户二次确认,可以直接执行修改。 - 不改变真实 DICOM 形变算法。 - 不引入大型前端 DICOM 阅片库。 - 不把运行缓存图片、ZIP、DICOM 或构建产物提交到仓库。 ## 风险点 - 体数据内存缓存会占用一定内存,需要按影像库目录签名复用并限制缓存规模。 - Blob 下载大 ZIP 会占用浏览器内存;本次优先用于减少直接 URL 加载警告,仍需关注超大 ZIP 的浏览器表现。 - 浏览器对 HTTP 下载的安全提示无法在纯 HTTP 部署下彻底消除;如果必须完全消除,需要 HTTPS 部署。 ## 待确认事项 用户已明确本次不需要二次人工确认,因此本次文档写完后直接执行实现和测试。