diff --git a/bot_listener.py b/bot_listener.py
index 5ab5ff01..a3453274 100644
--- a/bot_listener.py
+++ b/bot_listener.py
@@ -57,13 +57,13 @@ def analyze_weather_trend(weather_data, temp_symbol):
local_hour = datetime.now().hour
# === 核心判断:实测是否已超预报 ===
+ is_breakthrough = False
if max_so_far is not None and forecast_high is not None:
if max_so_far > forecast_high + 0.5:
- # 实测已超所有预报!
+ is_breakthrough = True
exceed_by = max_so_far - forecast_high
insights.append(f"🚨 预报已被击穿:实测最高 {max_so_far}{temp_symbol} 已超所有预报上限 {forecast_high}{temp_symbol} 约 {exceed_by:.1f}°!")
- insights.append(f"💡 博弈建议:市场需重新评估,当前可能存在极端异常增温。")
- return "\n💡 态势分析\n" + "\n".join(insights)
+ insights.append(f"💡 建议:市场需重新评估,当前可能存在物理层面的超预期增温。")
# --- 峰值时刻预测逻辑 (仍以 Open-Meteo 逐小时数据为准) ---
hourly = open_meteo.get("hourly", {})
@@ -97,15 +97,19 @@ def analyze_weather_trend(weather_data, temp_symbol):
if local_hour > last_peak_h:
# 已经过了预报的峰值时段
is_peak_passed = True
+ if is_breakthrough:
+ insights.append(f"🌡️ 超常规表现:虽然时间已过预报峰值,但气温击穿上限后仍维持在高位,需警惕降温推迟。")
# 如果实测已经接近“任一”主流预报的最高温 (使用 min_forecast_high)
- if max_so_far and max_so_far >= min_forecast_high - 0.5:
+ elif max_so_far and max_so_far >= min_forecast_high - 0.5:
insights.append(f"✅ 今日峰值已过:气温已触及或接近预报最高,目前处于高位波动或缓慢回落。")
else:
# 虽然时间过了,但离最高温还有差距
insights.append(f"📉 处于降温期:已过预报峰值时段,且当前气温乏力 ({curr_temp}{temp_symbol}),冲击最高预报 {forecast_high}{temp_symbol} 的概率降低。")
elif first_peak_h <= local_hour <= last_peak_h:
# 正在峰值窗口内
- if diff_max <= 0.8:
+ if is_breakthrough:
+ insights.append(f"🔥 狂暴拉升:正处于预测峰值时段,实测正以前所未有的态势压制所有预报,上限已失守。")
+ elif diff_max <= 0.8:
insights.append(f"⚖️ 高位横盘:正处于预测峰值时段,气温将在当前水平小幅波动。")
else:
insights.append(f"⏳ 峰值窗口中:虽在预报高点时段,但目前仍有差距,紧盯最后冲刺。")
@@ -166,12 +170,13 @@ def analyze_weather_trend(weather_data, temp_symbol):
if 315 <= wind_dir or wind_dir <= 45:
insights.append(f"🌬️ 偏北风:冷空气处于主导地位,午后增温阻力较大。")
elif 135 <= wind_dir <= 225:
- # 只有在当前温度离最高预测还有距离时,南风才有意义
- if diff_max > 0.5:
- if is_peak_passed:
+ # 只有在当前温度离最高预测还有距离时,或者已经击穿但还在上升时,南风才有意义
+ if diff_max > 0.5 or (is_breakthrough and curr_temp >= max_so_far):
+ if is_peak_passed and not is_breakthrough:
insights.append(f"🔥 偏南风:存在暖平流支撑,但已过传统峰值时段,冲击上限 {forecast_high}{temp_symbol} 的动能正在衰减。")
else:
- insights.append(f"🔥 偏南风:正从低纬度输送暖平流,气温仍有向上突围的潜力。")
+ status = "气温仍有向上突围的潜力" if not is_breakthrough else "可能推高击穿后的极端高位"
+ insights.append(f"🔥 偏南风:正从低纬度输送暖平流,{status}。")
except (TypeError, ValueError):
pass