feat(scraper-kit): copy core layer (base/save_listings/transport) with protocol injection, strangler (#2132) #2153
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2153
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/scraper-kit-core-copy"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает #2132 (Epic #2126, шаг C). Strangler-copy — новый код в пакете, старые
app/services/scrapers/*НЕ тронуты, боевые скрапперы остаются на них. Деплой инертен (новый код не в рантайм-графе). Переключение боевых скрапперов + удаление дублей = отдельный поздний rewire-шаг.Что скопировано в
scraper_kit/base.py—ScrapedLot,BaseScraper,save_listings,_link_listing_to_house, snapshot-hook. Развязка отapp.*:save_listings(db, lots, *, matcher: HouseMatcher, region_code: int, ...)— matcher-инжект вместо прямого import matching;region_codeпараметром (хардкод 66 →:region_code)browser_fetcher.py(endpoint инжектится), + механическая копияsnapshot_writer/price_brackets/repair_state_normalizer/cian_state_parser/yandex_helpers/avito_exceptions/domclick_exceptionsGolden-parity ✅ (8 тестов)
Старый
app.services.scrapers.basevs новыйscraper_kit.baseна одном входе через recording-mock — идентично:db.execute(sql, params)байт-в-байт (INSERT/prior-SELECT/FK-UPDATE/reconcile), 66,≡:region_code@66), matcher kwargs, reconcile-ветка (dedup-коллизия), (inserted,updated) counts, dedup/card/price хешиVerify
app/services/scrapers/*не тронуты (git status их не показывает)grep "from app"в scraper_kit/ пусто (тест-guard стережёт)⚠️ Порядок мержа
Ветка застекана поверх B (#2151) т.к. worktree-main был stale. B уже в main (squash) — проверяю что B-файлы не всплывут дублями.