Files
MapLibreParticleLab/docs/报告/STEP-055_Android真实WeatherV2风场综合可视化_Codex完成报告_v1.md
OpenAI Codex 8a0873a5fb
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: record STEP-055 validation handoff
2026-09-05 01:24:58 +08:00

4.4 KiB
Raw Permalink Blame History

STEP-055 Android 真实 WeatherV2 风场综合可视化 Codex 完成报告

基线与范围

  • Starting HEAD:da71c8784ec20ed830f5d23880718647d666cf2f
  • 分支:particle/main
  • 状态:IMPLEMENTED / WAITING_ANDROID_VALIDATION
  • 输入:STEP-054 已提交的真实 WeatherV2 ECMWF HRES wind canonical T0–T3(513×769,原始 validTime,U=eastward、V=northward、m/s)。本阶段没有重新生成、重采样或修改这些数据。

本任务实现 Android Validation 的真实场综合可视化,不引入 Weather Service、HTTP、Provider、下载、缓存、React Native 或 Jest。

实际修改

  • 新增 provider-neutral、独立的 weather-color Style Layer、Factory 和 OpenGL RenderLayer。它从现有 RasterArraySource 的 canonical snapshot 读 T0/T1;不含 provider/network/business logic,也不与 RasterParticleLayer 合并。
  • WeatherColorLayer 颜色逻辑为:还原 canonical U/V → Core mix 插值 → hypot(U,V);采用固定 0–30 m/s 色标和固定 opacity。
  • 更新粒子 GPU 字段采样:真实 metadata bounds 转为 Web Mercator UV;字段区域外 fail-closed,粒子 seed/恢复受相同 bounds 约束。为真实 m/s 引入 texture decode scale,避免旧 [-1,1] 编码饱和。
  • Android MORE → REAL WEATHER 一键加载 STEP-054 的 T0–T3,通过既有 Host Submission Contract submit;使用既有 OSM 无 Key raster basemap,自动 fit real bounds,并以 basemap → color → particle → HUD 排序。
  • 保存 REAL WEATHER / Host mode 状态;Activity 重建后自动以相同 metadata/payload/validTime 恢复可见内容。现有 RasterParticle viewport trail FBO resize 路径保持负责其 GPU target 重建。
  • 新增 WeatherColorUsesIndependentFixedOpacity Core style test;新增 Android V1–V8 人工验收指令。

架构保护

未修改 ParticleFieldDescriptor、ParticleFieldSnapshot、ParticleFieldDataAdapter、Host submission contract、Timeline state machine、Playback ownership、Runtime Field Window、Duplicate NOOP、Gap/Invalid fail-closed 或 Renderer provider/network 边界。

RasterParticleLayer 仍是唯一 tick Timeline 的 render consumer。WeatherColorLayer 只读取同一 Source-owned frame,故不建立第二时钟/Timeline。正常 Boundary 的 OLD_T1 → NEW_T0 reuse 和 only NEW_T1 upload 继续适用;颜色层也复用旧 T1 GPU texture。

验证

  • CMake OpenGL 配置:PASS。
  • 受影响 C++ 精确编译:WeatherColor Layer、Factory、RenderLayer、RasterParticle shader-side renderer、默认 LayerManager:PASS(同一 CMake OpenGL 编译参数)。
  • 使用同一 CMake OpenGL 配置的 mbgl-core 全量目标已启动并确认既有依赖/前序 Core 可编译;按任务“不默认跑无关全量测试”的边界,在进入与 STEP-055 无关的大量 Core translation units 后停止。它不构成本阶段的验收条件。
  • 新增 test/style/style_layer.test.cpp 和受影响 test/style/source.test.cpp:以同一 CMake 参数精确编译 PASS;未构建/执行无关的完整 test runner。
  • git diff --check:待最终文档完成后执行。
  • Android Gradle / APK build / install / ADB / App launch / device test:未执行(用户手工)。
  • Jest:未执行,未修改。

Android 待验收

按 docs/60_测试/STEP-055_Android真实WeatherV2风场综合可视化_人工验收指令_v1.md 执行一次构建/安装,重点确认:真实 T0–T3、色场/粒子地理对齐、PLAY/MIX、两次 Boundary、reuse/only NEW_T1、Duplicate/Invalid、旋转恢复以及无黑屏/crash。

真实 validTime 保持 6 小时间隔;当前没有另加 Android 时间压缩。可用既有 2x 或 STEP NEXT 观察边界。

非阻塞项

Validation UI MIX 文本滞后及 WAITING/INVALID 的视觉不够明显仍为 NON-BLOCKING observability,不被表述为 Core、Timeline 或 Renderer 故障。

Git 收尾

  • Implementation commit hash:52600cd3bed8db85dd14b386270f1e617b9f8ba0
  • Commit message:feat: add real WeatherV2 Android composite validation
  • Push result:成功,origin/particle/main 已从 da71c878… 更新至上述实现提交。
  • Remote branch:origin/particle/main
  • Implementation Final HEAD:52600cd3bed8db85dd14b386270f1e617b9f8ba0(本报告的 Git 元数据更新将作为仅文档后续提交)。

无关 untracked 文件(历史 diff、任务书、日志等)将保持未触碰、未 stage。