scraper-kit C: перенос core-слоя в пакет #2132

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

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

Goal

Переместить в scraper_kit: base.py, browser_fetcher.py, snapshot_writer.py, scraper_settings.py, price_brackets.py, repair_state_normalizer.py, cian_state_parser.py, yandex_helpers.py, avito_exceptions.py, domclick_exceptions.py, + bbox-геохелпер (is_within_ekb_bbox_wide) и cian_session. Прямые импорты app.* → инжектируемые Protocol'ы (шаг B). save_listings принимает HouseMatcher и region_code параметром (убрать хардкод 66 на base.py:404).

Files

  • packages/scraper-kit/src/scraper_kit/{base,transport,persist,settings,...}.py
  • удаление старых из tradein-mvp/backend/app/services/scrapers/

Acceptance

  • grep -rn "from app\." packages/scraper-kit/src пуст
  • существующие юнит-тесты (tests/scrapers/test_browser_fetcher.py и др.) проходят с адаптером
  • region_code=66 — дефолт на продуктовой стороне при вызове, kit без дефолта

Risk

region_code параметризация задевает estimator/matcher join'ы если дефолт не 66.

Agent: backend-engineer

Часть Epic #2126, шаг C. ⛔ Depends: шаг B (protocols). Активировать после merge B. ## Goal Переместить в `scraper_kit`: `base.py`, `browser_fetcher.py`, `snapshot_writer.py`, `scraper_settings.py`, `price_brackets.py`, `repair_state_normalizer.py`, `cian_state_parser.py`, `yandex_helpers.py`, `avito_exceptions.py`, `domclick_exceptions.py`, + bbox-геохелпер (`is_within_ekb_bbox_wide`) и `cian_session`. Прямые импорты `app.*` → инжектируемые Protocol'ы (шаг B). `save_listings` принимает `HouseMatcher` и `region_code` параметром (убрать хардкод `66` на `base.py:404`). ## Files - `packages/scraper-kit/src/scraper_kit/{base,transport,persist,settings,...}.py` - удаление старых из `tradein-mvp/backend/app/services/scrapers/` ## Acceptance - `grep -rn "from app\." packages/scraper-kit/src` пуст - существующие юнит-тесты (`tests/scrapers/test_browser_fetcher.py` и др.) проходят с адаптером - `region_code=66` — дефолт на продуктовой стороне при вызове, kit без дефолта ## Risk `region_code` параметризация задевает estimator/matcher join'ы если дефолт не 66. **Agent:** backend-engineer
lekss361 added the
priority/p2
scope/backend
tech-debt
tradein
labels 2026-07-02 13:41:53 +00:00
lekss361 added the
status/ready
status/wip
labels 2026-07-02 15:30:19 +00:00
Author
Owner

Смержено (PR #2153). Strangler-copy, инертно — core-слой (base.py/save_listings/транспорт/утилиты) скопирован в scraper_kit, старые app/services/scrapers/* не тронуты, боевые скрапперы на них, деплой не меняет рантайм. Golden-parity 8 тестов: новый save_listings ≡ старому байт-в-байт (SQL-последовательность, region_code-инжекция, matcher-kwargs, reconcile, dedup/card/price хеши). Prod-smoke отложен до rewire-шага (когда боевые скрапперы переключатся на kit). Follow-up: scraper_settings/cian_session/bbox-хелпер в текущем дереве отсутствуют (base их не тянет) — появятся при копировании провайдеров (D).

Смержено (PR #2153). **Strangler-copy, инертно** — core-слой (`base.py`/`save_listings`/транспорт/утилиты) скопирован в `scraper_kit`, старые `app/services/scrapers/*` не тронуты, боевые скрапперы на них, деплой не меняет рантайм. Golden-parity 8 тестов: новый `save_listings` ≡ старому байт-в-байт (SQL-последовательность, region_code-инжекция, matcher-kwargs, reconcile, dedup/card/price хеши). Prod-smoke отложен до rewire-шага (когда боевые скрапперы переключатся на kit). Follow-up: `scraper_settings`/`cian_session`/bbox-хелпер в текущем дереве отсутствуют (base их не тянет) — появятся при копировании провайдеров (D).
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#2132
No description provided.