rates/backend/jobs
jtricerolph cab1a39503 Auto-recheck parity after scrape + manual Recheck button + faster badge
Parity logic:
- Extract _fetch_latest_alerts() and _upsert_alerts() helpers so the alert
  upsert loop is no longer duplicated between the daily job and per-date runs
- Add run_parity_check_for_date(date) which runs the full comparison +
  alert upsert for a single date

Scraper integration:
- _safe_parity_recheck(date) wrapper (never raises) called after each
  successful date in both search-results and hotel-page workers; hotel-page
  mode waits until all hotels for the date are done before rechecking

API:
- POST /competitors/parity/check-date?rate_date=YYYY-MM-DD for manual recheck

Frontend:
- Recheck button on every parity alert row (all statuses); invalidates
  alerts list and badge count on success
- parity-alert-count badge polls every 15s (was 60s) so new alerts from
  the scheduled job or post-scrape rechecks appear quickly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-15 09:33:33 +00:00
..
__init__.py
check_rate_parity.py Auto-recheck parity after scrape + manual Recheck button + faster badge 2026-07-15 09:33:33 +00:00
fetch_current_rates.py Fix bookability column timestamps showing stale 'last changed' dates 2026-07-10 08:41:58 +00:00
scrape_booking_rates.py Fix SQL syntax error in generate_series date cast (SQLAlchemy text() parsing) 2026-07-15 08:42:15 +00:00
scrape_direct_rates.py
sync_occupancy.py Add occupancy pick-up history + bookability history popup 2026-07-12 12:38:02 +00:00