scraper-kit D: перенос провайдеров (avito/cian/yandex/domclick) #2133

Closed
opened 2026-07-02 13:40:29 +00:00 by lekss361 · 1 comment
Owner

Часть Epic #2126, шаг D. Depends: шаг C (core-move). Активировать после merge C.

Goal

Переместить provider-модули в scraper_kit.providers.*: avito*.py, cian*.py, yandex_*.py, domclick.py (SERP + *_detail/*_newbuilding/*_valuation/*_houses/avito_imv), ekb_geoportal_client. Механический перенос — консолидация бисекции идёт отдельным шагом E (чтобы move был верифицируем golden-тестами, а dedup не прятал регресс).

Files

  • packages/scraper-kit/src/scraper_kit/providers/**
  • удаление старых из app/services/scrapers/

Acceptance

  • пакет импортируется без app.*
  • все provider-тесты зелёные (golden-fixtures — поведение идентично)

Risk

Хрупкий парсинг — golden-тесты на сохранённых HTML/JSON fixtures обязательны, чтобы move не изменил извлечение.

Agent: backend-engineer

Часть Epic #2126, шаг D. ⛔ Depends: шаг C (core-move). Активировать после merge C. ## Goal Переместить provider-модули в `scraper_kit.providers.*`: `avito*.py`, `cian*.py`, `yandex_*.py`, `domclick.py` (SERP + `*_detail`/`*_newbuilding`/`*_valuation`/`*_houses`/`avito_imv`), `ekb_geoportal_client`. **Механический перенос** — консолидация бисекции идёт отдельным шагом E (чтобы move был верифицируем golden-тестами, а dedup не прятал регресс). ## Files - `packages/scraper-kit/src/scraper_kit/providers/**` - удаление старых из `app/services/scrapers/` ## Acceptance - пакет импортируется без `app.*` - все provider-тесты зелёные (golden-fixtures — поведение идентично) ## Risk Хрупкий парсинг — golden-тесты на сохранённых HTML/JSON fixtures обязательны, чтобы move не изменил извлечение. **Agent:** backend-engineer
lekss361 added the
priority/p2
scope/backend
scrapers
tech-debt
tradein
labels 2026-07-02 13:41:54 +00:00
lekss361 added the
status/ready
status/wip
labels 2026-07-02 15:44:22 +00:00
Author
Owner

D завершён — 4 провайдера в scraper_kit.providers.*, все strangler-copy + golden-parity:

  • avito (PR #2155) — serp/detail/houses/imv, 9 parity
  • domclick (PR #2156) — BFF JSON, 9 parity
  • cian (PR #2157) — serp/detail/nb/valuation/session, 9 parity; +house_type_normalizer в core, +cookie_encryption_key в ScraperConfig
  • yandex (PR #2158) — serp/detail/valuation/nb, 10 parity

Боевые app/services/scrapers/* нетронуты, деплой инертен. Старые тесты целы (57+9+172+222 passed).

Follow-up для E (консолидация):

  1. Дубль normalize_house_type — cian положил в scraper_kit/house_type_normalizer.py, yandex — в providers/yandex/shared.py. Свести в один.
  2. Латентный avito BrowserFetcher(source="avito") без обязательного endpoint — пофиксить (domclick/cian уже передают endpoint из config).
  3. 4 копии бисекции цены + avito session-builder ×4 — главная цель E.
**D завершён — 4 провайдера в `scraper_kit.providers.*`, все strangler-copy + golden-parity:** - ✅ avito (PR #2155) — serp/detail/houses/imv, 9 parity - ✅ domclick (PR #2156) — BFF JSON, 9 parity - ✅ cian (PR #2157) — serp/detail/nb/valuation/session, 9 parity; +`house_type_normalizer` в core, +`cookie_encryption_key` в ScraperConfig - ✅ yandex (PR #2158) — serp/detail/valuation/nb, 10 parity Боевые `app/services/scrapers/*` нетронуты, деплой инертен. Старые тесты целы (57+9+172+222 passed). **Follow-up для E (консолидация):** 1. Дубль `normalize_house_type` — cian положил в `scraper_kit/house_type_normalizer.py`, yandex — в `providers/yandex/shared.py`. Свести в один. 2. Латентный avito `BrowserFetcher(source="avito")` без обязательного `endpoint` — пофиксить (domclick/cian уже передают endpoint из config). 3. 4 копии бисекции цены + avito session-builder ×4 — главная цель E.
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#2133
No description provided.