refactor: BSP推送提取公共函数 + 清理
- _push_bsp() 提取重复的key构造+推送逻辑 - bsp.klc None防护 - getattr替代hasattr+属性访问 - 修正首轮日志(不再写"不推送") Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
a84a80cb62
commit
42296ef971
+16
-11
@@ -48,6 +48,19 @@ def _bi_id(bi) -> Optional[tuple]:
|
||||
return (bi.start_klc.start_time,)
|
||||
|
||||
|
||||
def _push_bsp(engine: ChanEngine, bsp, symbol: str, name: str) -> bool:
|
||||
"""推送 BSP 到 Telegram(带去重)。"""
|
||||
if bsp.klc is None:
|
||||
return False
|
||||
key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}"
|
||||
msg = engine.format_bsp_detail(bsp, symbol)
|
||||
msg = _escape_html(msg)
|
||||
if send_bsp_alert(msg, bsp_key=key):
|
||||
logger.info(f"[{name}] ✅ BSP: {key}")
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@dataclass
|
||||
class SymbolState:
|
||||
symbol: str
|
||||
@@ -120,11 +133,7 @@ class BSPMonitor:
|
||||
|
||||
bsp = engine.get_bsp_for_bi(last_confirmed)
|
||||
if bsp:
|
||||
key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}"
|
||||
msg = engine.format_bsp_detail(bsp, symbol)
|
||||
msg = _escape_html(msg)
|
||||
if send_bsp_alert(msg, bsp_key=key):
|
||||
logger.info(f"[{name}] ✅ BSP: {key}")
|
||||
_push_bsp(engine, bsp, symbol, name)
|
||||
|
||||
logger.info(
|
||||
f"[{name}] 首次完成 — {len(confirmed)} 笔, "
|
||||
@@ -145,11 +154,7 @@ class BSPMonitor:
|
||||
# 7. 检查刚被分型确认这笔的终点是否为 BSP
|
||||
bsp = engine.get_bsp_for_bi(last_confirmed)
|
||||
if bsp:
|
||||
key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}"
|
||||
msg = engine.format_bsp_detail(bsp, symbol)
|
||||
msg = _escape_html(msg)
|
||||
if send_bsp_alert(msg, bsp_key=key):
|
||||
logger.info(f"[{name}] ✅ BSP: {key}")
|
||||
_push_bsp(engine, bsp, symbol, name)
|
||||
|
||||
# 8. 中枢特征更新
|
||||
pivot_state = st.pivot_monitor.update(engine.bi_zs_list)
|
||||
@@ -207,7 +212,7 @@ class BSPMonitor:
|
||||
logger.info(f"Telegram: {'已配置' if BOT_TOKEN and CHAT_ID else '⚠️ 未配置'}")
|
||||
logger.info("=" * 50)
|
||||
|
||||
logger.info("首次运行(初始化,不推送)...")
|
||||
logger.info("首次运行(初始化)...")
|
||||
await self.tick()
|
||||
|
||||
while True:
|
||||
|
||||
Reference in New Issue
Block a user