geopro/docs/superpowers/STATUS.md

7.3 KiB
Raw Blame History

Geopro 3.0 桌面客户端 — 当前状态与交接M1 进行中)

更新2026-06-07 · 分支feat/m1-core(尚未合并 master

本文件是会话交接的单一事实来源。下次继续前先读本文 + specs/2026-06-07-geopro-desktop-m1-design.md(设计基线)。计划在 plans/


⚠️ 最新进展与诚实警示(经离屏 PNG 像素核对)

  • 教训:此前多版"已验证"仅为"进程启动不崩"的冒烟,从未看像素,导致漏掉剖面深度倒置等错误、并夸大"2D 像地图""体素已移除"。今后渲染必须用离屏 PNG 肉眼核对(工具:tests/spike/render_verify.cpprender_verify.exe 输出 D:/dev/spike_data/verify_*.png)。
  • 视图渲染现状(不正确,待迭代):
    • CurtainActor 帘面经像素核对呈扭曲近平躺飘带,不像断面墙(测线 lat/lon 有抖动、深度 15m≪水平 62m;纵向需夸张、几何/取景要调)。深度方向已修(z=-depth)。
    • "二维=俯视帘面"模型不成立:竖直帘面俯视只剩一条发丝线 → 俯视图基本空白。真正的二维地图需独立的"测线线 actor"(MapLineActor)+ 底图,不能靠帘面俯视。
    • GridContourActor 平面剖面(数据详情#18)管线基本对(已改显式坐标 structuredGrid + 深度取负),但色阶线性偏蓝、取景偏小,需调。
  • 结论:二维地图与三维视图应是不同的渲染内容(地图=线/点/底图;3D=帘面/体素/地形),数据详情#18 那块基本可用。下次用 PNG 回路逐帧做正确。

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