-- 078_scrape_schedules_seed_yandex_sweep.sql
-- Seed row для Yandex.Недвижимость периодического city-sweep (#561).
--
-- !!! DORMANT BY DESIGN !!! enabled = false.
--   Sweep будет бить Yandex с prod-IP → anti-bot риск ("осторожнее с лимитами").
--   Capability полностью wired (run_yandex_city_sweep + trigger + dispatch),
--   но schedule засеян ВЫКЛЮЧЕННЫМ. Live-поведение намеренно НЕ verified.
--   ВКЛЮЧАТЬ ВРУЧНУЮ оператором ПОСЛЕ #623 (egress-IP rotation):
--     UPDATE scrape_schedules SET enabled = true WHERE source = 'yandex_city_sweep';
--   Зеркалит existing avito_city_sweep (тоже сейчас enabled = f в prod).
--
-- ЗАВИСИМОСТИ: 052_scrape_schedules.sql (таблица + UNIQUE(source)).
-- Idempotent: ON CONFLICT (source) DO NOTHING — безопасно запускать повторно.
--
-- yandex_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 — прокидывается в fetch_around (Yandex его игнорит: path-based URL,
--                держим для совместимости сигнатуры avito-shape sweep).
--   У Yandex sweep НЕТ detail/houses-enrich шага — поэтому detail_top_n/enrich_houses
--   в params отсутствуют (в отличие от avito_city_sweep).

BEGIN;

-- next_run_at = следующее наступление night-window (tomorrow + window_start_hour).
-- При enabled=false get_due_schedules() всё равно не подхватит строку, но заполняем
-- по образцу 072: когда оператор включит 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
(
    'yandex_city_sweep',
    false,                                       -- DORMANT (#561) — enable manually after #623
    2,
    5,
    ((CURRENT_DATE + INTERVAL '1 day') + make_interval(hours => 2)) AT TIME ZONE 'UTC',
    '{"pages_per_anchor": 2, "request_delay_sec": 9, "radius_m": 1500}'::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.';

COMMIT;
