gendesign/tradein-mvp/backend/data/sql/165_remove_n1_source.sql

60 lines
3.9 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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