63 lines
2.6 KiB
Markdown
63 lines
2.6 KiB
Markdown
# 实现方案-2026-05-24-15-55-48
|
||
|
||
## 实现方案文档路径
|
||
|
||
`工程分析/实现方案-2026-05-24-15-55-48.md`
|
||
|
||
## 修改目标
|
||
|
||
- 在逆向工作区构件层级标题右侧增加全局显隐按钮。
|
||
- 在项目库项目卡片中增加锁定/解锁能力,并将锁定位姿数据保存到 `项目数据/锁定结果/`。
|
||
- 项目列表支持未锁定筛选,并按最后处理时间倒序排列。
|
||
- 修正 DICOM 切片滚动条的方向与无进度色视觉。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/server.ts`
|
||
- `WebSite/src/types.ts`
|
||
- `WebSite/src/lib/api.ts`
|
||
- `WebSite/src/components/ProjectLibrary.tsx`
|
||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||
- `WebSite/src/index.css`
|
||
- `Docker部署/`
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 技术路线
|
||
|
||
- 后端为项目状态增加 `locked`、`lockedAt`、`lastProcessedAt`、`lockedPoseSnapshotPath` 等兼容字段,并提供锁定/解锁 API。
|
||
- 锁定时读取当前项目位姿、构件样式和基础元数据,写入 `项目数据/锁定结果/{projectName或projectId}-{timestamp}.json`。
|
||
- 前端项目库使用新增 API 切换锁定状态;项目卡片在进入逆向工作区前判断锁定状态并提示。
|
||
- 逆向工作区构件层级右侧新增全局眼睛按钮,批量更新所有构件的 `visible` 字段。
|
||
- 切片滑块保持顶部为 1、底部为 N,去掉滚动后轨道进度色。
|
||
|
||
## 执行步骤
|
||
|
||
1. 阅读现有项目类型、项目库、逆向工作区和后端项目 API。
|
||
2. 扩展类型与 API 封装。
|
||
3. 实现后端锁定状态归一化、锁定结果落盘和接口。
|
||
4. 实现项目库锁定按钮、未锁定筛选、排序与锁定提示。
|
||
5. 实现逆向工作区全局构件显隐按钮。
|
||
6. 修正切片滚动条方向和 CSS。
|
||
7. 同步 Docker 部署说明。
|
||
8. 运行 lint/build,重新部署并验证。
|
||
9. 提交并推送 Gitea。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 旧项目缺少锁定字段时默认 `locked=false`,缺少最后处理时间时回退到 `updatedAt`、`createdAt`。
|
||
- 如锁定结果目录不存在则由后端自动创建。
|
||
- 回滚时可移除新增 API 和前端按钮,已有锁定 JSON 文件不影响系统启动。
|
||
|
||
## 预计文件变更
|
||
|
||
- 新增本次三份工程分析文档。
|
||
- 修改前后端项目状态、交互和样式文件。
|
||
- 修改 Docker 部署说明,记录新增锁定结果目录和功能。
|
||
- 追加经验记录。
|
||
|
||
## 提交与部署策略
|
||
|
||
- 仅暂存本次相关文档、前后端源码和 Docker 文档。
|
||
- Commit message 包含 `2026-05-24-15-55-48` 与简要描述。
|
||
- 使用 `tmux` 会话 `revoxelseg-dicom` 重新运行 `npm run serve -- --host 0.0.0.0 --port 4000`。
|