60 lines
3.9 KiB
PL/PgSQL
60 lines
3.9 KiB
PL/PgSQL
-- 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;
|