resos_custom_field_mapping, resos_opening_hours_mapping,
resos_manual_breakfast_periods, resos_bookings_data,
resos_bookings_stats, resos_booking_pace were never added to the
schema — they only existed in the original standalone Postgres instance.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
forecast_runs was missing, causing all manual/scheduled forecast jobs to
fail on startup. pickup_snapshots and pickup_curves are referenced by the
pickup model but were absent from schema.sql.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add booking_com_hotels and booking_com_rates (competitor rate scraper tables)
- Fix forecast_snapshots: was using old pivoted schema (snapshot_date,
prophet_value etc.); code expects normalised rows (perception_date, model,
forecast_value, actual_value). Add DO block migration to drop+recreate if
old schema is detected.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Missing from initial schema; used by competitor rates scraper and cleanup_stale_batches on startup.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Python FastAPI ML backend kept intact; auth replaced with central hnf_session cookie verification. Frontend rebuilt on React 18 + TS + Vite with stack design system, Plotly charts retained. Shared Postgres via DATABASE_URL; schema applied on startup.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>