feat(tradein/scraper-kit): migrate admin debug endpoints + domclick ingest to kit (#2305) #2326

Merged
lekss361 merged 1 commit from feat/tradein-migrate-admin-debug-kit into main 2026-07-03 21:41:12 +00:00
Owner

Closes #2305 (Group A эпика #2277 — scraper_kit migration).

Что сделано

8 debug-эндпоинтов в app/api/v1/admin.py + scripts/ingest_domclick_jsonl.py переведены с
legacy app.services.scrapers.* на scraper_kit.providers.*: /scrape
(Avito/Cian/YandexRealty + save_listings), scrape_avito_house, scrape_avito_detail,
scrape_avito_imv, scrape_yandex_detail, scrape_yandex_valuation, scrape_cian_detail,
cian_auto_login. DI (RealScraperConfig/RealMatcherAdapter/RealProxyProvider/
get_scraper_delay) зеркалит паттерн уже используемый в scheduler_main._run_kit_scheduler.

ingest_domclick_jsonl.pyScrapedLot/save_listings + DomClickDetailEnrichment/
save_detail_enrichment на kit (последнее стало возможным после Group D/#2307).

Намеренно НЕ мигрировано — найден реальный баг в scraper_kit

scrape_yandex_newbuilding/scrape_cian_newbuilding оставлены на legacy: kit-провайдеры
providers.{yandex,cian}.newbuilding конструируют BrowserFetcher(source=...) без
обязательного keyword-only endpoint= — упадёт TypeError при любом вызове, caller-side DI
это не чинит (сигнатуры не выставляют config вообще). Заведено issue #2322 (блокирует чистую
миграцию Group C/#2310 — та тоже трогает newbuilding-пути, проверить/пофиксить #2322 первым).
Попутно найден несвязанный pre-existing баг — issue #2323 (await на sync-функции).

Проверено

  • Новые parity-тесты (4 файла, 14 тестов) — на реальных функциях парсинга каждого эндпоинта
    (_parse_house_page, _extract_price_changes, _parse_card_fields и т.д.), не на network-путях
  • Полный backend suite: 3184 passed / 6 skipped / 1 pre-existing unrelated failure
  • ruff check + format — чисто
  • Code-review: APPROVE (verified surgical-diff claim, DI wiring против реальных kit-сигнатур,
    newbuilding-баг подтверждён как genuinely unfixable caller-side)

Дальше

Разблокирует финальное закрытие #2277 (после Groups C/E/F).

Closes #2305 (Group A эпика #2277 — scraper_kit migration). ## Что сделано 8 debug-эндпоинтов в `app/api/v1/admin.py` + `scripts/ingest_domclick_jsonl.py` переведены с legacy `app.services.scrapers.*` на `scraper_kit.providers.*`: `/scrape` (Avito/Cian/YandexRealty + save_listings), `scrape_avito_house`, `scrape_avito_detail`, `scrape_avito_imv`, `scrape_yandex_detail`, `scrape_yandex_valuation`, `scrape_cian_detail`, `cian_auto_login`. DI (`RealScraperConfig`/`RealMatcherAdapter`/`RealProxyProvider`/ `get_scraper_delay`) зеркалит паттерн уже используемый в `scheduler_main._run_kit_scheduler`. `ingest_domclick_jsonl.py` — `ScrapedLot`/`save_listings` + `DomClickDetailEnrichment`/ `save_detail_enrichment` на kit (последнее стало возможным после Group D/#2307). ## Намеренно НЕ мигрировано — найден реальный баг в scraper_kit `scrape_yandex_newbuilding`/`scrape_cian_newbuilding` оставлены на legacy: kit-провайдеры `providers.{yandex,cian}.newbuilding` конструируют `BrowserFetcher(source=...)` без обязательного keyword-only `endpoint=` — упадёт `TypeError` при любом вызове, caller-side DI это не чинит (сигнатуры не выставляют `config` вообще). Заведено issue #2322 (блокирует чистую миграцию Group C/#2310 — та тоже трогает newbuilding-пути, проверить/пофиксить #2322 первым). Попутно найден несвязанный pre-existing баг — issue #2323 (`await` на sync-функции). ## Проверено - Новые parity-тесты (4 файла, 14 тестов) — на реальных функциях парсинга каждого эндпоинта (`_parse_house_page`, `_extract_price_changes`, `_parse_card_fields` и т.д.), не на network-путях - Полный backend suite: 3184 passed / 6 skipped / 1 pre-existing unrelated failure - ruff check + format — чисто - Code-review: ✅ APPROVE (verified surgical-diff claim, DI wiring против реальных kit-сигнатур, newbuilding-баг подтверждён как genuinely unfixable caller-side) ## Дальше Разблокирует финальное закрытие #2277 (после Groups C/E/F).
lekss361 added 1 commit 2026-07-03 21:36:29 +00:00
feat(tradein/scraper-kit): migrate admin.py debug routes + domclick ingest to kit (#2305)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 1m36s
ea24289f47
Group A of the scraper_kit migration epic (#2277). Switches admin.py's manual
"run parser" debug endpoints and scripts/ingest_domclick_jsonl.py from direct
app.services.scrapers.* imports to their scraper_kit.providers.* equivalents,
using the DI adapters (RealScraperConfig/RealMatcherAdapter/RealProxyProvider,
app.services.scraper_settings.get_scraper_delay) already established by
app.scheduler_main._run_kit_scheduler.

Migrated: /scrape (AvitoScraper/CianScraper/YandexRealtyScraper + save_listings),
scrape_avito_house, scrape_avito_detail, scrape_avito_imv, scrape_yandex_detail,
scrape_yandex_valuation, scrape_cian_detail, cian_auto_login's BrowserFetcher.
scripts/ingest_domclick_jsonl.py: ScrapedLot/save_listings + (now that #2307/
Group D ported a kit equivalent while this was in flight) DomClickDetailEnrichment/
save_detail_enrichment.

Deliberately NOT migrated (documented in admin.py): scrape_yandex_newbuilding /
scrape_cian_newbuilding — their kit equivalents
(providers/{yandex,cian}/newbuilding.py) construct an internal BrowserFetcher(...)
without the mandatory `endpoint` kwarg, so any call crashes/silently-fails
regardless of caller-side DI. Bug lives in scraper_kit provider code, out of
scope here (only consuming, not touching provider logic) — flagged as follow-up.

Parity proven via tests/support/parity.py (assert_parity) against the exact
functions each debug route now calls, on offline fixtures — no live network/DB.

Refs #2305
lekss361 merged commit 86af5b78bf into main 2026-07-03 21:41:12 +00:00
lekss361 deleted branch feat/tradein-migrate-admin-debug-kit 2026-07-03 21:41:12 +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#2326
No description provided.