chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) #2394

Merged
lekss361 merged 1 commit from chore/tradein-delete-orphaned-legacy-scrapers into main 2026-07-04 07:44:53 +00:00
Owner

Summary

Первый (частичный) шаг финального удаления legacy app/services/scrapers/* (эпик #2277). Удалены только модули, которые exhaustive-аудит подтвердил как truly orphaned — 0 рантайм-импортёров в app//scripts//packages/, ссылались только тесты:

  • avito_imv.py (orphaned после E4 #2337)
  • yandex_valuation.py (orphaned после E4 #2337)
  • yandex_detail.py (orphaned после Group C)
  • domclick_detail.py (orphaned после Group D)
  • ekb_geoportal_client.py (orphaned после Group D)

Тест-очистка (не слепое удаление — покрытие kit сохранено):

  • Удалены (pure legacy-vs-kit parity, самостоятельной ценности нет): test_ekb_geoportal_client_kit_parity.py, test_domclick_detail_kit_parity.py
  • Конвертированы в kit-only (legacy-импорт убран, kit-assertions сохранены — включая config-footgun / mandatory-config / delay_provider regression-тесты): ~13 файлов
  • Частично отредактированы (убраны только части про удалённые модули, живой legacy сохранён — cian_valuation/base/yandex_realty/avito/avito_houses импорты не тронуты): ~8 файлов

Что НЕ удалено (осознанно, ещё живое)

21 из 26 legacy-модулей заблокированы живыми импортёрами: legacy scrape_pipeline.py (module-level на старте) + 6 намеренно отложенных call-sites (cian_history_backfillcian_valuation; admin/sweep/backfill → legacy newbuilding, блок #2322; avito_detail_backfillbuild_warmed_session, #2330). Полное удаление директории разблокируется после domиграции этих call-sites (follow-up #2385/#2386 + caller re-migration). Это ровно причина, по которой #2277 gated финальное удаление.

Review

code-reviewer APPROVE (независимо перегрепал app/scripts/packages на импорты всех 5 — zero; проверил intra-legacy — zero; подтвердил что конвертированные тесты сохранили реальные assertions, не выхолощены; перепрогнал full suite сам).

Test plan

  • Full backend suite: 3253 passed, 6 skipped, 1 pre-existing unrelated fail (test_search_cache_hit #2208). Падение с 3279 — ожидаемо (удалены/сжаты parity-тесты).
  • app.main / scheduler_main / scrape_pipeline импортируются чисто (import-sanity после rebase)
  • grep: 0 новых импортёров удалённых модулей на актуальном main
  • ruff check clean на всех тронутых файлах
  • Rollback — git revert восстанавливает все 5 модулей + тесты одним коммитом

Refs #2277

## Summary Первый (частичный) шаг финального удаления legacy `app/services/scrapers/*` (эпик #2277). Удалены **только** модули, которые exhaustive-аудит подтвердил как truly orphaned — 0 рантайм-импортёров в `app/`/`scripts/`/`packages/`, ссылались только тесты: - `avito_imv.py` (orphaned после E4 #2337) - `yandex_valuation.py` (orphaned после E4 #2337) - `yandex_detail.py` (orphaned после Group C) - `domclick_detail.py` (orphaned после Group D) - `ekb_geoportal_client.py` (orphaned после Group D) Тест-очистка (не слепое удаление — покрытие kit сохранено): - **Удалены** (pure legacy-vs-kit parity, самостоятельной ценности нет): `test_ekb_geoportal_client_kit_parity.py`, `test_domclick_detail_kit_parity.py` - **Конвертированы в kit-only** (legacy-импорт убран, kit-assertions сохранены — включая config-footgun / mandatory-config / delay_provider regression-тесты): ~13 файлов - **Частично отредактированы** (убраны только части про удалённые модули, живой legacy сохранён — `cian_valuation`/`base`/`yandex_realty`/`avito`/`avito_houses` импорты не тронуты): ~8 файлов ## Что НЕ удалено (осознанно, ещё живое) 21 из 26 legacy-модулей заблокированы живыми импортёрами: legacy `scrape_pipeline.py` (module-level на старте) + 6 намеренно отложенных call-sites (`cian_history_backfill` → `cian_valuation`; admin/sweep/backfill → legacy newbuilding, блок #2322; `avito_detail_backfill` → `build_warmed_session`, #2330). Полное удаление директории разблокируется после domиграции этих call-sites (follow-up #2385/#2386 + caller re-migration). Это ровно причина, по которой #2277 gated финальное удаление. ## Review `code-reviewer` — ✅ APPROVE (независимо перегрепал app/scripts/packages на импорты всех 5 — zero; проверил intra-legacy — zero; подтвердил что конвертированные тесты сохранили реальные assertions, не выхолощены; перепрогнал full suite сам). ## Test plan - [x] Full backend suite: 3253 passed, 6 skipped, 1 pre-existing unrelated fail (test_search_cache_hit #2208). Падение с 3279 — ожидаемо (удалены/сжаты parity-тесты). - [x] `app.main` / `scheduler_main` / `scrape_pipeline` импортируются чисто (import-sanity после rebase) - [x] grep: 0 новых импортёров удалённых модулей на актуальном main - [x] `ruff check` clean на всех тронутых файлах - [x] Rollback — `git revert` восстанавливает все 5 модулей + тесты одним коммитом Refs #2277
lekss361 added 1 commit 2026-07-04 07:42:32 +00:00
chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный)
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
a9b87aa311
Удалены (0 runtime importers в app/, scripts/, packages/; проверено grep'ом,
включая intra-legacy импорты в оставшихся 21 legacy-модуле scrapers/):
- backend/app/services/scrapers/avito_imv.py
- backend/app/services/scrapers/domclick_detail.py
- backend/app/services/scrapers/ekb_geoportal_client.py
- backend/app/services/scrapers/yandex_detail.py
- backend/app/services/scrapers/yandex_valuation.py

Тесты — удалены (pure legacy-vs-kit parity, kit-only coverage уже есть в другом
месте):
- tests/scrapers/test_ekb_geoportal_client_kit_parity.py
- tests/scrapers/test_domclick_detail_kit_parity.py

Тесты — конвертированы в kit-only (импорт легаси заменён на scraper_kit.*,
покрытие сохранено без потерь):
- tests/scrapers/test_avito_imv_kit_parity.py (parity-тесты убраны, config-footgun
  regression на kit-стороне оставлен)
- tests/scrapers/test_avito_imv_browser_transport.py
- tests/scrapers/test_yandex_valuation_kit_migration.py (parity убрана, footgun-
  регрессия mandatory config/delay_provider оставлена)
- tests/scrapers/test_domclick_detail.py (+ exceptions переведены на
  scraper_kit.domclick_exceptions, т.к. kit parse_detail_html поднимает их)
- tests/test_avito_imv_parse.py
- tests/test_ekb_geoportal_ingest.py (client-часть; ingest/geocoder-часть не
  трогали — не зависят от удалённого модуля)
- tests/test_yandex_detail.py
- tests/test_yandex_detail_structural.py
- tests/test_yandex_valuation.py (YandexValuationScraper() → config=_KIT_CONFIG,
  kit конструктор требует обязательный config)
- tests/test_yandex_valuation_save.py
- tests/test_extval_house_id_write_path.py (только yandex_valuation-часть;
  cian_valuation остался нетронутым — живой легаси-модуль)
- tests/test_yandex_history_area_filter.py

Тесты — частично отредактированы (убраны только части про удалённые модули,
живые легаси-модули/их parity не тронуты):
- tests/scrapers/test_admin_domclick_ingest_kit_parity.py (base.py/ScrapedLot
  parity остался)
- tests/scrapers/test_admin_yandex_kit_parity.py (yandex_realty parity остался)
- tests/scrapers/test_admin_avito_kit_parity.py (avito.py/avito_houses.py parity
  остался; _parse_price parity убран)
- tests/scrapers/test_avito_unix_date_tz_consistency.py (IMV-ветка переведена на
  kit avito.imv, легаси avito/avito_houses/avito_shared/avito_detail не тронуты)
- tests/tasks/test_yandex_detail_backfill.py (subject — kit-задача, уже вызывает
  scraper_kit.providers.yandex.detail; save_detail_enrichment coverage-тесты
  внизу файла переведены на kit)
- tests/test_scraper_kit_yandex_golden_parity.py (detail/valuation parity убраны;
  serp/newbuilding/house_type_normalizer/build_url для yandex_realty/
  yandex_newbuilding не тронуты)
- tests/test_scraper_proxy.py (YandexValuation proxy-тесты переведены на kit
  config= DI; test_avito_imv_own_session_receives_proxies удалён — дублирует
  test_avito_imv_kit_parity.py footgun-тесты)
- tests/test_yandex_scrapers_delay_wiring.py (yandex_detail/yandex_valuation →
  kit delay_provider=; yandex_realty/yandex_newbuilding не тронуты)
- tests/test_scraper_kit_group_c_backfill_kit_parity.py (docstring уточнение,
  без функциональных изменений)

Полный backend-suite зелёный (3253 passed, 6 skipped) кроме известного
pre-existing flake test_search_api.py::test_search_cache_hit (#2208, не
регрессия этого PR). ruff check + ruff format — чисто на всех изменённых файлах.
lekss361 merged commit dd222a4eb3 into main 2026-07-04 07:44:53 +00:00
lekss361 deleted branch chore/tradein-delete-orphaned-legacy-scrapers 2026-07-04 07:44:53 +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#2394
No description provided.