[tradein] scraper_kit Group E1: avito_imv → kit (estimator.py dependency, часть #2308) #2334

Closed
opened 2026-07-03 22:34:03 +00:00 by lekss361 · 0 comments
Owner

Родительский: #2308 (Group E, core valuation). Разбит на под-issues по итогам разведки — сам
#2308 слишком крупный для одного захода (3 провайдера + финальный switch, каждый со своим
config-footgun риском).

Контекст

app/services/scrapers/avito_imv.pyscraper_kit.providers.avito.imv. Вызывается из
estimator.py:456,488 (_get_or_fetch_imv_cached, async, request-scoped) —
evaluate_via_imv(address=..., rooms=..., area_m2=..., floor=..., ...). Единственный caller
эстиматора — POST /trade-in/estimate (квота 15/мес/аккаунт).

⚠️ Подтверждённый config-footgun (4-й случай подряд в эпике)

Kit evaluate_via_imv добавляет config: ScraperConfig | None = None, proxy_provider: ... = None.
Тело: _env = config.scraper_proxy_url if config is not None else None
curl_proxy_url(config, proxy_provider, "avito", env_fallback_url=_env). Legacy читал
settings.scraper_proxy_url (прод env SCRAPER_PROXY_URL/AVITO_PROXY_URL) БЕЗУСЛОВНО. Без
config=settings на call site — прокси молча отключается, direct connection.
Settings уже структурно satisfies ScraperConfig — просто передать settings.

⚠️ Отсутствует golden-parity тест

В отличие от cian/yandex valuation, для avito_imv вообще нет golden-parity теста в репо
(avito's golden-parity файл покрывает только serp/detail). Придётся строить с нуля.

DoD

  • Kit-эквивалент используется на call site с явным config=settings
  • Golden-parity/harness-тест (tests/support/parity.assert_parity) на реальных листингах —
    с нуля, doc'ing что раньше не существовало
  • Regression-тест на сам config-footgun: убрать config= → тест должен упасть именно на
    proxy-related assert (не просто "функция не падает")
  • Полный suite зелёный, ruff чисто
  • estimator.py НЕ переключать здесь — это #2308's финальный шаг (Group E4), отдельный PR
    после E1-E3 стабильны
Родительский: #2308 (Group E, core valuation). Разбит на под-issues по итогам разведки — сам #2308 слишком крупный для одного захода (3 провайдера + финальный switch, каждый со своим config-footgun риском). ## Контекст `app/services/scrapers/avito_imv.py` → `scraper_kit.providers.avito.imv`. Вызывается из `estimator.py:456,488` (`_get_or_fetch_imv_cached`, async, request-scoped) — `evaluate_via_imv(address=..., rooms=..., area_m2=..., floor=..., ...)`. Единственный caller эстиматора — `POST /trade-in/estimate` (квота 15/мес/аккаунт). ## ⚠️ Подтверждённый config-footgun (4-й случай подряд в эпике) Kit `evaluate_via_imv` добавляет `config: ScraperConfig | None = None, proxy_provider: ... = None`. Тело: `_env = config.scraper_proxy_url if config is not None else None` → `curl_proxy_url(config, proxy_provider, "avito", env_fallback_url=_env)`. Legacy читал `settings.scraper_proxy_url` (прод env `SCRAPER_PROXY_URL`/`AVITO_PROXY_URL`) БЕЗУСЛОВНО. Без `config=settings` на call site — **прокси молча отключается**, direct connection. `Settings` уже структурно satisfies `ScraperConfig` — просто передать `settings`. ## ⚠️ Отсутствует golden-parity тест В отличие от cian/yandex valuation, для `avito_imv` **вообще нет** golden-parity теста в репо (avito's golden-parity файл покрывает только serp/detail). Придётся строить с нуля. ## DoD - [ ] Kit-эквивалент используется на call site с явным `config=settings` - [ ] Golden-parity/harness-тест (`tests/support/parity.assert_parity`) на реальных листингах — с нуля, doc'ing что раньше не существовало - [ ] Regression-тест на сам config-footgun: убрать `config=` → тест должен упасть именно на proxy-related assert (не просто "функция не падает") - [ ] Полный suite зелёный, ruff чисто - [ ] `estimator.py` НЕ переключать здесь — это #2308's финальный шаг (Group E4), отдельный PR после E1-E3 стабильны
lekss361 added the
scope/backend
scrapers
tech-debt
tradein
labels 2026-07-03 22:34:38 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2334
No description provided.