Files
REVOXELSEG_DICOM/工程分析/实现方案-2026-05-04-04-58-36.md

2.8 KiB
Raw Blame History

实现方案

时间戳2026-05-04-04-58-36

修改目标

修复项目列表按钮重叠;增强逆向工作区当前项目与融合视图;增加 DICOM 缓存和显示模式;重做 3D 模型渲染加载状态,避免 React Three Fiber 引入的 Three.js Clock 警告。

涉及路径

  • WebSite/server.ts
  • WebSite/src/lib/api.ts
  • WebSite/src/types.ts
  • WebSite/src/components/ProjectLibrary.tsx
  • WebSite/src/components/ReverseWorkspace.tsx
  • 工程分析/测试方案-2026-05-04-04-58-36.md
  • 工程分析/经验记录.md

技术路线

  1. 项目列表布局。
    • 将收缩按钮从标题区右侧移到侧栏外侧中线位置。
    • 保留 + 在项目列表标题行内,避免重叠。
  2. DICOM 预览缓存与显示模式。
    • 后端增加内存缓存:按 project、plane、slice、mode 缓存灰度预览。
    • API 增加 mode=default|bone|soft|contrast
    • 前端增加显示模式切换,并将 mode 传给 API。
  3. 3D 模型渲染。
    • 项目库中不再使用 React Three Fiber Canvas。
    • 后端增加 STL 二进制采样预览 API避免浏览器一次解析 240MB 原始 STL。
    • 前端改用原生 Three.js 手动创建 renderer、camera、scene、geometry。
    • 显示加载进度条WebGL 不可用时使用二维 canvas 模型预览兜底。
    • 使用自动包围盒归一化、居中、缩放,确保模型可见。
  4. 逆向工作区。
    • 拉取当前项目详情。
    • 顶部显示当前项目名、DICOM/STL 数量和路径。
    • 融合视图显示 DICOM canvas 背景,并叠加简化 STL/模型轮廓或模型投影效果,表达等比例缩放、中心对齐状态。
  5. 验证与部署。
    • npm run lint
    • npm run build
    • API smoke test
    • headless Chrome 冒烟检查
    • 重启 tmux 会话部署到 4000

数据流

DICOM

前端选择 plane/slice/mode -> 后端命中或生成缓存预览 -> 前端 canvas 显示。

3D

前端读取 STL 采样预览 API -> 后端返回抽样三角面顶点 -> 原生 Three.js 生成材质、居中缩放 -> 渲染WebGL 不可用时绘制二维投影预览。

逆向融合:

前端按当前项目获取 DICOM 预览和项目信息 -> canvas 绘制影像 -> HTML/SVG/Three 投影层叠加中心对齐模型轮廓。

兼容性与回滚方案

  • DICOM preview API 兼容旧参数,不传 mode 时默认为 default。
  • 如果原生 Three.js 渲染异常,页面会使用二维 canvas 兜底预览,不影响项目库浏览。
  • 运行态缓存仅在进程内,不写入 Git。

预计文件变更

  • 修改后端 DICOM preview API。
  • 修改项目库 3D 组件和 DICOM 控件。
  • 修改逆向工作区融合视图。
  • 更新工程分析文档和经验记录。

人工审核状态

本次用户明确要求无需人工二次确认。

状态:自动确认,继续执行。