From 537bab465ca047d0fd25c3fc288f28e304b257d9 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Thu, 23 Apr 2026 20:02:23 +0000 Subject: [PATCH] refactor(main): remove unused Python heartbeat in favor of cron job Heartbeat is now handled exclusively by the Claude-based cron job (heartbeat-2h in jobs.json), which is more flexible. Co-Authored-By: Claude Sonnet 4.6 --- src/main.py | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/src/main.py b/src/main.py index 8c786f4..882a96e 100644 --- a/src/main.py +++ b/src/main.py @@ -83,37 +83,6 @@ def main(): scheduler = Scheduler(send_callback=_send_to_channel, config=config) client.scheduler = scheduler # type: ignore[attr-defined] - # Heartbeat: register as periodic job if enabled - hb_config = config.get("heartbeat", {}) - if hb_config.get("enabled"): - from src.heartbeat import run_heartbeat - - interval_min = hb_config.get("interval_minutes", 30) - hb_channel = hb_config.get("channel", "echo-core") - - async def _heartbeat_tick() -> None: - """Run heartbeat and send findings to channel.""" - try: - result = await asyncio.to_thread(run_heartbeat, config) - logger.info("Heartbeat: %s", result) - if result and "HEARTBEAT_OK" not in result: - await _send_to_channel(hb_channel, result) - except Exception as exc: - logger.error("Heartbeat failed: %s", exc) - - from apscheduler.triggers.interval import IntervalTrigger - - scheduler._scheduler.add_job( - _heartbeat_tick, - trigger=IntervalTrigger(minutes=interval_min), - id="__heartbeat__", - max_instances=1, - ) - logger.info( - "Heartbeat registered (every %d min, channel: %s)", - interval_min, hb_channel, - ) - # Newsletter Cercetași checker (optional) newsletter_config = config.get("newsletter_cercetasi", {}) if newsletter_config.get("enabled"):