系统架构
生产环境为单 Docker 镜像(linux/amd64):FastAPI 托管 API + 静态前端 + Redis 缓存。预测编排由 predictor.py 统一完成;点位 ML 模型与景区 JSON 打包在镜像内,标注库持久化在 Docker 卷。
整体架构
Vue3 前端主应用 · 标注页
Meteogram · 分享
→
Meteogram · 分享
FastAPIpredictor 编排
规则 · ML 融合 · 场景
→
规则 · ML 融合 · 场景
外部数据Open-Meteo
Himawari · 天地图 POI
Himawari · 天地图 POI
浏览器 (Vue3) ├─ POST /api/predict → predictor.py ├─ GET /api/spots/search → 精选景区 JSON(70+ 点) ├─ POST /api/share → 分享快照 + OG/长图渲染 ├─ POST /api/advisory → AI 出行解读(可选) └─ 天地图 POI / 底图 → 浏览器直连 predictor.py ├─ score_cloudsea (规则 + Type A/B/水体) ├─ cloudsea_ml v7 (03–07 点融合 · precursor 12h 特征) ├─ prediction_feedback (访问快照 · 异步写 log) ├─ build_scenario (日出云海 / 晴日日出…) └─ Himawari 卫星轻量校正(当天已发生时段) Open-Meteo 主站不可达时 → Historical Forecast API 回退
预测流水线
- 按观景点 WGS84 坐标拉取 Open-Meteo 5 天逐小时场(含 850/925/700 hPa)。
- DEM 地形:海拔窗、日出方位剖面、可选
local_water近库水体。 - 逐小时规则评分;03:00–07:00 且 ML 激活时按 precursor 12h + dawn 日特征融合 ML 概率(v7)。
- 输出综合场景标签与日出/云海双概率。
- 可选 Himawari 红外区域云量校正。
标注 · ML · 预测反馈闭环
label.html 人工标注
↓
cloudsea.db (SQLite 持久化卷)
↓
backfill_meteo_hourly → train_cloudsea_model (--window v7)
↓
spot 模型 pkl → Docker 镜像 / 热补丁
↓
线上 03–07 融合预测
↓
/api/predict 访问快照 → prediction_access_log
↓
reconcile_outcomes → forecast vs 实况 → 标注页历史面板
核心 API
GET /api/spots/search?q=…
POST /api/predict { lat, lng, elevation, spot_id, viewpoint_id }
GET /api/meteo/profile?…
GET /api/satellite/cloud?…
POST /api/share
GET /api/share/{id}/og.png
GET /api/share/{id}/image.png
POST /api/advisory
GET /health
部署拓扑
docker-compose.prod.yml ├── yunhai (yunhai:latest) :8088→8080 │ ├── /app/static 前端 dist + docs │ ├── /app/data/scenic-spots 精选景区 JSON │ └── volumes: cloudsea_data, analytics_data └── redis:6379 预报 / 海拔缓存