fix(tradein/cian): вернуть сбор вторички — sweep выбрасывал всё найденное
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m17s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m17s
Первый включённый город области отработал «успешно», не сохранив ничего:
cian-sweep run_id=3884 anchor Новоуральск центр:
SERP fetched=84 nb_kept=0 dropped_secondary=84 ins=0 upd=0
done: anchors=1/1 lots=84 (ins=0/upd=0) errors=0
84 лота найдено, все 84 отброшены как вторичка, статус зелёный.
Причина: scheduler читает newbuilding_only с дефолтом True. Сид 179_ ставит
false явно, 262_ этот ключ потерял. Мера оценивает вторичку — estimator
отбирает аналоги с listing_segment IS NULL OR = 'vtorichka', — поэтому
режим «только новостройки» тут означает сбор в никуда.
Побочно нашлась та же дыра в ПРОДЕ: 179_ проставил ключ не всем своим
городам, и cian_city_sweep_verkhnyaya_pyshma всё это время работала в
режиме новостроек. На живых данных:
Верхняя Пышма (ключа нет): cian 184 активных → вторички 3, новостроек 181
Первоуральск (ключ есть): cian 336 активных → вторички 308
То есть оценщик по Верхней Пышме получал с Циана 3 объявления вместо ~300.
Правит 41 строку: 40 из wave 2 + Верхнюю Пышму. avito/yandex не трогаем —
у них этого параметра нет ни в одной волне.
Идемпотентность: гейт NOT (default_params ? 'newbuilding_only') — ключ
дописывается только там, где его нет, значение оператора не перетрётся.
Проверено сухим прогоном на боевой схеме: UPDATE 41, ROLLBACK.
This commit is contained in:
parent
01b5e73ea4
commit
96879f8fb4
2 changed files with 53 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue