6.1 KiB
6.1 KiB
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_BUILDTARGET_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 串联;login2checkCode传空;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=0–255、LVL 色阶 alpha=0–1。
5. 已知问题 / 待修正(下次注意,避免弄错)
- 视图模式是 demo 脚手架,需重构:当前「二维/三维/三维体素」三按钮把"内容"与"相机"混在一起。正确模型(spec §4 本意):单一 3D 场景;显示什么由对象树勾选 + dd 类型决定(剖面/体素/轨迹/异常可叠加);2D/3D 仅是相机开关作用于整个场景,不绑内容;体素只是数据集的一种 3D 表现,不应是独立按钮。
- 登录页样式待调(目前是功能版,非复刻 web 视觉)。
- 2D 相机未锁旋转:平面剖面下 2D/3D 视觉差别小;应让 2D 模式禁旋转(
vtkInteractorStyleImage/自定义)以体现差异。 - dd_slice 切片已从体素移除(稀疏体素切片多为空区);待做"沿数据面"的有意义切片。
- Credential(QtKeychain) 未做 → "记住一个月免登录" 暂未持久化(每次需登录)。
- render 仍部分内联在 main.cpp(VoxelActor 调用、相机切换逻辑);随重构(问题1)抽进 render/view 层。
6. 下次从哪接
- (建议先)重构视图模型(问题1)→ 对象树勾选驱动 + 单一 2D/3D 相机 + 2D 锁旋转。
- Phase 4 Task 3:散点(#17)
ScatterActor+ 异常叠加AnomalyActor(计划见plans/2026-06-07-m1-phase4-render.md)。 - Phase 4 Task 4:DEM/影像地形(先确认 CRS,加 vcpkg gdal,GDAL+PROJ 重投影)。
- Phase 3 Task 2:Credential(QtKeychain)记住免登录。
- 登录页样式复刻(可用 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