4.4 KiB
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-colorStyle 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 重建。
- 新增
WeatherColorUsesIndependentFixedOpacityCore 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。