-- 165_remove_n1_source.sql
--
-- ПРОДУКТОВОЕ РЕШЕНИЕ (user, 2026-07-03, #2204):
--   Источник n1 ВЫКЛЮЧАЕМ И ВЫЧИЩАЕМ из всех продуктовых поверхностей trade-in
--   («удалить отовсюду, чтобы не появлялся»). Кода скрейпера n1 давно нет
--   (см. 114 — портал переехал в cian ещё 2026-06); 381 активная строка
--   listings source='n1' деактивируется TTL-джобой deactivate_stale_n1
--   (заведена 160) сегодня в 07:00 UTC. Эта миграция закрепляет выключение
--   декларативно и убирает n1 из scheduler/settings, чтобы источник не мог
--   ожить и не считался в active-пуле.
--
-- ЧТО ДЕЛАЕТ:
--   1. UPDATE listings — страховка: если TTL-джоба ещё не отработала на момент
--      деплоя, добиваем оставшиеся is_active строки source='n1'. Строки НЕ
--      удаляем — остаются в БД с is_active=false как история (аналитика/аудит).
--   2. DELETE из scrape_schedules — убираем обе n1-строки расписаний:
--        - 'n1_city_sweep'      (сеяна 084, выключена 114) — активный свип;
--        - 'deactivate_stale_n1'(сеяна 160) — TTL-деактивация: после того как
--          инвентарь деактивирован, ежедневный прогон больше не нужен.
--      Row'ы n1 нужны только историческим run'ам scrape_runs (audit сохранён
--      там); сами scrape_schedules — конфиг, не история, чистить безопасно.
--   3. DELETE из scraper_settings — убираем per-source knob 'n1' (сеян 054):
--      anti-ban delay мёртвого источника не нужен.
--
-- ИДЕМПОТЕНТНОСТЬ:
--   - UPDATE ограничен `AND is_active` -> повторный прогон трогает 0 строк.
--   - DELETE ... WHERE source IN (...) -> повторный прогон удаляет 0 строк.
--   Безопасно применять многократно.
--
-- НЕДЕСТРУКТИВНОСТЬ К ДАННЫМ:
--   Никакого `DELETE FROM listings` — исторические объявления source='n1'
--   сохраняются (только is_active=false). Удаляются лишь конфиг-строки
--   расписаний/настроек скрейпера.
--
-- ЗАВИСИМОСТИ: 052_scrape_schedules.sql, 053/054 scraper_settings, 160 (seed).

BEGIN;

-- (1) Страховка-деактивация оставшихся активных n1-объявлений (обычно no-op:
--     TTL-джоба deactivate_stale_n1 отрабатывает раньше). Строки НЕ удаляем.
UPDATE listings
   SET is_active = false
 WHERE source = 'n1'
   AND is_active;

-- (2) Убрать n1-расписания из scheduler-конфига (свип + TTL-деактивация).
DELETE FROM scrape_schedules
 WHERE source IN ('n1_city_sweep', 'deactivate_stale_n1');

-- (3) Убрать per-source anti-ban knob мёртвого источника.
DELETE FROM scraper_settings
 WHERE source = 'n1';

-- Освежить справочный комментарий таблицы (n1 больше не источник свипа).
COMMENT ON TABLE scrape_schedules IS
    'In-app scheduler config: avito/yandex/cian city sweep, rosreestr import, '
    'listing_source_snapshot, deactivate_stale_* family. Источник n1 удалён '
    '(#2204, 2026-07-03 — портал мёртв, переехал в cian).';

COMMIT;
