feat: real-time μ correction when actual exceeds forecast + Ankara METAR aggressive rounding info for AI
This commit is contained in:
@@ -191,6 +191,15 @@ def analyze_weather_trend(weather_data, temp_symbol, city_name=None):
|
|||||||
else:
|
else:
|
||||||
mu = ens_median
|
mu = ens_median
|
||||||
|
|
||||||
|
# 实时修正:如果实测最高温已经超过了预报的 μ,则向上修正
|
||||||
|
if max_so_far is not None and max_so_far > mu:
|
||||||
|
if not is_cooling:
|
||||||
|
# 还在升温,预期最终比当前再高一点
|
||||||
|
mu = max_so_far + 0.3
|
||||||
|
else:
|
||||||
|
# 已降温,以实测峰值为锚
|
||||||
|
mu = max_so_far
|
||||||
|
|
||||||
# 简化的正态 CDF (不依赖 scipy)
|
# 简化的正态 CDF (不依赖 scipy)
|
||||||
def _norm_cdf(x, m, s):
|
def _norm_cdf(x, m, s):
|
||||||
return 0.5 * (1 + _math.erf((x - m) / (s * _math.sqrt(2))))
|
return 0.5 * (1 + _math.erf((x - m) / (s * _math.sqrt(2))))
|
||||||
@@ -279,6 +288,13 @@ def analyze_weather_trend(weather_data, temp_symbol, city_name=None):
|
|||||||
ai_features.append(f"🌡️ 当前实测温度: {current_temp}{temp_symbol}。")
|
ai_features.append(f"🌡️ 当前实测温度: {current_temp}{temp_symbol}。")
|
||||||
if max_so_far is not None:
|
if max_so_far is not None:
|
||||||
ai_features.append(f"🏔️ 今日实测最高温: {max_so_far}{temp_symbol} (WU结算={round(max_so_far)}{temp_symbol})。")
|
ai_features.append(f"🏔️ 今日实测最高温: {max_so_far}{temp_symbol} (WU结算={round(max_so_far)}{temp_symbol})。")
|
||||||
|
|
||||||
|
# 传递城市的 METAR 取整特性给 AI
|
||||||
|
from src.data_collection.city_risk_profiles import get_city_risk_profile
|
||||||
|
if city_name:
|
||||||
|
_profile = get_city_risk_profile(city_name)
|
||||||
|
if _profile and _profile.get("metar_rounding"):
|
||||||
|
ai_features.append(f"⚠️ METAR特性: {_profile['metar_rounding']}")
|
||||||
if wind_speed:
|
if wind_speed:
|
||||||
wind_dir = metar.get("current", {}).get("wind_dir", "未知")
|
wind_dir = metar.get("current", {}).get("wind_dir", "未知")
|
||||||
ai_features.append(f"🌬️ 当下风况: 约 {wind_speed}kt (方向 {wind_dir}°)。")
|
ai_features.append(f"🌬️ 当下风况: 约 {wind_speed}kt (方向 {wind_dir}°)。")
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ CITY_RISK_PROFILES = {
|
|||||||
"bias_direction": "机场海拔更高",
|
"bias_direction": "机场海拔更高",
|
||||||
"warning": "内陆高原城市,昼夜温差大(可达15°C+)",
|
"warning": "内陆高原城市,昼夜温差大(可达15°C+)",
|
||||||
"season_notes": "下午最高温时偏差会放大",
|
"season_notes": "下午最高温时偏差会放大",
|
||||||
|
"metar_rounding": "激进取整:METAR 报告的温度偏高,例如实际 3.4°C 可能报告为 4°C,这意味着 METAR 显示的整数温度往往已接近下一个 WU 结算值。",
|
||||||
},
|
},
|
||||||
"london": {
|
"london": {
|
||||||
"risk_level": "low",
|
"risk_level": "low",
|
||||||
|
|||||||
Reference in New Issue
Block a user