feat: implement a rule-based weather/market alert engine with functions for momentum, forecast breakthrough, and kill zone alerts.
This commit is contained in:
@@ -527,6 +527,7 @@ def _build_telegram_messages(
|
|||||||
if current_temp is None:
|
if current_temp is None:
|
||||||
return {"zh": "", "en": ""}
|
return {"zh": "", "en": ""}
|
||||||
|
|
||||||
|
has_active_trigger = any(rule.get("triggered") for rule in rules.values())
|
||||||
types_cn = _join_trigger_types_cn(rules) or "盘口异动"
|
types_cn = _join_trigger_types_cn(rules) or "盘口异动"
|
||||||
delta_temp = _sf(momentum.get("delta_temp"))
|
delta_temp = _sf(momentum.get("delta_temp"))
|
||||||
delta_min = momentum.get("delta_minutes")
|
delta_min = momentum.get("delta_minutes")
|
||||||
@@ -569,9 +570,11 @@ def _build_telegram_messages(
|
|||||||
|
|
||||||
advice = _build_advice_cn(rules, temp_symbol)
|
advice = _build_advice_cn(rules, temp_symbol)
|
||||||
final_map = map_url or "https://polyweather-pro.vercel.app/"
|
final_map = map_url or "https://polyweather-pro.vercel.app/"
|
||||||
|
title_zh = "🚨 PolyWeather 异动预警" if has_active_trigger else "📍 PolyWeather 状态快照"
|
||||||
|
title_en = "🚨 PolyWeather Alert" if has_active_trigger else "📍 PolyWeather Status"
|
||||||
|
|
||||||
lines_zh = [
|
lines_zh = [
|
||||||
f"🚨 PolyWeather 异动预警 [{city_name}]",
|
f"{title_zh} [{city_name}]",
|
||||||
"",
|
"",
|
||||||
f"类型:{types_cn}",
|
f"类型:{types_cn}",
|
||||||
f"动态:{dyn}",
|
f"动态:{dyn}",
|
||||||
@@ -597,7 +600,7 @@ def _build_telegram_messages(
|
|||||||
type_en_str = " + ".join(type_en) or "Market anomaly"
|
type_en_str = " + ".join(type_en) or "Market anomaly"
|
||||||
|
|
||||||
lines_en = [
|
lines_en = [
|
||||||
f"🚨 PolyWeather Alert [{city_name}]",
|
f"{title_en} [{city_name}]",
|
||||||
"",
|
"",
|
||||||
f"Type: {type_en_str}",
|
f"Type: {type_en_str}",
|
||||||
f"Now: {current_temp:.1f}{temp_symbol}",
|
f"Now: {current_temp:.1f}{temp_symbol}",
|
||||||
|
|||||||
Reference in New Issue
Block a user