feat(db): backfill complexes nulls + add job_settings (migrations 80, 81)
80_complexes_backfill_nulls.sql:
- cad_quarter: +722 rows via ST_Contains spatial join on cad_quarters_geom
- developer_id: +247 rows via fuzzy name match on domrf_developers
- obj_class: +2 rows via objective_lots.class mode
- cad_building_num TEXT dropped (100% NULL; relation lives in
cad_buildings.complex_id)
- v_complex_full rebuilt: cad_building_nums TEXT[] replaces dead column
- v_complex_buildings created: complex_id → cad_building_nums[], buildings_count
81_job_settings.sql:
- New table job_settings (job_type PK, enabled, queue_name, cron_schedule,
rate_ms, max_retries, max_concurrency, extra_config JSONB)
- Seeded 4 rows: scrape_kn (queue=scrape_kn, '15 4 * * mon'), nspd_geo
(queue=geo, rate_ms=600), objective_etl, objective_sync (cron from prod
objective_sync_config)
- objective_sync_config marked DEPRECATED via COMMENT — kept for backward
compat until backend refactor
Both already applied on prod via postgres MCP.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>