feat(tradein/scrapers): domclick вторичка через bff-search-web JSON API (Layer A) #1982

Closed
lekss361 wants to merge 3 commits from fix/tradein-domclick-bff-api into main

3 commits

Author SHA1 Message Date
ab4bc229b2 fix(tradein/domclick): open-band recursion guard, count schema-guard, 5+ rooms, geo canary + tests
All checks were successful
CI / changes (pull_request) Successful in 9s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
- _walk_price_range open band: depth guard + progressing anchor (lo+_HIGH_ANCHOR)
  → forward progress, no infinite recursion / tail-loss on >cap open tail
- COUNT: raise DomClickBlockedError on missing snippetsCount (schema regression)
- _offer_to_lot: "5+" bucket fallback → rooms=5 (was None)
- _parse_page: canary when raw>0 and all geo-dropped (ekb=0)
- tests: closed-band bisect + real offset-cap (max offset 1980); studio force
  rooms=0 over present value; real save_listings-error sweep test
- 138 migration header filename 132→138
2026-06-27 14:13:46 +03:00
f3e622acec chore(tradein): renumber domclick schedule migration 132 -> 138 (collision with 132_scrape_schedules_seed_house_imv on main) 2026-06-27 13:52:43 +03:00
dbef242716 feat(tradein/scrapers): domclick вторичка через bff-search-web JSON API (Layer A)
- DomClickScraper переписан на GET bff-search-web.domclick.ru/api/offers/v1
  с рекурсивным бинарным price-band bucketing (OFFSET_CAP=2000, open-band split
  через _HIGH_ANCHOR=30M); geo-guard по offerRegionName==ЕКБ / bbox
- scrape_pipeline.py: rooms=[0..5] (добавлен 5+), pages default=100,
  _DOMCLICK_PER_FETCH_S=4.0, честный статус mark_failed при 0 лотов + errors
- config.py: bff-search-web.domclick.ru добавлен в scrape_allowed_hosts
- data/sql/132_update_domclick_sweep_params.sql: UPDATE default_params (DORMANT)
2026-06-27 13:51:33 +03:00