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