gendesign/tradein-mvp/backend
bot-backend 480ecc90e5 feat(tradein/domclick): local Layer-B runner — home-IP + new-headless chromium, paced
Self-contained script (playwright chromium, NO app imports) для сбора DomClick EKB
detail с домашнего residential IP (обходит QRATOR — verified live: 2 карточки ok,
repair/areas/priceHistory/egrn/owners собраны). Enumerate via bff (Layer A) + card
__SSR_STATE__ parse (Layer B) → JSONL (resume/idempotent).

KEY: дифференциатор — РЕЖИМ HEADLESS, не только IP. С того же IP старый headless=True
→ 403, new-headless → 200 + SSR. Раннер дефолтит на new-headless.

Пейсинг: рандом 12-30с между карточками, render-jitter 6-10с, human-break каждые
25-40 (60-180с), 1 retry на 403. ~100-150 карточек/час, full ~6400 ≈ 45-65ч.
JSONL ингестится в tradein DB отдельным шагом. НЕ deploy — локальный ops-инструмент.
2026-06-27 18:24:08 +03:00
..
app feat(tradein/domclick): Layer B detail-backfill (SSR parse + AVM) — DORMANT/parked 2026-06-27 16:39:16 +03:00
data/sql feat(tradein/domclick): Layer B detail-backfill (SSR parse + AVM) — DORMANT/parked 2026-06-27 16:39:16 +03:00
scripts feat(tradein/domclick): local Layer-B runner — home-IP + new-headless chromium, paced 2026-06-27 18:24:08 +03:00
tests feat(tradein/domclick): Layer B detail-backfill (SSR parse + AVM) — DORMANT/parked 2026-06-27 16:39:16 +03:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile feat(browser): split camoufox into tradein-browser container, connect-mode (#905) 2026-05-31 17:24:35 +03:00
pyproject.toml fix(scrapers/backend): socks5 health-probe (httpx[socks]) + status Literal whitelist + #1820 ext_id=0 dedup-гард 2026-06-20 10:17:37 +03:00