Drop the Excel (.xlsm) production-execution-card pipeline now that the
project only synchronizes Access databases to SQL Server.
- Delete excel_sync_to_sql.py, migration.py, config/field_mappings.py
- Remove Excel-only config symbols (EXCEL_CONFIGS, MIGRATION_TASKS,
EXECUTION_CARD_FIELDS, CONTRACT_DATA_*, CACHE_DIR, TEMP_DIR,
EXCEL_SYNC_* settings) from the config package
- Drop now-unused deps from requirements.txt: pandas, sqlalchemy, openpyxl
- Update .env.example, CLAUDE.md, and the uptime_kuma_utils docstring
- Fix the tube-bending workshop Access table mapping in SYNC_MAPPING
(source table renamed; old name no longer exists)
The three Excel-sourced tables in warehouseOutbound (executionCardData,
contractData, customerProductType) and their data are left untouched.
Co-Authored-By: Claude <noreply@anthropic.com>
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>