|
|
43b392b809
|
feat(tradein/domclick): local-runner + ingest tooling → main (split from parked Layer-B)
CI / changes (pull_request) Successful in 7s
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
Выделяет МЕРДЖАБЕЛЬНУЮ часть DomClick-тулинга из запаркованного PR #2005
(BLOCKED #2000 — прод Layer-B скрейпер через прокси режет QRATOR-403):
- scripts/domclick_local_runner.py — ручной offline-сборщик с домашнего IP:
SERP-enumerate (фронт, BFF-JSON режет QRATOR) + card __SSR_STATE__ +
offer-card v3 (AVM price_prediction + sold_similar). --enum-cache (enumerate
1 раз → файл с sentinel → следующий запуск грузит кэш и пропускает enumerate),
wait_for_selector (SERP-карточки догидрируются), resume по id. Self-contained.
- scripts/ingest_domclick_jsonl.py — JSONL → trade-in БД (save_listings +
house-match в SAVEPOINT + save_detail_enrichment, идемпотентно, --limit/--dry-run).
- app/services/scrapers/domclick_detail.py + domclick_exceptions.py — card-SSR
parse + save_detail_enrichment (нужны ингесту). Импортятся ТОЛЬКО ингестом
(operator-run); прод-runtime их не дёргает (dormant в образе).
- tests/scrapers/test_domclick_detail.py + обновлённый scripts/README.md.
НЕ включает прод Layer-B (tasks/domclick_detail_backfill.py, scheduler-расписание,
data/sql/139_*) — остаётся запаркован на PR #2005 до чистого прокси (#2000).
БД-схема не меняется (detail-колонки уже в проде, миграции нет).
Live-validated: раннер качает ЕКБ-вторичку прямо сейчас (600+ карт, 0 блоков),
ингест залил их в прод-БД (house_matched, идемпотентно).
|
2026-06-28 10:26:52 +03:00 |
|