feat/vtk-3d-view #7

Merged
gaozheng merged 301 commits from feat/vtk-3d-view into main 2026-06-27 18:43:52 +08:00
1 changed files with 34 additions and 17 deletions
Showing only changes of commit 5d1384d2a9 - Show all commits

View File

@ -61,26 +61,39 @@ ddCode`dd_slice`。
- **导出为图片** / **导出到 dat**
- **正视图** / **视图翻转(水平 180°)** / **关闭**
### 2.4 创建三维体(设计:建议客户端支持,归属待产品确认)
需求行 196「客户端二维/三维视图聚焦最基本**展示**功能」→ 创建/插值**可能在平台(web)侧**。
- **方案 A推荐先做 mock**:「三维数据集」栏多选若干 3D 数据集(反演剖面)→ 菜单「生成三维体」→ 选插值模型/参数 → 客户端 `IdwInterpolator` 插值 → 三维体(暂存内存/本地)。
- **方案 B**:仅展示平台已生成的三维体(客户端不提供创建)。
- 决策见 §5。
### 2.4 创建三维体(**已定:客户端创建**
产品确认创建三维体在**客户端**侧。
- 「三维数据集」栏多选若干 3D 数据集(反演剖面)→ 菜单「生成三维体」→ 选插值模型/参数 → 客户端 `IdwInterpolator` 插值 → 三维体。
- 持久化:后端**无三维体端点**(见 §3→ 先本地 mock内存/本地文件),端点就绪后切真实。
---
## 3. 后端依赖 vs 本地 mock
## 3. 后端依赖 vs 本地 mock(已核对 web 源码 `commercial-admin/src/apis`
| 能力 | 现有端点 | 方案 |
|---|---|---|
| 展示已有三维体(取网格) | ❌ `loadVolume` 是 stub(`kNotReady`) | 后端无 → **mock**:以源数据集散点 IDW 出体(复用 `IdwInterpolator` |
| 创建三维体(插值) | — 纯计算 | **客户端可做**IdwInterpolator持久化见下 |
| 展示已有三维体(取网格) | ❌ 无(`/model/*` 只有 ResIPy 反演/雷达,无三维体网格) | **mock**:以源数据集散点 IDW 出体(`IdwInterpolator` |
| 创建三维体(插值) | ❌ 无(无三维空间插值端点) | **客户端做**IdwInterpolator持久化 mock |
| 三维体/切片**持久化** | ❌ 无写端点 | **mock**:内存/本地存;端点就绪后切真实 |
| 切片创建/交互 | — 纯客户端 | ✅ 已有(`SliceTool`/`InteractionManager` |
| 切片保存/另存/导出/删除 | ❌ stub | 保存/删除 → mock(内存);导出图片/dat → **客户端可做**(截图/写文件) |
| 异常读取 | ✅ 现有 `queryException`/`queryExceptionByTmObjectId`2D 详情已用) | **接真实**(读);三维异常树可复用 |
| 异常保存/删除 | ⚠️ 写端点待确认(原版可标注异常→大概率有) | 有则接,无则 mock |
| 任务记录/可用任务 | ❌ stub | mock |
| 切片保存/另存/导出/删除 | ❌ 无切片端点 | 保存/删除 → mock(内存);导出图片/dat → **客户端做**(截图/写文件) |
| 异常**读取** | ✅ `POST /exception/queryExceptionTree`、`queryException`/`queryExceptionByTmObjectId` | **接真实** |
| 异常**新增** | ✅ `POST /business/exception` | **接真实** |
| 异常**更新** | ✅ `PUT /business/exception` | **接真实** |
| 异常**删除** | ✅ `DELETE /business/exception/{exceptionId}` | **接真实** |
| 异常类型 | ✅ `GET /exceptionType/queryExceptionTypeByProjectIdAndType/{projectId}/{remarkSourceType}`、`/exceptionType/getDetail/{id}` | **接真实** |
| 异常体(exceptionConsortium) | ✅ `POST/PUT /exceptionConsortium`、`/page`、`/export`、`/getDetail/{id}` | **接真实** |
| 任务记录/可用任务 | ❌(`/model/task/page` 是反演任务,非三维分析任务) | mock |
### 异常新增请求体web 实证 `datasetInfo/index.js:212`
`POST /business/exception`
```
{ exceptionName, exceptionTypeId, location:{...圈定坐标...},
projectId, remarkSourceId, remarkSourceType, remark }
```
- `remarkSourceId` / `remarkSourceType`:异常所附着的对象(本场景=切片数据集 id + 其类型)。
- `location`:圈定多边形坐标。截图:保存对话框含截图(行 393上传方式参考 `exceptionInfos/modalNewException.vue`
- 更新:`PUT /business/exception` `{ id, exceptionName, remark }`;删除:`DELETE /business/exception/{exceptionId}`;详情:`GET /business/exception/getDetail/{exceptionId}`。
---
@ -96,11 +109,15 @@ ddCode`dd_slice`。
---
## 5. 待产品确认
## 5. 待产品确认(更新 2026-06-17
1. **创建三维体在客户端还是平台?** 决定是否做 §2.4 方案 A。
2. **后端是否会提供**:三维体网格端点、三维体/切片/异常的写端点、任务端点?时间表?(决定哪些长期 mock、哪些等接。
3. **异常写端点**确切路径(原版标注异常的保存接口)。
1. **创建三维体在客户端还是平台?****已定:客户端**§2.4)。
2. **后端三维体/切片/任务端点时间表?** → 暂未知。当前 web 源码**无**三维体网格、三维插值、切片、三维分析任务端点 → 这些**先 mock**(保持 `I3dSceneRepository` 接口不变,端点就绪后仅换实现)。
3. **异常写端点?****已找到**§3`POST/PUT/DELETE /business/exception` + 类型/异常体一整套 → 异常**接真实**,不 mock。
剩余待确认(次要):
- 异常保存对话框的**截图上传**方式/字段(参考 `exceptionInfos/modalNewException.vue`,落地时细化)。
- 三维体/切片本地 mock 的持久化形态(纯内存 vs 本地文件,影响重启后是否还在)。
---
@ -111,7 +128,7 @@ ddCode`dd_slice`。
1. **三维体mock 渲染)**:把当前勾选/源数据反演剖面散点 → `IdwInterpolator``VolumeGrid``VoxelActor`。`Api3dRepository::loadVolume` 由 stub 改为"取源数据散点 + IDW"mock。→ 解锁三维体显示 + 切片有可切对象。
2. **切片交互接通三维体**:体素就位后,三维体右键"切片▸"已能创建切片(现有 SliceTool。补选中切片滚轮推进、双击正视。
3. **切片保存/另存/导出/删除**:保存/删除 → Api3dRepository 改内存 mock同 LocalSample导出图片(截图)/dat(写文件) → 客户端实现。VTK 视图切片右键菜单接线。
4. **异常**:切片右键"创建异常"→ 圈定工具 + 保存对话框(截图/坐标);异常树接 `queryException` 读端点;保存/删除按端点有无(真实/mock
4. **异常**:切片右键"创建异常"→ 圈定工具 + 保存对话框(截图/坐标)。**全套接真实端点**:新增 `POST /business/exception`、更新 `PUT /business/exception`、删除 `DELETE /business/exception/{id}`、读 `queryException*`/`queryExceptionTree`、类型 `exceptionType/*`、异常体 `exceptionConsortium/*`。`remarkSourceId/Type` 填切片数据集
5. **分析栏右键菜单接线**:色阶、显示/隐藏(纯客户端)、切片保存/另存/导出/删除(接 #3)。
6. **三维体/切片/异常详情**:数据详情栏展示源数据/插值参数/色阶/测量(点数·体积)/异常列表。