降低市场监控Telegram推送频率,减少重复通知
收紧推送周期、冷却时间和触发门槛的默认值,避免52城 同时监控导致的通知轰炸。删除不再使用的doc_refresher技能。 Constraint: 用户反馈电报群通知太频繁且同城市重复推送 Rejected: 在.env中配置 | 用户要求写死在代码默认值中 Confidence: high Scope-risk: narrow Directive: 如需临时放宽,仍可通过同名环境变量覆盖 Tested: Not-tested: 需实际运行bot验证推送频率
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
---
|
||||
name: doc_refresher
|
||||
description: 自动同步和刷新项目文档,确保 Markdown 文件与当前代码功能状态完全一致。
|
||||
---
|
||||
|
||||
# Documentation Refresher Skill
|
||||
|
||||
此技能用于在项目架构发生重大调整(如功能下线、重心转移)后,自动重写和更新项目的所有 Markdown 文档。
|
||||
|
||||
## 核心任务
|
||||
|
||||
1. **代码扫描**:分析 `run.py` 和核心逻辑,识别哪些功能是“活跃的”,哪些功能是“暂停/移除的”。
|
||||
2. **术语统一**:确保所有文档使用一致的语气(例如从“监控机器人”转向“天气查询机器人”)。
|
||||
3. **多语言同步**:确保 `_ZH.md` 与英文版文档内容同步。
|
||||
|
||||
## 更新准则
|
||||
|
||||
- **状态准确性**:如果功能已在代码中被注释(如监控引擎、模拟交易),文档必须明确标注为“已暂停”或直接移除。
|
||||
- **示例更新**:更新文档中的 Telegram 指令示例,移除已下线的指令(如 `/signal`, `/portfolio`)。
|
||||
- **流程简化**:针对当前“天气查询模式”,简化安装和运行流程说明。
|
||||
|
||||
## 使用流程
|
||||
|
||||
1. 查看 `run.py` 确认当前运行模式。
|
||||
2. 遍历项目根目录下所有的 `.md` 文件。
|
||||
3. 对每个文件内容进行重构,保持格式美观。
|
||||
4. 校验多语言版本的一致性。
|
||||
@@ -154,7 +154,7 @@ class StartupCoordinator:
|
||||
def _start_trade_alert_loop(self) -> LoopStatus:
|
||||
enabled = _env_bool("TELEGRAM_ALERT_PUSH_ENABLED", True)
|
||||
chat_ids = get_telegram_chat_ids_from_env()
|
||||
interval = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 300))
|
||||
interval = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 1800))
|
||||
cities_count = _parse_csv_count(os.getenv("TELEGRAM_ALERT_CITIES"))
|
||||
details = {
|
||||
"mode": "critical-alerts-and-focus-digest",
|
||||
@@ -163,19 +163,19 @@ class StartupCoordinator:
|
||||
"chat_targets": len(chat_ids),
|
||||
"alert_cooldown_sec": max(
|
||||
60,
|
||||
_env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800),
|
||||
_env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600),
|
||||
),
|
||||
"mispricing_interval_sec": max(
|
||||
max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800)),
|
||||
_env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 7200),
|
||||
max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600)),
|
||||
_env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 43200),
|
||||
),
|
||||
"min_trigger_count": max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 2)),
|
||||
"min_severity": str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "medium").strip().lower(),
|
||||
"min_trigger_count": max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 3)),
|
||||
"min_severity": str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "high").strip().lower(),
|
||||
"mispricing_only": _env_bool("TELEGRAM_ALERT_MISPRICING_ONLY", True),
|
||||
"focus_digest_enabled": _env_bool("TELEGRAM_MARKET_FOCUS_DIGEST_ENABLED", True),
|
||||
"focus_digest_interval_sec": max(
|
||||
300,
|
||||
_env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 1800),
|
||||
_env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 21600),
|
||||
),
|
||||
"focus_push_start_local_hour": min(
|
||||
23,
|
||||
|
||||
@@ -1228,24 +1228,24 @@ def start_trade_alert_push_loop(bot: Any, config: Dict[str, Any]) -> Optional[th
|
||||
logger.warning("telegram market monitor loop skipped: TELEGRAM_CHAT_IDS is not set")
|
||||
return None
|
||||
|
||||
interval_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 300))
|
||||
interval_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 1800))
|
||||
cities = _parse_city_list(os.getenv("TELEGRAM_ALERT_CITIES"))
|
||||
state_path = _state_file()
|
||||
alert_cooldown_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800))
|
||||
alert_cooldown_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600))
|
||||
mispricing_interval_sec = max(
|
||||
alert_cooldown_sec,
|
||||
_env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 7200),
|
||||
_env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 43200),
|
||||
)
|
||||
min_trigger_count = max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 2))
|
||||
min_severity = str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "medium").strip().lower()
|
||||
min_trigger_count = max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 3))
|
||||
min_severity = str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "high").strip().lower()
|
||||
if min_severity not in SEVERITY_RANK:
|
||||
min_severity = "medium"
|
||||
min_severity = "high"
|
||||
mispricing_only = _env_bool("TELEGRAM_ALERT_MISPRICING_ONLY", True)
|
||||
focus_digest_enabled = _env_bool("TELEGRAM_MARKET_FOCUS_DIGEST_ENABLED", True)
|
||||
focus_digest_top_n = max(3, min(8, _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_TOP_N", 5)))
|
||||
focus_digest_interval_sec = max(
|
||||
300,
|
||||
_env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 1800),
|
||||
_env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 21600),
|
||||
)
|
||||
def _runner() -> None:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user