4.3 KiB
4.3 KiB
STEP-057D WeatherRuntime 接口收尾与 RN 桥接前冻结 — Codex 完成报告
状态:IMPLEMENTED / READY_ANDROID_COMPILE_CHECK
实际完成内容
本轮基于 01295df4b814562f569375e7e7cf1f48ce35388f,完成 Host facade 收尾,不进入 STEP-058,不实现 RN/JSI/TurboModule。
- 新增
WeatherRuntime.setParticleColor(float,float,float,float)与setTrailColor(float,float,float,float),经独立 JNI setter 进入 Core。两者互不提交另一颜色,不影响 WeatherColor ramp、field、Timeline、Runtime Field Window 或粒子模拟。 - 保留
setParticleColors(...)兼容 helper,继续使用原子成对底层 setter;不在 facade 猜测默认值。Core 默认值仍由RasterParticleLayer::Impl所有。 - REAL WEATHER submit 改用
FieldSubmitResult与accepted()/enum 日志,不再使用getCode()或整数结果做正常 Host 业务判断。 - REAL WEATHER 的 playback 和 typed visual 属性不再回退到
MapLibreMap低层接口;旧 fixture、HOST、time-mix、field-window 与 diagnostics 入口保留并明确属于 legacy/diagnostic。 - 增加独立颜色 API、隔离性及 native rejection fail-closed 的既有 JUnit/Mockito 测试源码。
修改文件
platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/WeatherRuntime.javaplatform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/MapLibreMap.javaplatform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/NativeMap.javaplatform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/NativeMapView.javaplatform/android/MapLibreAndroid/src/cpp/native_map_view.hppplatform/android/MapLibreAndroid/src/cpp/native_map_view.cppplatform/android/MapLibreAndroidTestApp/src/main/java/org/maplibre/android/testapp/activity/particle/ParticleCoreLayerValidationActivity.ktplatform/android/MapLibreAndroid/src/test/java/org/maplibre/android/maps/WeatherRuntimeStateTest.javadocs/50_Step记录/STEP-057D_WeatherRuntime接口收尾与RN桥接前冻结_v1.md粒子开发记录.md
API 与旁路边界
正式 Host/RN API 使用独立 setParticleColor/setTrailColor、typed field result、typed playback 与 typed visual 方法。A 类 REAL WEATHER 正常控制均经 WeatherRuntime。B 类 legacy/diagnostic 仍可直接调用 MapLibreMap,仅服务 fixture、HOST INVALID/DUPLICATE、ADVANCE WINDOW、time-mix 和旧诊断,不构成 RN contract。
验证
git diff --check:PASS(功能提交前及文档收尾前均执行)。rg源码审计:确认 REAL WEATHER 不再使用submitWindField(...).getCode(),且 REAL WEATHER 不走 timeline/property 低层 fallback。- 未执行 Android Gradle、APK build、ADB、设备/虚拟机测试或 Jest。
- 未执行 noisy compile/test;Android compile check 留待后续统一授权。
已知剩余风险
Android Java/JNI 编译、Mockito final-class 配置和设备上的独立颜色视觉效果尚未运行验证;需后续 Android compile check 与人工验收。未改变 Core/render 生命周期,未引入 RN bridge。
审计后小修正
独立代码审计发现 controlTimeline() 在 REAL WEATHER 模式下若 WeatherRuntime 返回 REJECTED,原条件表达式会跳过 reject 分支并误记为成功。已修正为显式 commandAccepted 判定:
WeatherRuntime返回ACCEPTED→ 成功;- REAL WEATHER 下返回
REJECTED/ null → 明确拒绝并立即 return,绝不 fallback; - 非 REAL WEATHER 的 legacy/diagnostic 路径仍允许调用底层
MapLibreMap.controlRasterArraySourceTimeline(...)。
该修正只修改 TestApp Host 模拟逻辑,不修改 WeatherRuntime、JNI、Core、Renderer、Timeline 或 GPU 语义。
Git
- 主功能 commit:
544e4aee3ad639ce5d64c054c3668e2ea2de3d72 - 主功能 message:
fix: finalize WeatherRuntime host API boundary - 文档主体提交:
0e117a9255f708f3f74a39d022ff740976a28ba4 - 审计小修正 commit:
74e3cc911b8cecd4f3d75613055c213a8bcebcdb - 修正 message:
fix: preserve WeatherRuntime timeline rejection - Remote branch:
origin/particle/main - 审计小修正已成功 push;功能代码 HEAD 与 Remote HEAD 均已推进到
74e3cc911b8cecd4f3d75613055c213a8bcebcdb。 - 本报告后续文档提交只更新记录,不改变功能代码。