[tradein] scraper_kit Group E3: yandex_valuation → kit (estimator.py dependency, часть #2308) #2336

Closed
opened 2026-07-03 22:34:22 +00:00 by lekss361 · 1 comment
Owner

Родительский: #2308 (Group E). См. #2311 (E1) для контекста дробления.

Контекст

app/services/scrapers/yandex_valuation.pyscraper_kit.providers.yandex.valuation.
estimator.py:598 инстанцирует YandexValuationScraper() без аргументов (async context
manager).

⚠️ Два footguns

  1. config: ScraperConfig обязателен (как и cian, см. #2312/E2) — тот же риск
    "TypeError проглочен blanket except", а не тихая деградация поведения.
  2. Новый, ранее не флагованный: YandexValuationScraper.__init__ также берёт опциональный
    delay_provider: Callable | None = None. Legacy ВСЕГДА звал get_scraper_delay(name)
    (DB-backed, admin-настраиваемый троттлинг, кэш 60s, max(per_source, global)). Kit без
    delay_provider тихо падает на хардкод 5.0s из class default — игнорирует любую
    admin-настройку anti-ban throttle. Это НЕ крашит, просто тихо возвращает троттлинг к дефолту
    — если admin поднял задержку из-за банов, миграция это молча отменит.

DoD

  • YandexValuationScraper(config=settings, delay_provider=get_scraper_delay) (или
    эквивалент) на call site — оба параметра явно
  • Существующий golden-parity тест (.parse()) — актуализировать/расширить
  • Regression-тест на delay_provider footgun: без явного delay_provider — должно
    использоваться 5.0s дефолт (докажи assert'ом), С delay_provider=get_scraper_delay
    должно использоваться DB-значение
  • Same TypeError-проглатывание проверка что и в E2 (#2312) — логируется ли ошибка при
    отсутствии config
  • Полный suite зелёный, ruff чисто
  • estimator.py НЕ переключать здесь — Group E4, отдельный PR после E1-E3
Родительский: #2308 (Group E). См. #2311 (E1) для контекста дробления. ## Контекст `app/services/scrapers/yandex_valuation.py` → `scraper_kit.providers.yandex.valuation`. `estimator.py:598` инстанцирует `YandexValuationScraper()` без аргументов (async context manager). ## ⚠️ Два footguns 1. `config: ScraperConfig` обязателен (как и cian, см. #2312/E2) — тот же риск "TypeError проглочен blanket except", а не тихая деградация поведения. 2. **Новый, ранее не флагованный:** `YandexValuationScraper.__init__` также берёт опциональный `delay_provider: Callable | None = None`. Legacy ВСЕГДА звал `get_scraper_delay(name)` (DB-backed, admin-настраиваемый троттлинг, кэш 60s, `max(per_source, global)`). Kit без `delay_provider` тихо падает на хардкод `5.0s` из class default — игнорирует любую admin-настройку anti-ban throttle. Это НЕ крашит, просто тихо возвращает троттлинг к дефолту — если admin поднял задержку из-за банов, миграция это молча отменит. ## DoD - [ ] `YandexValuationScraper(config=settings, delay_provider=get_scraper_delay)` (или эквивалент) на call site — оба параметра явно - [ ] Существующий golden-parity тест (`.parse()`) — актуализировать/расширить - [ ] Regression-тест на delay_provider footgun: без явного `delay_provider` — должно использоваться `5.0s` дефолт (докажи assert'ом), С `delay_provider=get_scraper_delay` — должно использоваться DB-значение - [ ] Same TypeError-проглатывание проверка что и в E2 (#2312) — логируется ли ошибка при отсутствии config - [ ] Полный suite зелёный, ruff чисто - [ ] `estimator.py` НЕ переключать здесь — Group E4, отдельный PR после E1-E3
lekss361 added the
scope/backend
scrapers
tech-debt
tradein
labels 2026-07-03 22:34:40 +00:00
Author
Owner

Коррекция: E1 — это #2334, E2 — #2335 (номера в теле issue указаны неверно, писал до создания).

Коррекция: E1 — это #2334, E2 — #2335 (номера в теле issue указаны неверно, писал до создания).
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#2336
No description provided.