geopro/docs/superpowers/STATUS.md

72 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Geopro 3.0 桌面客户端 — 当前状态与交接M1 进行中)
**更新**2026-06-07 · **分支**`feat/m1-core`(尚未合并 master
> 本文件是**会话交接的单一事实来源**。下次继续前先读本文 + `specs/2026-06-07-geopro-desktop-m1-design.md`(设计基线)。计划在 `plans/`。
---
## 1. 现在能跑起来的东西(已验证)
桌面 app `geopro_desktop` 可运行:
- **真实登录**:LoginWindow用户名/密码/图形验证码/记住)→ `verifyCodeCheck` → RSA 加密密码 → `login2` → 真后端返回 `Geomative <token>` → 进工作台。**已真机登录成功。**
- **工作台**:ADS 三栏 = 左对象树(项目→测区→ERT1→数据集) / 中视图 / 右属性。
- **中央视图**:点数据集 → 渲染 ERT 网格剖面(banded 等值面+等值线,按真实 colorBar 上色);「二维/三维」相机切换;「三维体素」= 两交叉剖面 IDW 插值的体绘制。
- 单元测试累计 ~25 个,全绿(core/data/net/render)。
## 2. 各 Phase 完成度
| Phase | 内容 | 状态 |
|---|---|---|
| Phase 0 | 三 spike构建/ADS+QVTK/banded contour | ✅ 全过spike-report |
| Phase 1 | core 纯逻辑:LocalFrame / 模型(Field+Anomaly) / ColorScale / IDW / CrsTransform | ✅ 5 任务全完成,TDD 绿 |
| Phase 2 | data:解析器 + LocalSampleRepository + 对象树→渲染→属性 | ✅ 4 任务全完成 |
| Phase 3 | 登录:RsaEncryptor / ApiClient / AuthService / LoginWindow + 启动接入 | ✅ 核心完成(net+UI+真实登录);**Credential(QtKeychain 记住免登录) 未做**(Task 2 跳过) |
| Phase 4 | 三维渲染扩展 | 🔶 部分:Task1(render 层+2D/3D)✅、Task2(voxel+切片)✅(切片已暂移除);**Task3(散点#17+异常叠加)未做、Task4(DEM/GDAL 地形)未做** |
## 3. 构建约定(**机器本地**,重要)
- 工具链:VS2026(v18.0,MSVC 14.51) + 官方 **MSVC Qt 6.11.1**(`D:\Qt\6.11.1\msvc2022_64`) + vcpkg(`d:\dev\vcpkg`)。
- 方案②-修订:**Qt/VTK/ADS/QtKeychain 对接官方 Qt,不走 vcpkg**;仅非 Qt 依赖(gdal/proj/openssl/eigen3/spdlog/fmt/nlohmann-json/gtest)走 vcpkg。
- **VTK 9.6.2 源码编**在 `external/vtk-install`(`VTK_DIR` 在 CMakePresets);ADS/QtKeychain 走 FetchContent。
- 统一 **Release**(`build/release`);Debug 全量会因无 Debug VTK 失败。
- **所有构建/测试经 `external/dev.bat`**(封装 vcvars+TEMP→D:+cmake/ninja+VCPKG_ROOT;**含绝对路径、已 .gitignore、仅本机有**)。**用 PowerShell 调** `& cmd /c "D:\Git\lanbingtech\geopro\external\dev.bat <cmd>"`(Bash 下 `%*` 透传会坏)。
- C: 盘极小(~1GB)→ TEMP/源码/构建全在 D:。
- **app 构建前先** `taskkill /IM geopro_desktop.exe /F`(运行中会 LNK1104 锁 exe)。
- 运行前部署:`D:\Qt\6.11.1\msvc2022_64\bin\windeployqt.exe --release <exe>`(那条找不到 ads dll 的警告无害);VTK/vcpkg dll 由 POST_BUILD `TARGET_RUNTIME_DLLS` 拷贝。
- 样本 ASCII 拷贝在 `D:\dev\spike_data`(spike 用);app/repo 直接读真实中文路径 `docs\剖面网格数据的色阶数据2等文件\`
## 4. 关键决策与已核实事实
- **方案②-修订**(官方 MSVC Qt + 源码 VTK):原装 `D:\Qt\6.11.1\mingw_64` 是 MinGW 版,MSVC 不可链,已补装 MSVC kit。
- **登录**:基址 `http://tenant.geomative.cn/pop-api`;头 `geomativeauthorization: Geomative <token>`;`getImageCode` **验证码答案明文回传** `data.code`;`verifyCodeCheck→login2` 靠**会话 cookie** 串联;login2 `checkCode` 传空;token=`data.accessToken`。
- **RSA 公钥已抓取**(Playwright route 注入 setPublicKey hook + 缓存绕过 + 真登录捕获),存 `resources/rsa_public_key.pem`(RSA-2048,PKCS#1 v1.5)。
- **CRS ⚠️**:剖面 `projectX/Y` 真实 CRS **不是 EPSG:32649**(实测解出 111°E,数据 lat/lon 是 114°E/香港);影像 tfw 是 EPSG:3857。**做底图/DEM 配准(Phase4 Task4)前必须向客户确认项目 CRS**。
- **voxel 可信度**:仅两条交叉剖面 → "十字片"(~16% 有约束),满体不可信;**可信体需 ≥3 非共线测线或 3D 网格**(数据依赖,需客户提供)。
- 网格 `v`/`z` 为 `[j=y][i=x]`,点序 i 最快;colorBar 网格色阶 alpha=0255、LVL 色阶 alpha=01。
## 5. 已知问题 / 待修正(**下次注意,避免弄错**
1. **视图模式是 demo 脚手架,需重构**:当前「二维/三维/三维体素」三按钮把"内容"与"相机"混在一起。**正确模型**(spec §4 本意):单一 3D 场景;**显示什么由对象树勾选 + dd 类型决定**(剖面/体素/轨迹/异常可叠加);**2D/3D 仅是相机开关**作用于整个场景,不绑内容;体素只是数据集的一种 3D 表现,不应是独立按钮。
2. **登录页样式**待调(目前是功能版,非复刻 web 视觉)。
3. **2D 相机未锁旋转**:平面剖面下 2D/3D 视觉差别小;应让 2D 模式禁旋转(`vtkInteractorStyleImage`/自定义)以体现差异。
4. **dd_slice 切片**已从体素移除(稀疏体素切片多为空区);待做"沿数据面"的有意义切片。
5. **Credential(QtKeychain)** 未做 → "记住一个月免登录" 暂未持久化(每次需登录)。
6. **render 仍部分内联在 main.cpp**(VoxelActor 调用、相机切换逻辑);随重构(问题1)抽进 render/view 层。
## 6. 下次从哪接
1. (建议先)**重构视图模型**(问题1)→ 对象树勾选驱动 + 单一 2D/3D 相机 + 2D 锁旋转。
2. Phase 4 Task 3:散点(#17)`ScatterActor` + 异常叠加 `AnomalyActor`(计划见 `plans/2026-06-07-m1-phase4-render.md`)。
3. Phase 4 Task 4:DEM/影像地形(先确认 CRS,加 vcpkg gdal,GDAL+PROJ 重投影)。
4. Phase 3 Task 2:Credential(QtKeychain)记住免登录。
5. 登录页样式复刻(可用 Playwright 抓 web 登录页样式;之前截图工具对登录页超时,可改抓 computed-style/DOM)。
## 7. 文档与工具索引
- 设计基线:`specs/2026-06-07-geopro-desktop-m1-design.md`
- 计划:`plans/2026-06-07-m1-phase0-spikes.md`(+ spike-report)、`...-phase1-core.md`、`...-phase2-data.md`、`...-phase3-login.md`、`...-phase4-render.md`
- 环境:`../ENV_SETUP_Windows.md`
- 离线验证脚本:`tools/validate_samples.py`(#17/#18 真值)、`tools/validate_voxel.py`(voxel 真值)
- 数据格式:`specs` §6.1 + `docs/数据格式说明.docx`