6.0 KiB
6.0 KiB
PolyWeather API 接口文档 (v1.2)
本文档说明当前 PolyWeather 后端实际提供的 HTTP API。后端由 web/app.py 提供,前端通过 Next.js BFF 路由代理访问这些接口。
1. 基础信息
- 本地 Base URL:
http://127.0.0.1:8000 - 生产 Base URL:
http://<your-vps-ip>:8000或绑定后的 HTTPS API 域名 - 响应格式: JSON
- 缓存策略:
- 后端
web/app.py内部分析缓存:默认 5 分钟(Ankara 为 60 秒) - 前端城市详情缓存:5 分钟 TTL + revision 校验
- 前端手动刷新:强制
force_refresh=true跳过缓存
- 后端
2. 接口列表
2.1 获取监控城市列表
- URL:
/api/cities - Method:
GET - 用途: 返回首页左侧监控城市与地图 marker 的基础元数据。
响应示例
{
"cities": [
{
"name": "ankara",
"display_name": "Ankara",
"lat": 40.1281,
"lon": 32.9951,
"risk_level": "medium",
"risk_emoji": "🟠",
"airport": "Esenboğa",
"icao": "LTAC",
"temp_unit": "celsius",
"is_major": true
}
]
}
2.2 获取城市实时分析
- URL:
/api/city/{name} - Method:
GET - 参数:
name: 城市名或别名,如ankara、new-yorkforce_refresh(可选):true时跳过缓存
- 用途: 右侧详情卡片、今日分析 modal、图表和周边站点的主数据接口。
当前核心字段
display_namelocal_timelocal_datetemp_symbolriskcurrentmgmmgm_nearbyforecastmulti_modeldebensembleprobabilitiestrendmetar_today_obsmetar_recent_obshourlyhourly_next_48hsource_forecastsmulti_model_dailyupdated_at
说明
current.raw_metar为 Aviation Weather 返回的原始报文字段。mgm仅在具备官方 MGM 覆盖的城市(如 Ankara)有效。mgm_nearby为统一周边站点字段:- Ankara:MGM 官方周边站
- 其他多数城市:METAR cluster
2.3 获取历史对账数据
- URL:
/api/history/{name} - Method:
GET - 用途: 历史对账弹窗与
/deb指令的历史样本来源。
响应示例
{
"history": [
{
"date": "2026-03-07",
"actual": 7.0,
"deb": 6.5,
"mu": 7.2,
"mgm": 8.0
}
]
}
说明
- 网页端历史图默认展示近期样本,但统计口径只使用已结算日期。
- 当天未结算样本可用于可视化趋势,不计入胜率与 MAE。
2.4 获取城市摘要
- URL:
/api/city/{name}/summary - Method:
GET - 用途: 轻量级温度摘要接口,用于首屏地图温度预热与低开销列表更新。
字段
namedisplay_nameicaolocal_timetemp_symbolcurrent.tempcurrent.obs_timedeb.predictionrisk.levelrisk.warningupdated_at
2.5 获取城市聚合详情
- URL:
/api/city/{name}/detail - Method:
GET - 用途: 商业化聚合视图单请求接口(已接入 P0 只读价格层)。
- 可选参数:
force_refresh=true|falsemarket_slug=<slug>(调试优先直查;传入后优先按 slug 精确定位市场,跳过自动发现)
当前结构
overviewofficialtimeseriesmodelsprobabilitiesmarket_scanriskai_analysis
说明
- 当前生产前端主链路仍以
/api/city/{name}+/api/history/{name}为主。 /api/city/{name}/detail当前已包含 Polymarket P0 只读字段:primary_marketselected_condition_idyes_token/no_tokenyes_buy/yes_sell/no_buy/no_sell/model_probabilitymarket_price(优先 midpoint)edge_percent((model_probability - market_price) * 100)temperature_bucket/top_buckets(结算温度桶及市场概率)signal_label(BUY YES/BUY NO/MONITOR)websocket.asset_ids/websocket.condition_ids(仅用于订阅标识,P0 不下单)
3. 核心对象定义
3.1 风险等级
low: 低风险,模型与实测整体较一致medium: 中风险,存在一定分歧或站点偏置high: 高风险,模型冲突较大或盘面波动价值高
3.2 DEB
DEB 是 PolyWeather 的动态融合预测层,不是简单平均值。它会综合:
- 多模型预测值
- 近期表现
- 城市级偏差特征
- 实况修正上下文
3.3 μ
μ 表示当前结算概率分布中心(动态期望值),会随模型分歧与实况变化而更新。
它不应直接按固定 forecast 口径做静态历史对账。
4. 数据源与第三方 API
4.1 主观测源
- Aviation Weather / METAR
- 全球机场主观测源
- 同时提供结构化字段与原始 METAR 报文
4.2 Ankara 专属源
- Turkish MGM
- Ankara 官方增强层
- 含
Ankara (Bölge/Center)与周边站点
4.3 预测源
- Open-Meteo
- weather.gov(美国城市)
- 多模型集成: ECMWF / GFS / ICON / GEM / JMA
5. 当前口径说明
- 地图 marker 显示当前温度(首屏通过
summary预热)。 - 点击城市后打开右侧详情卡片,保持当前布局与样式不变。
- “今日日内分析”在 modal 中展示:
- 今日温度走势(含 METAR 实测点)
- 结算概率分布
- 多模型预报
- 今日日内结构信号(规则引擎)
- AI 深度分析 + 0-2 小时临近判断
- modal 打开时地图停止动画;点击空白地图仅关闭右侧卡片,不重置视角。
6. 常见问题
-
接口 500
- 先检查
polyweather_web是否启动成功 - 再看
docker-compose logs -f polyweather_web
- 先检查
-
METAR 看起来慢几分钟
- 常见原因是上游发布延迟,不一定是本地轮询问题
- 建议同时查看:
current.obs_timecurrent.report_timecurrent.receipt_time
-
网页显示旧内容
- 先确认 Vercel 已部署最新版本
- 再强刷浏览器缓存
- 如为详情数据,确认是否命中前端 5 分钟 TTL
最后更新: 2026-03-10