geopro/.superpowers/sdd/task-9b-report.md

69 lines
4.0 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.

# Task 9b 报告gpr_poc CLI + 真实数据 headless 度量
状态:**PARTIAL / BLOCKED**
- CLI 编译链接通过;`selftest` PASS合成数据端到端跑通整条地基
- 真实明星路数据 **BLOCKED**:前置 IO 层 `readIprb``traces=lastTrace+1` 严格校验
与真实文件「道数=lastTrace」系统性不符装配阶段即抛异常无法实测建体指标。
**未擅自修改前置/其单测**(被现有测试钉死的契约 + 跨任务边界),故真实指标暂缺,如实记录。
---
## 1. 交付物(均为本会话自有文件)
- `tools/gpr_poc/main.cpp` —— CLI`build` / `load` / `selftest` 三子命令。
- `tools/gpr_poc/Probe.hpp` —— header-only 计时steady_clock+ 峰值内存Psapi `PeakWorkingSetSize`)。
`NOMINMAX`/`WIN32_LEAN_AND_MEAN` 防 `<windows.h>` 宏污染 `std::numeric_limits::min/max`
- `tools/gpr_poc/CMakeLists.txt` —— 可执行 `gpr_poc`,链 `geopro_io_gpr/geopro_core/geopro_store/geopro_render`
+ Windows `Psapi``vtk_module_autoinit` 注册 VTK 工厂。
- 顶层 `CMakeLists.txt` —— 加 `add_subdirectory(tools/gpr_poc)`(在 `add_subdirectory(src)` 之后)。
- `docs/superpowers/plans/poc-results-B.md` —— 实测结果selftest PASS + 真实数据 BLOCKED 根因表)。
注:库目标实际名为 `geopro_store`brief 写作 geopro_store/已对齐)与 `geopro_data`
本工具链 `geopro_store`(分块存储),正确。
## 2. 构建
- 配置:`cmd /c "build.bat configure"`preset msvc-releasebuild/release成功
cmd 被环境劫持但真实命令仍执行;以 build.ninja 出现 gpr_poc target 确认)。
- 编译PowerShell + vcvars64 直驱 cmake `--build build/release --target gpr_poc`
首次失败:`<windows.h>` min/max 宏污染 → 加 NOMINMAX 修复 → 二次链接成功。
- 运行需 PATH 带 Qt6/VTK/vcpkg binheadless 工具仍依赖这些 DLL
## 3. selftest 结果
```
gpr_poc selftest
[selftest] GridSpec 2x2x8 dz=0.714286
[selftest] PASS (exit 0)
```
覆盖assembleGprSurvey → buildGprVolume → write(brick=4) → buildPyramid(1) →
WholeVolumeSource断言维度/层数/体素非 blank 全通过。
## 4. 真实数据指标
**未实测BLOCKED**。根因:`readIprb``src/io/gpr/IprbReader.cpp:16`
`traces=lastTrace+1` 严格字节校验;真实明星路 14 通道每个恰含 `lastTrace` 道(少 1 道),
逐通道实测一致(详见 poc-results-B.md §2 表)。非 OOM/超时——装配前读入即失败,
`--cellXY` 无法绕过。现有 `tests/io/gpr/test_iprb_reader.cpp:30-31` 锁定该抛异常契约。
用的参数:`--line 001 --cellXY 0.2 --cellZ 0.05 --levels 2`(建体未到达)。
预估几何非实测供核对nx≈11118, ny≈8, nz≈1深度尺度因土速单位为微米级
cellZ=0.05 压成单层——需 POC owner 复核土速/时窗单位与 cellZ
## 5. 提交前自检
-`git add` 自有文件:`tools/gpr_poc/*`、顶层 `CMakeLists.txt`
`docs/superpowers/plans/poc-results-B.md`、本报告 `.superpowers/sdd/task-9b-report.md`
- `git diff --cached --stat` 确认无 chart/scatter/quill/rangeslider 等并行会话行。
- 顶层 CMakeLists 的暂存 diff 应仅含新增的 `add_subdirectory(tools/gpr_poc)` 一行块。
## 6. Concerns / 需 owner 决策
1. **真实数据 BLOCKER**`readIprb` 道数契约与真实数据不符。建议放宽为
「道数 = 文件字节 / (samples·2)」(容忍 ±N 道),或确认 LAST TRACE 语义后去 +1
并同步改单测。落地后重跑两条命令即可补齐 §4 真实指标。
2. **深度尺度(中)**SOIL VELOCITY=100 m/s头单位 m/µs ×1e6→ 深度跨度微米级,
cellZ=0.05 会把 Z 压成 1 层。影响真实体维度与 9c 渲染基准,需确认单位约定。
3. 顶层 CMakeLists 当前 working tree 已有他会话的修改(视觉设计/chart 等);本会话只新增
add_subdirectory 一行,暂存时务必只 stage 该文件并核对 diff,勿带入其他未暂存改动。