feat(scraper-kit): copy yandex providers with protocol injection, strangler (#2133 yandex) #2158

Merged
lekss361 merged 1 commit from feat/scraper-kit-provider-yandex into main 2026-07-02 16:13:33 +00:00
Owner

Часть #2133 (Epic #2126, шаг D — yandex, последний провайдер). Strangler-copyapp/services/scrapers/yandex_* НЕ тронуты, деплой инертен.

Скопировано в scraper_kit/providers/yandex/

  • serp.py ← yandex_realty.py (YandexRealtyScraper, gate-API SERP, _entity_to_lot, price-walk)
  • detail.py, valuation.py, newbuilding.py (+ resolve_yandex_jk_slug)
  • shared.py — локальная копия normalize_house_type

Развязка

  • settings → инжект ScraperConfig (yandex_proxy_rotate_url/scraper_proxy_url); get_scraper_delaydelay_provider
  • внутр. импорты → scraper_kit.* (base/browser_fetcher/price_brackets/repair_state_normalizer/yandex_helpers)
  • grep from app пусто (+ guard-тест). contracts.py/pyproject/lock НЕ трогал (deps есть)

Golden-parity (10 тестов)

_entity_to_lot (FULL/STUDIO/RICH_OWNER/RICH_AGENCY, new_flat, ceiling out-of-range), _parse_gate_json, normalize_house_type, detail parse на реальных yandex_offer_*.html, valuation/newbuilding, strangler-guard.

Примечание для шага E

Дубль normalize_house_type: cian (#2157) положил в scraper_kit/house_type_normalizer.py, yandex — свою копию в providers/yandex/shared.py. Консолидировать в E (разные пути → не конфликт мержа).

Verify

  • боевые yandex_* не тронуты; старые yandex-тесты 222 passed
  • ruff clean
Часть #2133 (Epic #2126, шаг D — yandex, последний провайдер). **Strangler-copy** — `app/services/scrapers/yandex_*` НЕ тронуты, деплой инертен. ## Скопировано в `scraper_kit/providers/yandex/` - `serp.py` ← yandex_realty.py (`YandexRealtyScraper`, gate-API SERP, `_entity_to_lot`, price-walk) - `detail.py`, `valuation.py`, `newbuilding.py` (+ `resolve_yandex_jk_slug`) - `shared.py` — локальная копия `normalize_house_type` ## Развязка - `settings` → инжект `ScraperConfig` (yandex_proxy_rotate_url/scraper_proxy_url); `get_scraper_delay` → `delay_provider` - внутр. импорты → `scraper_kit.*` (base/browser_fetcher/price_brackets/repair_state_normalizer/yandex_helpers) - grep `from app` пусто (+ guard-тест). contracts.py/pyproject/lock НЕ трогал (deps есть) ## Golden-parity ✅ (10 тестов) `_entity_to_lot` (FULL/STUDIO/RICH_OWNER/RICH_AGENCY, new_flat, ceiling out-of-range), `_parse_gate_json`, `normalize_house_type`, detail `parse` на реальных `yandex_offer_*.html`, valuation/newbuilding, strangler-guard. ## Примечание для шага E Дубль `normalize_house_type`: cian (#2157) положил в `scraper_kit/house_type_normalizer.py`, yandex — свою копию в `providers/yandex/shared.py`. Консолидировать в E (разные пути → не конфликт мержа). ## Verify - боевые `yandex_*` не тронуты; старые yandex-тесты 222 passed - ruff clean
lekss361 added 1 commit 2026-07-02 16:13:27 +00:00
feat(scraper-kit): copy yandex providers with protocol injection, strangler (#2133 yandex)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
4d6d5dc501
lekss361 merged commit 3be8062062 into main 2026-07-02 16:13:33 +00:00
lekss361 deleted branch feat/scraper-kit-provider-yandex 2026-07-02 16:13:33 +00:00
Sign in to join this conversation.
No reviewers
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#2158
No description provided.