Files
MapLibreParticleLab/docs/50_Step记录/STEP-062_RNTestHost真实WeatherV2底图粒子综合验证_v1.md
OpenAI Codex 17d791b249
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: record STEP-062 RN weather map implementation
2026-09-09 09:14:11 +08:00

3.4 KiB
Raw Blame History

STEP-062 RN Test Host 真实 WeatherV2 底图粒子综合验证 v1

状态:IMPLEMENTED / WAITING_ANDROID_VALIDATION

目标与冻结基线

  • 分支:particle/main;开工 HEAD:364596574a620037fa854cfea174075f8107a504。
  • Test Host 固定消费 org.maplibre.gl:android-sdk-opengl:13.4.1-step061;没有修改、构建或发布 AAR。
  • 范围仅 MapLibreParticleRNTestHost,不进入 NavSea,未改 Native/Core/JNI/WeatherRuntime/STEP-061 ingress,未加入或运行 Jest。

必做项

  • GSI 标准 raster source/layer(256、maxzoom 18、国土地理院 attribution)置于 WeatherColor/RasterParticle 下方。
  • 初始 Camera 聚焦 [135, 32]、zoom 3.9,直接覆盖日本及相邻 WeatherV2 区域。
  • 原样复制 ECMWF HRES 2026080700/06/12/18 dataset、metadata、raw field.f32 到 Test Host 受控 assets。
  • expo-asset 直接依赖与仅增加 .f32 的 Metro asset 配置。
  • LOAD REAL WEATHER T0-T3:clear → materialize 四个 file:// URI → validTime 递增 submit → Native READY 硬断言。
  • 显示 GSI/loading error、dataset identity、T0–T3 submit result、Runtime 与 FILE_REF/FLOAT32_LE/INTERLEAVED_UV transport 状态。
  • 接线 playback/speed、timestamp seek、weather-local FPS、双层 visibility、冻结 stops、独立颜色和粒子视觉参数。
  • Test Host README、开发记录、中文完成报告。

资产与 transport

每帧 grid=513×769,raw payload=3,155,976 bytes,canonical contract=maplibre-particle-field/v1 / float32-le / interleaved-uv(U eastward、V northward)。Expo Asset 只输出其 cache 中的本地 file:// URI;payload 不进入 JS number array、JSON、base64 或 hex。Expo/OS 管理 cache,代码没有另建或累积 .f32 临时文件。

预期 Core submit 顺序严格为:T0 ACCEPTED_PENDING_INITIAL_WINDOW、T1 INITIAL_WINDOW_READY、T2 ACCEPTED_NEXT_SNAPSHOT、T3 ACCEPTED_NEXT_SNAPSHOT,最终 READY。T0/T1/MIX runtime window 仍由 Core 独占,JS 只保留 producer timestamp 供 setForecastTime(timestampMs) 调用。

静态验证

  • npm run typecheck:PASS(经 build-output-throttle,log 位于 /tmp/step062-build-logs/,未加入工作树)。
  • node --check metro.config.js 与实际 config .f32 extension:PASS。
  • npx expo export --platform android:PASS;Metro 实际导出四个 3,155,976-byte .f32 assets。
  • dataset、四个 metadata、四个 field.f32 的源/目标 SHA-256:逐文件一致,四个 field 复用相同 Git blob。
  • transport static audit:PASS;源码层数组顺序为 rn-basemap → gsi-standard → rn-weather-color → rn-weather-particles;git diff --check:PASS。

当前结果、阻塞与下一步

代码状态为 IMPLEMENTED / WAITING_ANDROID_VALIDATION,绝不等同 Android PASS。Codex sandbox 的 .git/index.lock 只读限制已由 RDC 接管收尾;功能实现已提交并推送:a91e3601f37f3adfe5d8b7b6a6c3f7f04fcadb8f(feat: add STEP-062 real weather test map)。

后续 CARBON7i APK-only 周期需在同一冻结 13.4.1-step061 AAR 下验证:GSI tile 实际加载与 attribution、四帧 Asset file URI、T0–T3 硬断言/Native READY、WeatherColor/Particle 地理对齐、pan/zoom/bearing、seek/playback/FPS/visibility 独立性,以及连续提交下 OOM、卡死和异常 GC。Codex 未执行 Android Gradle、assembleDebug、ADB、安装或设备测试。