-- 107_scrape_schedules_seed_cian_city_sweep.sql
-- Seed row для Cian периодического city-sweep с newbuilding Phase 4 (#973).
--
-- !!! DORMANT BY DESIGN !!! enabled = false.
--   Sweep бьёт Cian с prod-IP через proxy — proxy сейчас мёртв → anti-bot риск.
--   Capability полностью wired (run_cian_city_sweep + trigger + dispatch),
--   но schedule засеян ВЫКЛЮЧЕННЫМ. Live-поведение намеренно НЕ verified.
--   ВКЛЮЧАТЬ ВРУЧНУЮ оператором ПОСЛЕ восстановления прокси:
--     UPDATE scrape_schedules SET enabled = true WHERE source = 'cian_city_sweep';
--   Зеркалит yandex_city_sweep (078, тоже enabled = false, dormant).
--
-- Phase 4 (newbuilding enrichment) включается через enrich_houses=true в default_params.
-- В отличие от yandex_city_sweep, cian sweep несёт detail + houses-фазы —
-- поэтому default_params включает detail_top_n и enrich_houses.
--
-- ЗАВИСИМОСТИ: 052_scrape_schedules.sql (таблица + UNIQUE(source)).
-- Idempotent: ON CONFLICT (source) DO NOTHING — безопасно запускать повторно.
--
-- cian_city_sweep — окно 02:00-05:00 UTC (05:00-08:00 МСК), как avito_city_sweep.
--   default_params (консервативно, под анти-бот):
--     pages_per_anchor   — страниц SERP на anchor.
--     request_delay_sec  — пауза между anchor'ами (поверх per-page sleep scraper'а).
--     radius_m           — радиус поиска вокруг anchor'а в метрах.
--     detail_top_n       — кол-во объявлений на detail-обогащение (Phase 3).
--     enrich_houses      — включить Phase 4 newbuilding enrichment (true).

BEGIN;

-- next_run_at = следующее наступление night-window (tomorrow + window_start_hour).
-- При enabled=false get_due_schedules() всё равно не подхватит строку, но заполняем
-- по образцу 078: когда оператор включит schedule, next_run_at уже валидный и
-- запуск не выстрелит мгновенно (вне окна). AT TIME ZONE 'UTC' фиксирует wall-clock
-- час в UTC независимо от session TimeZone GUC.
INSERT INTO scrape_schedules (
    source,
    enabled,
    window_start_hour,
    window_end_hour,
    next_run_at,
    default_params
)
VALUES
(
    'cian_city_sweep',
    false,                                       -- DORMANT (#973) — enable manually after proxy restored
    2,
    5,
    ((CURRENT_DATE + INTERVAL '1 day') + make_interval(hours => 2)) AT TIME ZONE 'UTC',
    '{"pages_per_anchor": 3, "request_delay_sec": 5, "radius_m": 1500, "detail_top_n": 10, "enrich_houses": true}'::jsonb
)
ON CONFLICT (source) DO NOTHING;

COMMENT ON TABLE scrape_schedules IS
    'In-app scheduler config (заменяет cron-script setup). '
    'Sources: avito_city_sweep, yandex_city_sweep (dormant, #561), '
    'cian_history_backfill, rosreestr_dkp_import, listing_source_snapshot (#570), '
    'asking_to_sold_ratio_refresh (#648), refresh_search_matview (#769), '
    'yandex_address_backfill (#855, EKB pilot), '
    'sber_index_pull (#887, monthly СберИндекс city-level price index), '
    'rosreestr_quarter_poll (#888, monthly Rosreestr new-quarter availability check), '
    'newbuilding_enrich (#973), yandex_newbuilding_sweep (dormant, #974), '
    'cian_city_sweep (dormant, #973).';

COMMIT;
