fix(tradein/cian): вернуть сбор вторички — sweep выбрасывал всё найденное (#2880)
All checks were successful
Deploy Trade-In / changes (push) Successful in 13s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 3m43s
Deploy Trade-In / build-backend (push) Successful in 39s
Deploy Trade-In / deploy (push) Successful in 1m57s

This commit is contained in:
lekss361 2026-08-15 13:44:22 +00:00
parent 0f0a3bbd79
commit f3205d3ba1
2 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,52 @@
-- 263_scrape_schedules_wave2_cian_newbuilding_only_false.sql
-- Дописывает "newbuilding_only": false в default_params 40 cian-строк wave 2 (262_).
--
-- ПОЧЕМУ. Прогон первого включённого города области показал, что sweep отрабатывает
-- «успешно», но не сохраняет НИЧЕГО:
--
-- cian-sweep run_id=3884 anchor Новоуральск центр:
-- SERP fetched=84 nb_kept=0 dropped_secondary=84 ins=0 upd=0
-- cian-sweep run_id=3884 done: anchors=1/1 lots=84 (ins=0/upd=0) ... errors=0
--
-- 84 лота найдено и все 84 отброшено как вторичка, статус прогона при этом done.
--
-- Причина: scraper_kit.orchestration.scheduler (_job_cian_city_sweep) читает
-- newbuilding_only=bool(params.get("newbuilding_only", True))
-- то есть дефолт — True. Сид 179_ (wave 1) ключ проставляет явно (false), а 262_
-- (wave 2) его потерял. Мера оценивает ВТОРИЧКУ — estimator отбирает аналоги с
-- (listing_segment IS NULL OR listing_segment = 'vtorichka'), — поэтому режим
-- «только новостройки» для этих строк бессмыслен: сбор идёт, данные выбрасываются.
--
-- ЗАТРАГИВАЕТ ТОЛЬКО cian. У avito/yandex такого параметра нет ни в 179_, ни в 262_
-- (проверено сравнением default_params wave-1 и wave-2 на проде) — их не трогаем.
--
-- ПОБОЧНАЯ НАХОДКА: под гейт попадает 41 строка, а не 40. Лишняя —
-- `cian_city_sweep_verkhnyaya_pyshma` из wave 1, ВКЛЮЧЁННАЯ и работающая в проде:
-- 179_ проставил newbuilding_only не всем своим городам. Последствия на живых данных:
--
-- Верхняя Пышма (ключа нет): cian 184 активных → вторички 3, новостроек 181
-- Первоуральск (ключ есть): cian 336 активных → вторички 308
--
-- То есть по Верхней Пышме Циан давал оценщику 3 пригодных объявления вместо ~300 —
-- сбор шёл, статус зелёный, данные молча выбрасывались. Эта миграция чинит и её.
--
-- Идемпотентность: WHERE-гейт `NOT (default_params ? 'newbuilding_only')` — миграция
-- дописывает ключ только там, где его нет. Повторный прогон — no-op, и она никогда
-- не перезатрёт значение, выставленное позже вручную оператором.
--
-- ЗАВИСИМОСТИ: 262_ (сами строки), 052_scrape_schedules.sql (таблица).
BEGIN;
SET LOCAL lock_timeout = '5s';
UPDATE scrape_schedules
SET default_params = default_params || '{"newbuilding_only": false}'::jsonb,
updated_at = NOW()
WHERE source LIKE 'cian\_city\_sweep\_%'
AND default_params ? 'city'
AND NOT (default_params ? 'newbuilding_only');
COMMIT;

View file

@ -251,3 +251,4 @@
260_houses_drop_has_panorama.sql
261_listings_search_mv_drop_placeholder_columns.sql
262_scrape_schedules_seed_oblast_city_sweeps_wave2.sql
263_scrape_schedules_wave2_cian_newbuilding_only_false.sql