Initial import

This commit is contained in:
OpenAI Codex
2026-03-17 19:52:51 +08:00
commit c957fef15b
39 changed files with 7108 additions and 0 deletions

View File

@@ -0,0 +1,643 @@
# 文件 1NavSea Weather Product System Build File
Version: codex6
Architecture: NavSea V11
Domain: weather-system
Status: active-foundation
---
## 1. 系统名称
`NavSea 天气产品系统`
该系统用于定义 NavSea 天气能力的长期基础架构。
它明确把天气体系拆分为三条**不同的生成线**
1. `Display Product`
2. `Analysis Product`
3. `Offline Package`
这三条线不是同一份数据的不同展示形式,而是三类**目标不同、消费者不同、约束不同、实现方式不同**的产品线。
本文件是系统级构建文件,用于统一:
- 架构边界
- 服务端职责
- 前端职责
- 数据生成方向
- 后续 codex 任务拆分依据
---
## 2. 系统目标
构建一个面向 NavSea 的天气产品体系,使其同时支持:
- 地图天气显示
- 点击地图点位查询天气
- 某点未来多小时天气展示
- 航行匹配
- 航线规划
- 航线模拟
- 离线天气使用
- V11 架构下稳定扩展
- 后续多天气变量统一纳管
该系统必须确保:
- 前端不负责天气颜色渲染
- 前端不负责从稀疏点重建连续天气场
- 显示产品与分析产品严格分离
- 离线能力被显式设计,而不是依赖显示缓存“顺便可用”
- 服务端成为天气产品定义与生成中心
---
## 3. 核心原则
### 3.1 天气必须在服务端完成产品化
NavSea 天气不能再被视为“前端拿到原始点数据后自行解释”。
服务端必须把天气组织成正式产品。
服务端负责:
- 插值
- 规则场构建
- 显示色带映射
- 等值线 / 等值带生成
- 多时间帧组织
- no-data 规则
- 产品元数据
- 离线包打包规则
前端消费产品,而不是重建产品。
### 3.2 显示与分析不能混用
“地图上能显示”不等于“可用于规划计算”。
显示产品优先满足:
- 稳定显示
- 快速加载
- 统一视觉
- 图层叠加
分析产品优先满足:
- 数值准确
- 可采样
- 可沿航线计算
- 可参与时间步进模拟
离线包优先满足:
- 可本地持续使用
- 可在无网络环境下支持点查与规划
- 可控下载体积
- 可按区域和时间帧组织
### 3.3 Offline Package 是独立生成线,不是 Display/Analysis 的简单缓存
离线包不是“把在线接口结果多存一份”。
离线包是面向无网络场景单独设计的数据产品,必须从一开始就作为独立生成线建设。
---
## 4. 三条生成线定义
---
## 4.1 Display Product
### 4.1.1 目标
为前端地图提供**可直接显示**的天气产品。
### 4.1.2 消费方
- 地图图层系统
- 图层管理器
- 图例面板
- 时间帧切换器
- 天气点查 UI 外壳
### 4.1.3 主要特征
- 以显示为目标,不以精确数值复用为目标
- 服务端已经完成颜色映射或几何表达
- 前端直接叠图
- 适合交互显示与稳定渲染
- 不要求前端进行天气场重建
### 4.1.4 推荐产品类型
- raster weather tiles
- isoline vector tiles
- isoband vector tiles
- display metadata
- legend metadata
### 4.1.5 典型接口方向
```text
/weather-display/raster/wind/{time}/{z}/{x}/{y}.png
/weather-display/raster/wave/{time}/{z}/{x}/{y}.png
/weather-display/vector/pressure-isoline/{time}/{z}/{x}/{y}.pbf
/weather-display/vector/wind-isoband/{time}/{z}/{x}/{y}.pbf
/weather-display/meta/{product}/{time}
4.1.6 服务端职责
原始天气数据转连续场
生成色带图层
生成等值线 / 等值带
输出显示元数据
输出图例配置
输出 frame 列表和显示推荐参数
4.1.7 前端职责
加载 source / layer
时间帧切换
opacity / visibility 控制
图例展示
点击交互触发分析查询
不做色带映射
不做连续场重建
4.2 Analysis Product
4.2.1 目标
为点查、航行匹配、航线规划、模拟提供可计算、可采样、可组合的天气数值产品。
4.2.2 消费方
地图点击查询
weather point panel
route weather matcher
route planner
simulation engine
ETA / cost model
未来的船型性能耦合模块
4.2.3 主要特征
数值优先
不带显示色带依赖
可做点位采样
可做时间序列采样
可做沿线采样
可服务于算法,而不是只服务于 UI
4.2.4 推荐产品类型
point sample
multi-hour sample bundle
bbox grid block
route sample
forecast frame index
variable bundle sample
4.2.5 典型接口方向
/weather-analysis/sample-point
/weather-analysis/sample-bundle
/weather-analysis/grid/{product}
天气-analysis/route-sample
/weather-analysis/frame-index/{product}
4.2.6 推荐查询能力
单点单时刻采样
单点多小时采样
多变量同点打包采样
bbox 网格数据块查询
给定航线与起航时间的沿线天气采样
给定 forecast frame 的变量集合访问
4.2.7 服务端职责
提供标准化数值场查询
提供时间维度组织
提供多变量统一采样结果
控制插值方式与 no-data 行为
保证在线查询结果与离线包语义一致
4.2.8 前端/规划侧职责
请求分析接口
展示点位时间序列
驱动规划器调用 route-sample
不自己从显示图层反推出数值
4.3 Offline Package
4.3.1 目标
为无网络或弱网络场景提供本地可用天气包,使系统在离线状态下仍可支持:
地图天气查看
点击点位未来天气查询
航线规划采样
航线模拟
基础趋势判断
4.3.2 消费方
本地天气缓存系统
离线地图天气层
本地点查采样器
本地航线采样器
本地模拟/规划组件
4.3.3 主要特征
是单独打包的离线产品
可按区域、时间段、变量集下载
同时覆盖显示需求与分析需求
不能仅靠 raster cache 代替
需控制体积与分辨率
4.3.4 离线包建议双轨组成
A. display cache
预生成 raster tiles
必要的 display metadata
可选少量 vector overlay
B. analysis cache
压缩后的规则网格
多时间帧数值块
多变量字段
本地可采样结构
4.3.5 典型内容
区域 bbox
time frames
product list
units
no-data 规则
grid geometry
values / u-v components
display metadata
package manifest
4.3.6 服务端职责
离线区域切片与打包
时间帧裁剪
分辨率控制
变量集控制
manifest 生成
下载校验信息生成
4.3.7 客户端职责
下载包管理
包安装 / 校验
本地索引
本地点位采样
本地沿线采样
优先使用本地包,缺失时再回退在线
5. 三条线之间的关系
5.1 关系概述
三条线共享同一个天气源体系,但生成目标不同。
原始天气源 / 预处理层
├── Display Product -> 面向地图显示
├── Analysis Product -> 面向采样 / 规划 / 模拟
└── Offline Package -> 面向无网络使用
5.2 不允许的混淆
以下边界必须明确:
不允许把 raster tile 当成分析数据源
不允许把显示色带当成数值语义来源
不允许把 offline package 简化成“只缓存 png”
不允许前端自己构建主天气显示逻辑
不允许把离线点查建立在“颜色反推数值”上
5.3 允许的共享
以下内容可以由三条线共享:
forecast frame index
产品定义
单位定义
no-data 定义
变量命名规范
palette 配置源
contour level 配置
时间轴组织规则
6. 统一产品定义层
为了让三条线长期一致,系统必须建立统一天气产品定义层。
6.1 每个天气产品至少要有
product id
title
unit
value type
time frame rule
no-data rule
display recommendation
analysis semantics
offline packaging eligibility
6.2 典型产品
wind
gust
wave
swell
current
pressure
temperature
rain
cloud
visibility未来可选
6.3 对向量类产品的建议
对风和流,分析线最好保留:
u/v 分量
speed/dir 组合但需保证采样语义稳定
7. 元数据中心要求
系统必须有统一元数据概念,至少覆盖:
frame list
unit
display type
palette id
legend model
contour levels
data min/max
display recommended min/max
supported zoom range
no-data definition
package generation limits
元数据必须以服务端定义为主,不由前端自行假设。
8. 地图点击查询的系统归属
地图上点击某地,展示该点未来多小时天气信息,这一能力归属于:
Analysis Product
在线模式:
前端点击点位
向 analysis API 请求多小时时间序列
服务端返回 sample bundle
离线模式:
前端点击点位
由本地 Offline Package 中的 analysis cache 做本地采样
返回本地时间序列
因此点查 UI 是前端组件,但其数值来源属于 Analysis / Offline 体系,而不属于 Display Product。
9. 航线规划与模拟的系统归属
未来的航行匹配、航线规划、模拟不应依赖 Display Product。
其天气来源必须是:
在线Analysis Product
离线Offline Package 中的 analysis cache
规划器未来需要:
任意点采样
沿线采样
多时间帧采样
多变量打包采样
可重复计算的稳定数值接口
因此规划系统与天气系统的正式对接点应该在 Analysis / Offline而不是 Display。
10. NavSea V11 架构约束
本系统必须遵守 NavSea V11
不做破坏性架构修改
不把天气逻辑散落到前端显示层
所有新增模块保持职责单一
不引入未知依赖
每个新文件遵守 NavSea logger 规则
旧文件修改必须基于用户提供的现有代码
返回完整替换文件,不返回零散 patch
保持 wrapper-safe integration
11. 第一阶段建设顺序
建议的第一阶段顺序如下:
第一阶段 A系统框架定型
明确三条线边界
明确命名规范
明确元数据结构
明确 display / analysis / offline 的职责分离
第一阶段 B优先落地产品
Display Product 最小闭环
wind raster
wave raster
pressure isoline
display metadata
Analysis Product 最小闭环
sample-point
sample-bundle
grid query
Offline Package 最小闭环
离线包 manifest
局部区域 analysis cache
本地点查可用
基础 display cache
第一阶段 C前端接入
display 层接入地图
analysis 层接入点查 panel
offline 层接入本地采样 fallback
12. 本系统文件的作用
该文件不是某一个具体实现任务,而是:
作为 NavSea 天气系统的顶层构建文件
作为 codex 任务拆分依据
作为后续接口命名与模块落地的统一约束
作为 display / analysis / offline 三条线的系统级说明
13. 后续 codex 任务拆分
基于本系统文件,下一步拆出三个主任务:
NavSea_DisplayProductLine
NavSea_AnalysisProductLine
NavSea_OfflinePackageLine
三者必须分别实现,不得混淆为一个泛化任务。