290 lines
4.8 KiB
Markdown
290 lines
4.8 KiB
Markdown
# NavSea V11 核心域定义(Core Domain Definition)
|
||
|
||
## 版本
|
||
|
||
v11-core-domain-1 (CN)
|
||
|
||
---
|
||
|
||
# 1. 文档目的
|
||
|
||
本文件用于定义 NavSea 在 V11 架构下的**核心域边界(Domain Boundaries)**。
|
||
|
||
NavSea 被定义为:
|
||
|
||
> 一个**航海视觉辅助系统**,在离线可生存的前提下,将海图数据、传感器解析结果与环境信息统一供给显示层。
|
||
|
||
本文件只定义:
|
||
|
||
* 系统结构
|
||
* 各域职责边界
|
||
|
||
本文件**不涉及具体实现**。
|
||
|
||
---
|
||
|
||
# 2. 系统核心原则
|
||
|
||
NavSea 不是:
|
||
|
||
* ❌ 航行控制系统
|
||
* ❌ 设备控制系统
|
||
* ❌ 单纯地图显示软件
|
||
|
||
NavSea 是:
|
||
|
||
> 一个**面向显示的多源数据供给系统(Display-Oriented Data Supply System)**
|
||
|
||
所有模块的存在目的只有一个:
|
||
|
||
> **为显示层提供可靠、可解释、可降级的数据**
|
||
|
||
---
|
||
|
||
# 3. 顶层结构
|
||
|
||
NavSea 由四个核心域组成:
|
||
|
||
1. 海图域(Chart Domain)
|
||
2. 传感器域(Sensor Domain)
|
||
3. 环境域(Environment Domain)
|
||
4. 显示域(Display Domain)
|
||
|
||
---
|
||
|
||
# 4. 海图域(Chart Domain)
|
||
|
||
## 4.1 职责
|
||
|
||
海图域负责:
|
||
|
||
* 向 MapLibre 提供瓦片数据(PBF)
|
||
* 管理海图数据来源(预置 / 本地缓存 / 在线)
|
||
* 保证离线可用
|
||
* 管理数据版本与更新
|
||
* 决定每个 tile 请求返回哪份数据
|
||
|
||
## 4.2 核心能力
|
||
|
||
* Base Pack(预置海图)
|
||
* Region Cache(区域缓存)
|
||
* Online Pack(在线最新数据)
|
||
* Tile Resolver(瓦片解析与选择)
|
||
* Manifest(本地索引与版本管理)
|
||
|
||
## 4.3 输出
|
||
|
||
海图域输出:
|
||
|
||
> MapLibre 可渲染的矢量瓦片(PBF)及相关资源
|
||
|
||
## 4.4 非职责
|
||
|
||
海图域不得:
|
||
|
||
* ❌ 解析 NMEA
|
||
* ❌ 做航行判断
|
||
* ❌ 控制 UI
|
||
* ❌ 处理非地图业务逻辑
|
||
|
||
---
|
||
|
||
# 5. 传感器域(Sensor Domain)
|
||
|
||
## 5.1 职责
|
||
|
||
传感器域负责:
|
||
|
||
* 接收船内 UDP 数据
|
||
* 解析 NMEA 电文
|
||
* 统一数据结构
|
||
* 维护本船状态
|
||
* 进行实时判断与推导
|
||
* 输出可显示的结果
|
||
|
||
## 5.2 输入
|
||
|
||
* 船内 UDP 网络
|
||
* NMEA 电文(如 GNRMC、YDMWV 等)
|
||
|
||
## 5.3 核心能力
|
||
|
||
* 数据解析与标准化
|
||
* 状态建模(本船 / 目标)
|
||
* 计算派生数据(航向、风等)
|
||
* 风险识别与判断
|
||
* 生成可展示结果
|
||
|
||
## 5.4 输出
|
||
|
||
传感器域输出:
|
||
|
||
> 已解释的、可直接用于显示的结果(不是原始数据)
|
||
|
||
示例:
|
||
|
||
* 本船状态
|
||
* 目标信息
|
||
* 风信息
|
||
* 风险提示
|
||
* 告警
|
||
|
||
## 5.5 非职责
|
||
|
||
传感器域不得:
|
||
|
||
* ❌ 管理海图
|
||
* ❌ 访问互联网 API
|
||
* ❌ 控制设备
|
||
* ❌ 直接渲染 UI
|
||
|
||
---
|
||
|
||
# 6. 环境域(Environment Domain)
|
||
|
||
## 6.1 职责
|
||
|
||
环境域负责:
|
||
|
||
* 获取天气与海洋数据(API)
|
||
* 本地缓存环境信息
|
||
* 离线时提供可用数据
|
||
* 管理数据时效性(新鲜度)
|
||
|
||
## 6.2 输入
|
||
|
||
* 互联网 API(天气、海流、气压等)
|
||
|
||
## 6.3 核心能力
|
||
|
||
* API 请求
|
||
* 数据缓存(带 TTL)
|
||
* 离线 fallback
|
||
* 时间戳管理
|
||
* 数据新鲜度评估
|
||
|
||
## 6.4 输出
|
||
|
||
环境域输出:
|
||
|
||
> 带时间语义的环境信息
|
||
|
||
示例:
|
||
|
||
* 风预报
|
||
* 海流
|
||
* 天气状态
|
||
|
||
## 6.5 非职责
|
||
|
||
环境域不得:
|
||
|
||
* ❌ 管理地图瓦片
|
||
* ❌ 解析 NMEA
|
||
* ❌ 控制 UI
|
||
* ❌ 生成无时间标记的数据
|
||
|
||
---
|
||
|
||
# 7. 显示域(Display Domain)
|
||
|
||
## 7.1 职责
|
||
|
||
显示域负责:
|
||
|
||
* 将所有数据呈现给用户
|
||
* 融合多来源数据
|
||
* 管理 UI 组件与布局
|
||
* 表达系统状态(包括降级状态)
|
||
|
||
## 7.2 输入
|
||
|
||
* 海图域(瓦片)
|
||
* 传感器域(判断结果)
|
||
* 环境域(环境信息)
|
||
|
||
## 7.3 核心能力
|
||
|
||
* MapLibre 地图显示
|
||
* 覆盖层(目标 / 风险 / 航向等)
|
||
* 信息面板
|
||
* 告警展示
|
||
* 数据新鲜度提示
|
||
* 降级模式提示
|
||
|
||
## 7.4 输出
|
||
|
||
> 用户看到的完整视觉系统
|
||
|
||
## 7.5 非职责
|
||
|
||
显示域不得:
|
||
|
||
* ❌ 获取数据
|
||
* ❌ 解析数据
|
||
* ❌ 管理缓存
|
||
* ❌ 执行业务计算
|
||
|
||
---
|
||
|
||
# 8. 域间交互规则
|
||
|
||
## 8.1 允许的数据流
|
||
|
||
* 海图域 → 显示域
|
||
* 传感器域 → 显示域
|
||
* 环境域 → 显示域
|
||
|
||
## 8.2 禁止耦合
|
||
|
||
* ❌ 海图域 ↔ 传感器域
|
||
* ❌ 传感器域 ↔ 环境域
|
||
* ❌ 显示域依赖内部实现细节
|
||
|
||
所有交互必须通过**明确的输出接口**。
|
||
|
||
---
|
||
|
||
# 9. 离线策略定义
|
||
|
||
## 9.1 海图域
|
||
|
||
* 必须始终提供可显示内容
|
||
* Base Pack 提供最低保障
|
||
|
||
## 9.2 传感器域
|
||
|
||
* 必须完全离线可运行
|
||
* 不依赖互联网
|
||
|
||
## 9.3 环境域
|
||
|
||
* 离线时使用缓存数据
|
||
* 必须标注数据时间
|
||
|
||
## 9.4 显示域
|
||
|
||
* 必须清晰表达数据缺失或过期
|
||
* 禁止伪装正常状态
|
||
|
||
---
|
||
|
||
# 10. V11 架构约束
|
||
|
||
后续开发必须遵守:
|
||
|
||
* 不破坏域边界
|
||
* 通过 wrapper / adapter 扩展
|
||
* 不允许跨域逻辑泄漏
|
||
* 不允许隐式数据共享
|
||
|
||
---
|
||
|
||
# 11. 最终定义
|
||
|
||
NavSea 架构定义为:
|
||
|
||
> 一个由海图域、传感器域、环境域独立生成数据,并由显示域统一呈现的离线可生存视觉系统。
|
||
|
||
---
|