Skip non-tradable markets in monitor digests

This commit is contained in:
2569718930@qq.com
2026-04-01 19:43:57 +08:00
parent 62cf8f2c4d
commit 9dc21a3088
2 changed files with 25 additions and 1 deletions
+3 -1
View File
@@ -461,7 +461,9 @@ def _build_focus_digest_message(
)
shortlisted = [
item for item in ranked
if _market_monitor_score(item) > 0 and bool((item.get("market_snapshot") or {}).get("available"))
if _market_monitor_score(item) > 0
and bool((item.get("market_snapshot") or {}).get("available"))
and _market_price_cap_ok(item, require_actionable_quote=True)
][:top_n]
if not shortlisted:
return ""
+22
View File
@@ -1,4 +1,5 @@
from src.analysis.market_alert_engine import build_trading_alerts
from src.utils.telegram_push import build_market_monitor_digest
def _sample_weather_payload():
@@ -173,3 +174,24 @@ def test_peak_passed_guard_suppresses_late_day_cooldown_alerts():
assert out["rules"]["forecast_breakthrough"]["raw_triggered"] is True
assert "高温已过(暂停推送)" in out["telegram"]["zh"]
assert "暂停主动推送" in out["telegram"]["zh"]
def test_market_monitor_digest_skips_non_tradable_market(monkeypatch):
payload = build_trading_alerts(
city_weather=_sample_weather_payload(),
map_url="https://example.com/map",
)
payload["market_snapshot"]["available"] = True
payload["market_snapshot"]["market_closed"] = True
payload["market_snapshot"]["market_tradable"] = False
payload["market_snapshot"]["market_accepting_orders"] = False
payload["market_snapshot"]["market_tradable_reason"] = "in_review"
monkeypatch.setattr(
"src.utils.telegram_push.build_trade_alert_for_city",
lambda city, config, force_refresh=False: payload,
)
monkeypatch.setenv("TELEGRAM_ALERT_CITIES", "ankara")
digest = build_market_monitor_digest({}, slot_label="当前市场概览")
assert digest == "️ 当前没有可用的市场监控摘要。"