diff --git a/tradein-mvp/backend/data/sql/302_scrape_schedules_seed_rosreestr_dkp_50.sql b/tradein-mvp/backend/data/sql/302_scrape_schedules_seed_rosreestr_dkp_50.sql new file mode 100644 index 00000000..6ce6779e --- /dev/null +++ b/tradein-mvp/backend/data/sql/302_scrape_schedules_seed_rosreestr_dkp_50.sql @@ -0,0 +1,52 @@ +-- 302_scrape_schedules_seed_rosreestr_dkp_50.sql +-- Seed-строка scrape_schedules для региона 50 (Московская область) — #3051, трек МО. +-- +-- Dependencies: 289_rosreestr_fdw_msk_columns_seed77.sql (та же таблица, тот же +-- формат source/default_params). +-- Apply after: 301_web_support_message_idempotency_key.sql +-- +-- WHY: +-- Код-часть импорта уже параметризована регионом (`scheduler.py::_job_rosreestr_dkp` +-- читает `region_code` из default_params и валидирует его по `app.services.regions`), +-- а wildcard-хендлер `rosreestr_dkp_import_*` резолвит любое имя с суффиксом кода. +-- Регион 50 заведён в реестре и уже на проде, поэтому включение области стоит ровно +-- одной строки расписания — новой логики не требуется. +-- +-- У региона 50 `canonical_city IS NULL`, то есть он идёт по ветке региона 66: +-- `deals.city` берётся из источника (муниципалитет — Балашиха, Химки, Подольск), +-- `raw_payload` не заполняется, строки с пустым city отбрасываются. Для области это +-- и есть верное поведение: единого города у региона нет, подставлять нечего. +-- +-- Замер по FDW (2026-09-12, прод): под полным WHERE импорта регион 50 даёт +-- 113 351 сделку ДКП с 2024-01-01 — корпус того же порядка, что московский. +-- +-- Строка ВЫКЛЮЧЕНА (enabled=false) — ровно как seed 77 в миграции 289: миграция +-- заводит расписание, включение и первый прогон остаются отдельным решением +-- main-сессии. Окно 4-6 UTC совпадает с окнами регионов 66 и 77; прогоны +-- сериализуются планировщиком, а первая полная заливка 77 заняла 3 минуты на +-- 212 937 строк, так что третий регион в то же окно помещается с запасом. +-- +-- ИДЕМПОТЕНТНОСТЬ: ON CONFLICT (source) DO NOTHING — повторный прогон no-op и, +-- что важнее, НЕ сбрасывает enabled обратно в false после ручного включения. + +BEGIN; + +SET LOCAL lock_timeout = '5s'; + +INSERT INTO scrape_schedules ( + source, + enabled, + window_start_hour, + window_end_hour, + default_params +) +VALUES ( + 'rosreestr_dkp_import_50', + false, + 4, + 6, + '{"region_code": 50, "since": "2024-01-01", "batch_size": 2000}'::jsonb +) +ON CONFLICT (source) DO NOTHING; + +COMMIT;