Files
PolyWeather/README_ZH.md
T
2026-04-18 14:40:29 +08:00

9.1 KiB
Raw Blame History

PolyWeather Pro

面向温度结算市场的生产级气象情报系统。

官方看板:polyweather-pro.vercel.app

产品截图

全球看板

PolyWeather 全球地图看板

城市分析(Ankara

PolyWeather Ankara 分析页

当前产品状态(2026-04-18

  • 已上线订阅制:Pro 月付 5 USDC
  • 已上线积分抵扣:500 积分 = 1 USDC,最多抵扣 3 USDC
  • 已上线链上支付:Polygon 合约支付(USDC / USDC.e)。
  • 已上线自动补单:事件监听 + 周期确认双链路。
  • 已上线支付运行态与审计接口:/api/payments/runtime
  • 已上线轻量运营后台:/ops(会员、周榜、补分、支付异常单)。
  • 已上线轻量可观测性:/healthz/api/system/status/metrics
  • 已补最小外部监控栈:Prometheus + Alertmanager + Grafana + Telegram 告警 relay。
  • 运行态状态、缓存与核心离线训练/回填链路已完成 SQLite 主路径收口;legacy JSON/JSONL 仅保留给迁移、导出与显式回退输入。
  • 已接入 EMOS/CRPS 校准链路,但当前仍保持 emos_shadow
  • 官方增强站网已统一接入:
    • MGM(土耳其)
    • CMA/NMC(中国内地)
    • JMA AMeDAS(日本)
    • KMA(韩国)
    • HKO(香港)
    • CWA(台湾)
  • 东京现已接入羽田 JMA AMeDAS 10 分钟温度作为官方增强层。
  • 已支持 Dashboard 定向预热 worker / cron 路径,运行态在 /api/system/status/ops 可见。
  • /ops 现已展示缓存桶数量、summary cache hit/miss 与 prewarm heartbeat。
  • 今日日内分析已改为“专业气象判断台”:顶部先给气象主判断、置信度、基准/上修/下修路径、下一观测点,再展示证据链、失效条件、确认条件和模型层。
  • 日内分析弹窗在 full detail / market detail 同步完成前会锁住旧内容并显示刷新状态,避免用户短暂看到上一轮缓存数据后误判。
  • 概率区已改为“校准模型概率”,有 LGBM 时展示 LGBM 校准概率;模型共识和市场价格只作为辅助参考。
  • 今日日内结构解读已支持可选 Groq 改写层,失败时自动回退规则文案。
  • 前端部署文档已补充 Vercel 节流建议,包括 analytics 关闭、eager fetch 开关与扫描流量防火墙规则。

许可证与商用边界(重要)

本仓库自 2026-03-30 起采用 GNU AGPL-3.0-only

  • 仓库公开部分:天气聚合、基础分析、前端看板、Bot 基础能力、标准支付流程。
  • 不包含在仓库中的部分:生产私有数据、商业风控规则、运营阈值、收费策略细节、内部对账与增长工具。
  • 商标、品牌、域名、生产数据库与托管服务运营能力,不因代码许可证一并授权。

详细见:AGPL-3.0 与商用边界

核心能力

  • 聚合 52 个监控城市的实测与预报数据。
  • DEBDynamic Error Balancing)融合多模型最高温。
  • 输出结算导向校准概率分布(mu + 温度桶),并在 LGBM 生效时展示校准引擎元数据。
  • 将模型观点映射到 Polymarket 行情,做错价扫描。
  • Web 仪表盘与 Telegram Bot 复用同一分析内核。
  • 支付链路具备事件重放、SQLite 审计事件与 RPC 容灾能力。
  • 官方增强层支持按国家 provider 统一接入,但不替代机场主站、METAR 或明确官方结算站。
  • 支持后台预热热点城市,降低用户点击城市后的冷启动成本。

参考架构

flowchart LR
    U["用户(Web / Telegram"] --> FE["Next.js 前端(Vercel"]
    U --> BOT["Telegram BotVPS"]
    FE --> API["FastAPI /web/app.py"]
    BOT --> API

    API --> WX["Weather Collector"]
    WX --> METAR["Aviation WeatherMETAR"]
    WX --> MGM["MGM(土耳其站网)"]
    WX --> JMA["JMA AMeDAS(日本)"]
    WX --> KMA["KMA(韩国)"]
    WX --> OM["Open-Meteo"]
    WX --> HKO["HKO / CWA / NOAA 等官方结算源"]

    API --> ANA["DEB + 趋势 + 概率 + 市场扫描"]
    ANA --> PAY["支付状态(Intent + Event + Confirm Loop"]
    ANA --> PM["Polymarket 只读层"]
    API --> OBS["healthz / system status / metrics"]
    API --> PREWARM["Dashboard 预热接口 / Worker"]
    ANA --> LLM["可选 Groq 文案改写层"]
    ANA --> STATE["SQLite runtime state<br/>legacy files only for migration/export fallback"]

监控城市(52

  • 欧洲/中东/非洲:Ankara、Istanbul、Moscow、London、Paris、Munich、Milan、Warsaw、Madrid、Tel Aviv、Amsterdam、Helsinki、Lagos、Cape Town、Jeddah
  • 亚太:Seoul、Busan、Hong Kong、Lau Fau Shan、Taipei、Shanghai、Beijing、Wuhan、Chengdu、Chongqing、Shenzhen、Guangzhou、Singapore、Tokyo、Kuala Lumpur、Jakarta、Manila、Wellington
  • 美洲:Toronto、New York、Los Angeles、San Francisco、Aurora、Austin、Houston、Chicago、Dallas、Miami、Atlanta、Seattle、Mexico City、Buenos Aires、Sao Paulo、Panama City
  • 南亚:Lucknow、Karachi、Masroor Air Base

快速启动

后端 + BotDocker

docker compose up -d --build

前端本地运行

cd frontend
npm ci
npm run dev

运行数据目录(VPS 推荐)

建议将运行态数据放到仓库外(避免 git pull 被 SQLite 卡住):

POLYWEATHER_RUNTIME_DATA_DIR=/var/lib/polyweather
POLYWEATHER_DB_PATH=/var/lib/polyweather/polyweather.db
POLYWEATHER_STATE_STORAGE_MODE=sqlite

运维验收

健康与系统状态

curl http://127.0.0.1:8000/healthz
curl http://127.0.0.1:8000/api/system/status
curl http://127.0.0.1:8000/metrics

Dashboard 预热 Worker

docker compose --profile workers up -d polyweather_prewarm
curl http://127.0.0.1:8000/api/system/status

重点关注:

  • prewarm.thread_alive
  • prewarm.runtime.cycle_count
  • prewarm.runtime.last_summary_ok
  • cache.analysis.hit_rate

前端缓存头

./scripts/validate_frontend_cache.sh "https://polyweather-pro.vercel.app"

支付自动补单日志

docker compose logs -f polyweather | egrep "payment event loop started|payment confirm loop started|payment auto-confirmed"

外部监控栈

docker compose --profile monitoring up -d polyweather_prometheus polyweather_alertmanager polyweather_alert_relay polyweather_grafana
  • Prometheushttp://127.0.0.1:${POLYWEATHER_PROMETHEUS_PORT:-9090}
  • Alertmanagerhttp://127.0.0.1:${POLYWEATHER_ALERTMANAGER_PORT:-9093}
  • Grafanahttp://127.0.0.1:${POLYWEATHER_GRAFANA_PORT:-3001}

手动巡检:

python scripts/check_ops_health.py --base-url http://127.0.0.1:8000

支付运行态

curl http://127.0.0.1:8000/api/payments/runtime

运营后台

  • 前端入口:https://polyweather-pro.vercel.app/ops
  • 后端需配置:
POLYWEATHER_OPS_ADMIN_EMAILS=yhrsc30@gmail.com

钱包异动监听日志

docker compose logs -f polyweather | egrep "polymarket wallet activity watcher started|wallet activity pushed"

Telegram 指令

指令 用途
/city <name> 城市实时分析
/deb <name> DEB 历史对账
/top 用户积分排行
/id 查看聊天 Chat ID
/diag Bot 启动诊断
/help 帮助与用法

文档索引

当前版本

  • 版本:v1.5.4
  • 文档最后更新:2026-04-18