rates/backend
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
..
api Auto-recheck parity after scrape + manual Recheck button + faster badge 2026-07-15 09:33:33 +00:00
jobs Auto-recheck parity after scrape + manual Recheck button + faster badge 2026-07-15 09:33:33 +00:00
services Auto-recheck parity after scrape + manual Recheck button + faster badge 2026-07-15 09:33:33 +00:00
auth.py
database.py
Dockerfile Revert Firefox: root cause was broken DataImpulse nodes not fingerprinting 2026-07-10 09:54:50 +00:00
main.py Add Power BI reporting endpoints — flat tabular data via API key auth 2026-07-14 17:27:50 +00:00
migrate_direct_data.py
requirements.txt
scheduler.py
schema.sql Use text-search approach for rate conditions (breakfast/cancel/payment) 2026-07-14 18:10:00 +00:00