Расписание импорта сделок Росреестра по Московской области
All checks were successful
CI / changes (pull_request) Successful in 11s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m52s

Регион 50 заведён в реестре (#3501) и уже на проде, а код импорта параметризован
кодом региона с валидацией по реестру, поэтому область включается одной seed-строкой
расписания — новой логики не требуется. Имя `rosreestr_dkp_import_50` резолвится
существующим wildcard-хендлером `rosreestr_dkp_import_*`, курсор возобновления у него
свой (собственный scrape_runs.source), с регионами 66 и 77 не пересекается.

У региона 50 canonical_city IS NULL, то есть импорт идёт по ветке региона 66: city
берётся из источника (муниципалитет — Балашиха, Химки, Подольск), raw_payload не
заполняется, строки с пустым city отбрасываются. Для области это и есть верное
поведение — единого города у неё нет.

Замер по FDW на проде: под полным WHERE импорта регион 50 даёт 113 351 сделку ДКП
с 2024-01-01. Строка выключена, как и seed 77 в миграции 289: включение и первый
прогон — отдельный шаг после деплоя.
This commit is contained in:
bot-backend 2026-09-12 17:12:40 +03:00
parent 98a582e242
commit ee397b603b

View file

@ -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;