run_incremental_sync.py:
- Replace ntfy-pushing log_start/log_success with log_info. Liveness is
owned by Uptime Kuma's heartbeat, so the startup and per-table success
messages no longer duplicate Uptime's notifications.
uptime_kuma_utils.py (shared util, backward compatible):
- Run the heartbeat in a background daemon thread (new start()/stop()),
decoupled from the sync loop so heartbeat network time/retries never
delay syncing.
- Add retry (up to 3 attempts) and raise request timeout 5s -> 10s to
tolerate Uptime Kuma's intermittent slow responses / transient 4xx.
- Keep send_heartbeat/check_and_send_heartbeat/send_stop_signal as
backward-compatible wrappers; excel_sync_to_sql.py still uses them and
now benefits from the longer timeout + retry.
Co-Authored-By: Claude <noreply@anthropic.com>