diff --git a/docs/data-architecture-review.md b/docs/data-architecture-review.md index ab072ce3..e9eb68e6 100644 --- a/docs/data-architecture-review.md +++ b/docs/data-architecture-review.md @@ -98,9 +98,9 @@ EMOS 线性回归校准 raw distribution,支持 `legacy` / `emos_shadow` / `em ## 六、待办 -| # | 问题 | 优先级 | -|---|------|------| -| 1 | 校准系数需手动重新训练(数据分布变化时 CRPS 漂移) | 🟡 | -| 2 | METAR TTL 60s 过于激进 | 🟡 | -| 3 | 缓存键过粗 — 微小变化触发完整重算 | 🟢 | -| 4 | 扫描终端 10min 轮询与 35s 超时可能堆积 pending 请求 | 🟢 | +| # | 问题 | 优先级 | 说明 | +|---|------|------|------| +| 1 | 校准系数需手动重新训练 | 🟡 | 漂移检测已有,但自动触发重训练需要 GPU/算力资源 | +| 2 | 缓存键过粗 — `city::mode` 粒度 | 🟢 | 微小温度变化触发完整重算,可考虑内容 hash 键 | + +> 注:原审查中 METAR TTL 60s 实际为 600s(误诊);扫描终端轮询已有 `AbortController` + `requestSeq` 保护(误诊)。 diff --git a/web/core.py b/web/core.py index b5067a07..2de58e53 100644 --- a/web/core.py +++ b/web/core.py @@ -508,6 +508,12 @@ def _probability_summary() -> Dict[str, Any]: records.append(rec) if records: drift = check_calibration_drift(records) + if drift.get("drifted"): + logger.warning( + "Calibration drift detected: {} — {}", + drift.get("warning") or "CRPS degraded", + f"delta={drift.get('delta_pct')}% samples={drift.get('sample_count')}", + ) except Exception: pass return {