fix(tradein/yandex): в очередь обогащения не берём то, что парсер отвергает до сети (#2674) #2738

Merged
bot-backend merged 1 commit from fix/detail-backfill-zero into main 2026-08-06 15:22:22 +00:00

1 commit

Author SHA1 Message Date
fe9abff529 fix(tradein/yandex): в очередь обогащения не берём то, что парсер отвергает до сети (#2674)
All checks were successful
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (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 3m9s
Прогон yandex_detail_backfill 3300 (11:05 UTC): 5 попыток, 5 отказов, ноль
обогащений, 23 секунды. Так закончились 32 прогона из 53 — и сообщение о них
винило капчу («5 consecutive parse-None results (captcha wall?)»).

Капчи там нет. `YandexDetailScraper.parse` первым делом ищет в URL
`/offer/<цифры>/` и без него возвращает None, ещё не заглянув в HTML. В очереди
3535 объявлений из 15511 — карточки новостроек, у которых source_url ведёт на
сайт застройщика (macroserver.ru, prospect-federation.ru, strana.com). Обогащено
из них за всю историю ноль; все 1210 обогащённых — вида realty.yandex.ru/offer/.

Вред не в бесполезности: такие строки идут пачками (один свип — один
застройщик), поэтому «5 parse-None подряд» набиралось на первых же позициях и
обрывало ВЕСЬ прогон вместе с 12 тысячами разбираемых объявлений за ними. Верх
очереди на момент прогона 3300 — ровно пять таких строк подряд.

Снапшот-SELECT теперь гейтит по тому же признаку, по которому судит парсер, а
размер отброшенного едет в counters.unenrichable_pending — чтобы «обогащено 12k
из 15.5k» не стало следующим немым нулём.

Тест сверяет оба гейта на реальных прод-URL: расхождение = регрессия.
2026-08-06 20:16:09 +05:00