From d1e6df3e3f7233e7e30ba5b8632da7333d9ff705 Mon Sep 17 00:00:00 2001 From: AmandaloveYang <2569718930@qq.com> Date: Sat, 21 Feb 2026 10:46:09 +0800 Subject: [PATCH] feat: Implement new message processing and event handling in the bot listener. --- bot_listener.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/bot_listener.py b/bot_listener.py index 1c226010..6f4154ef 100644 --- a/bot_listener.py +++ b/bot_listener.py @@ -110,17 +110,22 @@ def analyze_weather_trend(weather_data, temp_symbol): f"{parts},极差 {consensus_spread:.1f}°!" f"{highest[0]} 最高 ({highest[1]}{temp_symbol}) vs {lowest[0]} 最低 ({lowest[1]}{temp_symbol}),不确定性大。" ) + elif len(labeled_forecasts) == 1: + name, val = labeled_forecasts[0] + insights.append( + f"📡 仅1个预报源 ({name} {val}{temp_symbol}) — 无法交叉验证,共识评分不可用。" + ) - # 集合预报区间 (如果有) - ens_p10 = ensemble.get("p10") - ens_p90 = ensemble.get("p90") - if ens_p10 is not None and ens_p90 is not None and ens_median is not None: - ens_range = ens_p90 - ens_p10 - insights.append( - f"📊 集合预报:中位数 {ens_median}{temp_symbol}," - f"90% 区间 [{ens_p10}{temp_symbol} - {ens_p90}{temp_symbol}]," - f"波动幅度 {ens_range:.1f}°。" - ) + # 集合预报区间 (独立于共识评分显示) + ens_p10 = ensemble.get("p10") + ens_p90 = ensemble.get("p90") + if ens_p10 is not None and ens_p90 is not None and ens_median is not None: + ens_range = ens_p90 - ens_p10 + insights.append( + f"📊 集合预报:中位数 {ens_median}{temp_symbol}," + f"90% 区间 [{ens_p10}{temp_symbol} - {ens_p90}{temp_symbol}]," + f"波动幅度 {ens_range:.1f}°。" + ) # === 核心判断:实测是否已超预报 === is_breakthrough = False @@ -431,8 +436,11 @@ def analyze_weather_trend(weather_data, temp_symbol): elif consensus_level == "medium": timing_score += 1 timing_factors.append("模型小分歧") - else: + elif consensus_level == "low": timing_factors.append("模型分歧大") + else: + # unknown: 数据源不足,无法评估共识 + timing_factors.append("仅单源") if max_so_far is not None and forecast_high is not None: gap = abs(max_so_far - forecast_high)