From af2f57bd8127dba58e4dcb3efd4a633707a0942a Mon Sep 17 00:00:00 2001 From: AmandaloveYang <2569718930@qq.com> Date: Sat, 14 Feb 2026 20:24:26 +0800 Subject: [PATCH] fix: wind analysis now direction-aware, added west/east wind handling --- bot_listener.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/bot_listener.py b/bot_listener.py index 1d9d728b..effc7214 100644 --- a/bot_listener.py +++ b/bot_listener.py @@ -138,7 +138,7 @@ def analyze_weather_trend(weather_data, temp_symbol): if wind_speed >= 15: insights.append(f"🌬️ 风很大:风速 {wind_speed}kt,温度可能会忽高忽低。") elif wind_speed >= 10: - insights.append(f"🍃 有风:风速适中,白天可能会把远处的暖空气吹过来,帮助升温。") + insights.append(f"🍃 有风:风速适中 ({wind_speed}kt),会加速空气流动,具体影响看风向。") # 4. 云层遮挡分析 (仅在升温期/峰值期有意义) clouds = metar.get("current", {}).get("clouds", []) @@ -178,17 +178,28 @@ def analyze_weather_trend(weather_data, temp_symbol): if not is_peak_passed or local_hour <= last_peak_h + 2: try: wind_dir = float(metar.get("current", {}).get("wind_dir", 0)) - # 北半球简化逻辑:北风 cold,南风 warm if 315 <= wind_dir or wind_dir <= 45: + # 北风:冷空气 insights.append(f"🌬️ 吹北风:从北方来的冷空气,会压制升温。") elif 135 <= wind_dir <= 225: - # 只有在当前温度离最高预测还有距离时,或者已经击穿但还在上升时,南风才有意义 + # 南风:暖空气 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"🔥 吹南风:南方的暖空气还在吹过来,但最热时段已过,后劲不足了。") else: status = "温度还有继续上涨的空间" if not is_breakthrough else "可能把温度推得更高" insights.append(f"🔥 吹南风:南方的暖空气正在吹过来,{status}。") + elif 225 < wind_dir < 315: + # 西风/西南风/西北风 + if wind_dir <= 260: + insights.append(f"🌬️ 吹西南风:带有一定暖湿气流,对升温有轻微帮助。") + elif wind_dir >= 280: + insights.append(f"🌬️ 吹西北风:偏冷的气流,会拖慢升温。") + else: + insights.append(f"🌬️ 吹西风:对温度影响不大,主要取决于日照和云量。") + elif 45 < wind_dir < 135: + # 东风 + insights.append(f"🌬️ 吹东风:对温度影响较小,主要看日照和云量。") except (TypeError, ValueError): pass