docs(handoff): 2026-06-26 创建异常打磨+切片异常交互+二维分析改造交接

This commit is contained in:
gaozheng 2026-06-26 18:09:35 +08:00
parent 227ee8fdef
commit 4e998374e7
1 changed files with 98 additions and 0 deletions

View File

@ -0,0 +1,98 @@
# HANDOFF — VTK 3D 视图:创建异常打磨 + 切片/异常交互 + 二维分析改造2026-06-26
> 分支 `feat/vtk-3d-view`。桌面端 Qt6 + VTK 9.6。本会话围绕「创建异常」全链路打磨、切片/异常交互修复、全局中文化,最后转入「二维分析改造」的需求厘清 + 写 spec。**下一步=按 spec 实现二维分析 A 期。**
---
## 0. 立刻要做的事(下个会话从这里开始)
**实现二维分析改造**spec 已写好:`docs/superpowers/specs/2026-06-26-2d-analysis-topdown-elevation.md`commit `227ee8f`)。
- 设计已与用户**逐条确认**(见 §4 决策)。分期 A→B→C
- **A先做**一个场景两相机——切「二维分析」tab → 相机锁定**近俯视(7580°禁旋转仅平移/缩放)**;切 tab 翻另一方数据集 actor 的 `SetVisibility`**不清空**);地形+底图常驻。
- **B**:二维里选中 2D 内容(单/多选)→ 竖向拖动只改**高程 Z**、锁 XY、实时高程读数。
- **C**dd_raster 纳入 2D 过滤 + 按 ddCode 分派渲染 + 栅格地理配准贴地形。**阻塞dd_raster 数据端点未确认**。
- 实现锚点:`view2DModeChanged` 信号(`Column2DDataset`→`sceneCtrl`)已存在,在其上扩展相机/可见标志切换。
---
## 1. 环境 / 命令 / 铁律(必读)
- **构建**:用 PowerShell 工具跑 `cmd /c "D:\Git\lanbingtech\geopro\build.bat app"`Claude 的 Bash 跑 build 会被环境劫持,用 PowerShell。测试 `build.bat test`ctest**439 用例**)。`vswhere.exe not recognized` 噪声无害。LNK1104=exe 被运行中的 app 锁,需用户关 app 才能链接。
- **回复用中文**(用户要求)。
- **CLAUDE.md 两条绑定规则**:①发现技术债当场修,不以"非本轮引入"搪塞;②**能自己做的绝不让用户做**——日志(`%LOCALAPPDATA%/Geomative/Geopro3/logs/geopro_*.log`)/数据/构建/诊断都自己来,只在 LNK1104 关 app、或真正产品决策才找用户。
- **git**:精确 `git add <files>`(仓库有并行 GPR 会话的脏文件 `.superpowers/sdd/*`、`docs/.../poc-lod-shots/*.png`**勿误提交**)。提交无 Co-Authored-By全局禁
- **后端 token可访问真实接口用户给的**`geomativeauthorization: Geomative e6c1259748644c8da0954d864bb82604`base URL `http://tenant.geomative.cn/pop-api`;样例 projectId `1439735554211840`。可用 curl 查接口。
---
## 2. 本会话已完成(提交清单,新→旧)
**创建异常全链路(核心工作量)**
- `227ee8f` 二维分析 specdoc
- `c1a824e` 二维维度分类对齐数据字典 DD0623去 3 个已删除轨迹类型dimensionOf/dimOf/测试)。
- `e8bb2f8`/`1648ccb`/`f230ca8` 异常绘制提示vtkTextActor 渲染不出中文 → 改 **app 层 QLabel 浮层**(右上角、深底方角、不挡鼠标);列表切到别对象清切片选中(`deselectSlice`)。
- `9782a2b` 删除切片/异常加确认框 + **弹框按钮全局中文化**Qt zh_CN 翻译器 + `formkit::addDialogButtons` 默认「确定/取消」+ 打包补 qtbase_zh_CN.qm
- `306d7bc` 提示移右上角 + **线双击结束含双击位置**(去回滚)。
- `d7ab770` **切片保存后定稿锁定**`SetInteraction(0)` 不可移动/旋转)+ VTK/列表菜单去「保存·另存」。
- `91a7106` **结束手势**:点=单击即完成、线=双击、面=**点回起点闭合**(近起点 12px 吸附+橡皮筋指向起点)。
- `1a70ca0` 异常对话框加**样式预览**(选中类型 legend 可视化:点球/线/面)。
- `4ae8286` **异常截图配色与切面一致**:取 widget 自身 `GetColorMap()` 输出(非另建 LUT→ 逐像素一致 + RGBA 外区透明消蓝边。
- `d470dc8` 双击/单击隔离(后被 `306d7bc` 改回"含双击位置"+ 异常类型下拉误显「暂无数据」(`EmptyAwareComboBox::realItemCount` 用错 flags 角色→改 `model()->flags()`)。
- `04af569` 返工(点交互/点渲染小球/截图/类型空态)。
- `75c1327`→`3ed1ea7`→`58544ff`→`c6756aa` 截图相机方案A(已废)、**异常类型接平台真实类型**(`listExceptionTypes` 按形态)、**点/线/面三态**子菜单、**样式接平台 legend**(`getExceptionTypeDetail`)。
- 截图最终方案:**只从切片 2D 剖面图、按异常几何 buffer 裁剪**`captureAnomalyShotFromSlice`GIS buffer+掩膜,点圆/线胶囊/面外扩多边形)。
**其它**
- `56e4b3a` 登录验证码容器白底。
- `8563693` 分段折叠向上收起stretch 动态:展开=1/折叠=0+尾弹簧)。
- `d6e52cb` 三维分析分段面板视觉打磨chevron 段头/描边新增按钮/顶部留白)。
- `fb911a9` 坐标轴面板硬编码色 token 化。
- `cdd7613` vtk-3d-openapi 文档对齐实测DsPage 行在 `data.list`、DsRow 全字段、装置不在 data/page
- `2f6ec7d`→`1742b75`→`31ad7a4` **装置筛选**data/page 行不带 properties→改按行自带 `typeName/dsTypeCode` 筛选parseDsRows 兼容对象形态。
- 期间生成了一次安装包:`installer/dist/Geopro_Setup_3.0.0-20260625.exe`(脚本 `installer/build_installer.ps1`,含 windeployqt+样本+PROJ+vc_redist
---
## 3. 创建异常功能现状已落地端到端可用mock 保存)
入口VTK 切片右键 →「创建异常 → 点/线/面」。流程:圈定(AnomalyDrawTool)→草稿渲染→**从切片2D图buffer裁剪截图**→对话框(名称/异常类型[接平台]/样式预览/备注/截图)→保存(mock)→刷新树+渲染异常 actor。
- **关键文件**`src/render/interact/AnomalyDrawTool.{hpp,cpp}`(三态绘制:点单击完成/线双击/面点起点闭合Esc取消/Backspace撤点`src/app/AnomalySaveDialog.{hpp,cpp}`(接 `cmdRepo.listExceptionTypes`/`getExceptionTypeDetail`,样式预览);`src/app/SliceExport.{hpp,cpp}``captureAnomalyShotFromSlice``src/render/actors/AnomalyActor.cpp`(点=球/线=折线/面=闭合多边形);`src/app/main.cpp`onSliceContextMenuRequested ~509 起:菜单+绘制+对话框+保存接线QLabel 提示浮层)。
- **样式来源**:选中平台异常类型 → `getExceptionTypeDetail` 取 legendpolylineColor/Width/Shape, pointColor…→ 套到异常 lineColor/lineWidth/dashed。
- **截图**:只裁切片那张 2D 剖面图(`InteractionManager::selectedSliceColorImage` 现取 `SliceTool::coloredResliceImage()`=widget ColorMap 输出,与屏幕同源)。
### 仍卡在后端P3非客户端问题
- **异常真保存 `newException`** 卡:异常 `remarkSourceId` 须指向真实 dsObjectId三维体/切片),但真后端**无任何登记三维体/切片为 dsObject 的端点**(实测 `voxel/generate`、`slice/generate`、通用 `dsObject create` 全无)。当前 `saveAnomaly` 是内存 mock。后端补登记端点后整链可接真。
- 平台「点」类异常类型该项目为空(线/面有)→ 画点时类型下拉空属正常。
---
## 4. 二维分析改造——已确认的设计决策(与用户逐条敲定)
1. **不分两个场景**:一个 3D 地形场景(带高程)+ 底图贴地形,两栏只是相机不同。"二维分析只是 3D 的固定视角"。
2. **二维相机**:锁定**近俯视(7580°非绝对正俯视)**,禁旋转,仅平移+缩放。(绝对正俯视看不出高程→留倾斜)
3. **切 tab 显隐**:翻另一方数据集 `SetVisibility`**不显示,非清空**)→ 性能零代价VTK 跳过不可见 actor、切换瞬时、只占内存。地形+底图常驻。**绝不清空**(重体素重建会卡)。
4. **高程拖动(C1)**:二维里选中 2D 内容(单/多选)→ 竖向拖动只改**高程 Z**、锁 XY、实时读数。用途=分离叠在一起的 2D 层。
5. **维度过滤**2D = `dd_trajectory_data`+ C 期 `dd_raster``dd_radar_2d/3d` 是 3D不进 2D。已对齐 DD0623`c1a824e`)。
6. **雷达客户反馈**:只影响数据模型 + **3D 视图**渲染(二维雷达=线、三维雷达=切面、带打标)+ 详情页校准——**均属另立任务,不在本次 2D 改造**。2D 只显示轨迹线、打标暂不做(与本设计一致)。
---
## 5. 关键代码锚点(二维分析改造用)
- 切 2D 视图模式钩子:`Column2DDataset::view2DModeChanged` → `main.cpp``sceneCtrl`(搜 `view2DModeChanged`)。
- 维度分类:`src/app/DatasetDimension.cpp::dimOf`col2D 用);`src/data/api/Api3dRepository.cpp` + `src/data/repo/LocalSample3dRepository.cpp::dimensionOf`
- 2D 内容注入:`main.cpp` ~502 `col2D->setDatasets(splitByDimension(...).dim2D)`;勾选渲染 `Column2DDataset::checkedDatasetsChanged``loadMapLine`/`MapLineActor`。
- 场景/相机/可见:`VtkSceneView`actor 管理)、`VtkSceneController`、`InteractionManager`(拾取/选中,新增 `deselectSlice`)。
- 地形+底图:`buildTerrain`带高程VE 垂直夸张相关)、`TileBasemap`(天地图按经纬贴)。
- 数据字典:`D:\Projects\GEOPRO\DD0623.xlsx`46 个 ddCode序号/ddCode/领域/含义/状态/**展示模式(2D/3D)**/**展示形态**/备注…。解析openpyxl 可用,中文 GBK 终端会乱码→导 UTF-8 文件再 Read。
---
## 6. 待确认/风险
- **dd_raster 数据端点**(像素+四至/投影)未确认 → C 期阻塞。
- 近俯视角度需实机调;高程是否落库暂定会话内(不落库)。
- §3 翻可见标志需可靠区分每个 actor 的维度归属。
- 切相机/可见与现有 view2DModeChanged、底图、地形 VE 逻辑勿打架。
- **GUI 无法登录自测**:相机/截图/交互类改动我只能保证编译+逻辑,视觉/手感需用户实跑反馈。
---
## 7. 相关记忆/文档
- 记忆库 `MEMORY.md`(如 login-chain-truth、vtk-3d-persistence-structure、build-vs2026-vcpkg-gotchas、deploy-hardcoded-dev-paths 等)。
- vtk-3d API 设计草案:`docs/api/vtk-3d-openapi.json`已对齐实测0.6.1)。
- 真后端 API`docs/apis/business_OpenAPI.json`。
- 二维分析 spec`docs/superpowers/specs/2026-06-26-2d-analysis-topdown-elevation.md`。