docs: record STEP-062 RN weather map implementation
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
40
docs/50_Step记录/STEP-062_RNTestHost真实WeatherV2底图粒子综合验证_v1.md
Normal file
40
docs/50_Step记录/STEP-062_RNTestHost真实WeatherV2底图粒子综合验证_v1.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 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。
|
||||
|
||||
## 必做项
|
||||
|
||||
- [x] GSI 标准 raster source/layer(256、maxzoom 18、国土地理院 attribution)置于 WeatherColor/RasterParticle 下方。
|
||||
- [x] 初始 Camera 聚焦 `[135, 32]`、zoom `3.9`,直接覆盖日本及相邻 WeatherV2 区域。
|
||||
- [x] 原样复制 ECMWF HRES `2026080700/06/12/18` dataset、metadata、raw field.f32 到 Test Host 受控 assets。
|
||||
- [x] `expo-asset` 直接依赖与仅增加 `.f32` 的 Metro asset 配置。
|
||||
- [x] `LOAD REAL WEATHER T0-T3`:clear → materialize 四个 `file://` URI → validTime 递增 submit → Native `READY` 硬断言。
|
||||
- [x] 显示 GSI/loading error、dataset identity、T0–T3 submit result、Runtime 与 FILE_REF/FLOAT32_LE/INTERLEAVED_UV transport 状态。
|
||||
- [x] 接线 playback/speed、timestamp seek、weather-local FPS、双层 visibility、冻结 stops、独立颜色和粒子视觉参数。
|
||||
- [x] 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、安装或设备测试。
|
||||
@@ -0,0 +1,23 @@
|
||||
# STEP-062 RN Test Host 真实 WeatherV2 底图粒子综合验证 — Codex完成报告 v1
|
||||
|
||||
日期:2026-09-09
|
||||
|
||||
结论:**IMPLEMENTED / WAITING_ANDROID_VALIDATION**。
|
||||
|
||||
## 实际实现
|
||||
|
||||
Test Host `App.tsx` 已改为真实综合入口。style 固定为 background、`gsi-standard` raster、`rn-weather-color`、`rn-weather-particles`;GSI URL 为 Android Validation 同一标准地图 URL,tileSize=256、maxzoom=18、attribution 为国土地理院/GSI。MLRN 11.3.6 `Camera` 使用初始 center `[135,32]`、zoom `3.9`。RDC 复审后将 Basemap `READY` 从 style attach 成功改为由 `onDidFinishLoadingMap` 触发;`onDidFailLoadingMap` 独立置 `ERROR`,避免把 WeatherRuntime attach 误当成底图完成。
|
||||
|
||||
新增 `src/realWeatherDataset.ts` 以静态 `require()` 注册四个 `.f32` 与其 metadata。点击 `LOAD REAL WEATHER T0-T3` 后调用 existing `clearWindFields()`;对每一个 `Asset.fromModule(...).downloadAsync()` 的 `localUri` 强制要求 `file://`,再将小型 `metadataJson + payloadFileUri` 经 STEP-061 bridge 提交。raw payload 未转成 JS number[]、JSON、base64 或 hex。预期结果为 T0 `ACCEPTED_PENDING_INITIAL_WINDOW`、T1 `INITIAL_WINDOW_READY`、T2/T3 `ACCEPTED_NEXT_SNAPSHOT`,最后重新读取 Native `READY`;任意不符显示 ERROR。
|
||||
|
||||
冻结控制面已接入:PLAY/PAUSE、HALF/NORMAL/DOUBLE、按四个 producer epoch timestamp 的 seek、FPS AUTO/30/60、WeatherColor/Particle 各自 visibility、WeatherColor stops、particle/trail 色彩,以及 count、line width、length、particle/trail opacity、trail fade、WeatherColor opacity。没有新增 Native API,JS 不维护 T0/T1/MIX runtime window。
|
||||
|
||||
## 资产 SHA-256 对照
|
||||
|
||||
源为 `platform/android/MapLibreAndroidTestApp/src/main/assets/integration/particle-weatherv2/ecmwf-hres-wind-20260807/`,目标为 Test Host `assets/weather/...`;dataset、四个 metadata 与四个 `3,155,976`-byte field.f32 全部逐文件一致。field hashes:T0 `363e2cd2e77501f6bceecbb4aaa68c4f9ef46998a60319ae5b7aba3548995283`;T1 `ef7a8e4b1c47f652f8f7012de16a87c16e3b25556a8f4686629f80514426c451`;T2 `d86a6a51fd5216cf9368756962a5366fd32a627afd40cfde235ba7358c02c5a0`;T3 `970785b0334a9d1511b8897874a81f681814a32b1e0b90e37cf64b77ca9fa39b`。
|
||||
|
||||
## 边界与验证
|
||||
|
||||
未修改 Native/Core、JNI、`WeatherRuntime.java` 或 `modules/weather-runtime-bridge`;未构建、发布 AAR,未进入 NavSea,未加入/运行 Jest。`npm run typecheck`(build-output-throttle)PASS;Metro Node syntax/config `.f32` 检查 PASS;资产 SHA 对照 PASS。RDC 追加执行 `npx expo export --platform android` 也 PASS,Metro 实际导出四个 `3,155,976`-byte `.f32` assets。Android Gradle、APK、ADB、安装和设备验收均未执行,仍需后续 APK-only 人工周期验证地图 tile、真实提交、视觉对齐、交互与稳定性。
|
||||
|
||||
`git diff --check` 已 PASS。Codex sandbox 的 `.git/index.lock` 为只读,因此 Git 收尾由 RDC 精确接管。功能实现提交为 `a91e3601f37f3adfe5d8b7b6a6c3f7f04fcadb8f`,message=`feat: add STEP-062 real weather test map`,已成功 push 到 `origin/particle/main`;未带入历史 untracked/generated 文件。
|
||||
@@ -579,3 +579,11 @@ WeatherColorLayer 的 `ParticleGpuValidationUBO` designated initializer 补齐 `
|
||||
- 当前 App PID hard gate 中 FATAL/SIGSEGV/WEATHER_OBJECTS_NOT_READY/JNI DETECTED/UnsatisfiedLinkError/NoSuchMethodError 均为 0;非法 payload 的 `PAYLOAD_SIZE_MISMATCH` Warning 可见并保持 fail-closed。
|
||||
- Release AAR 的 `HOST_FIELD_SNAPSHOT_READY` / `HOST_FIELD_INITIAL_WINDOW_READY` INFO 日志本轮未在设备 logcat 观察到,已如实记录为 observability 限制;未伪造日志证据,正向以 direct Core result + Native READY 为权威。
|
||||
- 未进入 NavSea,未引入 provider/network/vendor 逻辑,未使用 number[]/payload JSON/base64/hex,未加入或运行 Jest;`/mnt/nas/pbf` 临时制品已清理,baseline UI 与 Git 当前 App.tsx 保持一致。
|
||||
|
||||
# 2026-09-09 — STEP-062 RN Test Host 真实 WeatherV2 底图粒子综合验证(IMPLEMENTED / WAITING_ANDROID_VALIDATION)
|
||||
|
||||
- Test Host 固定 `13.4.1-step061` AAR,不改 Native/Core/JNI/WeatherRuntime,不 build/publish AAR,不进入 NavSea。
|
||||
- style 升级为 `background → GSI raster → WeatherColorLayer → RasterParticleLayer`,GSI 使用 Android Validation 已验证 URL、256/maxzoom18/attribution;Camera 初始聚焦日本及周边。
|
||||
- Android Validation 的 ECMWF HRES 20260807 canonical T0–T3 assets 已原样放入 Host assets,四帧各 3,155,976 bytes 且逐文件 SHA-256 一致。
|
||||
- `expo-asset` 以静态 `.f32` require + `downloadAsync()` 输出 cache `file://` URI;只把 metadata string 与 local file reference 交给既有 STEP-061 bridge,绝不 materialize payload 为 array/JSON/base64/hex。
|
||||
- `LOAD REAL WEATHER T0-T3` clear 后严格断言 Pending、InitialWindowReady、NextSnapshot、NextSnapshot 和 Native READY;控制页提供 timestamp seek、playback/speed/FPS、独立 visibility/stops/colors 与视觉参数。静态 typecheck/Metro/asset hash 通过;RDC 追加 Android Expo export 也已确认四个 `.f32` 正常打包,功能提交 `a91e3601f37f3adfe5d8b7b6a6c3f7f04fcadb8f` 已 push;Android APK/实机待 CARBON7i 一次综合验收。
|
||||
|
||||
Reference in New Issue
Block a user