chore(tradein/geocoder): удалить Яндекс-геокодер (#2593) #2596

Merged
lekss361 merged 1 commit from chore/tradein-remove-yandex-geocoder into main 2026-07-31 19:04:04 +00:00
Owner

Часть 2 из 3 по #2593. Решение владельца: ключ недействителен (#2585, 403 Invalid api key), перевыпускать не будем.

−845 строк в 12 файлах. Удалены _yandex_bias, _yandex_region_ok, _yandex_lookup, EKB_BBOX, _parse_yandex_members, _yandex_geocode_request, _yandex_suggest, _yandex_reverse, тир-блоки в suggest()/geocode()/reverse_geocode(), значение "yandex" из обоих перечислений провайдера, плюс 20 мест докстрингов и комментариев, описывавших цепочку тиров.

Цепочка после удаления: кэш → геопортал ЕКБ → кадастр (по дому) → кадастр (сырой) → Nominatim. В подсказках дополнительно DaData.

Яндекс.Недвижимость не задета — проверено

Главный риск задачи. Контроль: в диффе нет ни одного файла скрапера. Персонально проверено и оставлено нетронутым:

  • providers/yandex/serp.py — поле location.geocoderAddress (это их JSON, а не наш геокодер);
  • providers/avito/imv.py:_geocode() — геокодер Авито;
  • EKB_BBOX_TIGHT / EKB_BBOX_WIDE — живые (удалён только словарь EKB_BBOX, который использовался исключительно удалённым кодом);
  • _nominatim_region_ok, geocode_missing.py:160;
  • в config.py убраны только два ключа геокодера — настройки прокси, cookies и таймаута оценки Яндекса остались;
  • в estimator.py правился один комментарий — функции истории и оценки Яндекса не тронуты.

Отклонения от буквального списка — все обоснованы

  • В test_cadastral_reverse.py нашёлся ещё один тест, патчивший _yandex_reverse (в списке его не было). Заглушку пришлось снять — иначе подмена несуществующего атрибута падала бы в рантайме, ровно тот сценарий, о котором предупреждала задача.
  • Перенумерованы комментарии тиров и поправлены сообщения логов вида «falling back to yandex» — прямое следствие удалений.
  • tests/fixtures/yandex_geocode_sample.json оставлен: греп показал, что он ещё используется тестом скрипта _yandex_reverse.py, который удаляется в части 3.

_SNAP_PRECISIONS — значение "exact" оставлено

Его производил только _yandex_reverse, теперь оно недостижимо. Оставлено осознанно: во-первых, на него есть тест, не входивший в список правок (удаление сломало бы полный прогон); во-вторых, ровно та же константа продублирована во фронтенде (MapPicker.tsx:21), и расхождение двух независимо поддерживаемых копий хуже, чем недостижимый литерал в множестве. Комментарий рядом это фиксирует.

Полный прогон: 2937 passed, 1 pre-existing (test_search_cache_hit, к геокодеру отношения не имеет). ruff чисто.

Часть 3 (скрипты _yandex_reverse.py, backfill_house_coords.py, audit_address_mismatch.py + документация) — отдельным PR.

Часть 2 из 3 по #2593. Решение владельца: ключ недействителен (#2585, `403 Invalid api key`), перевыпускать не будем. **−845 строк** в 12 файлах. Удалены `_yandex_bias`, `_yandex_region_ok`, `_yandex_lookup`, `EKB_BBOX`, `_parse_yandex_members`, `_yandex_geocode_request`, `_yandex_suggest`, `_yandex_reverse`, тир-блоки в `suggest()`/`geocode()`/`reverse_geocode()`, значение `"yandex"` из обоих перечислений провайдера, плюс 20 мест докстрингов и комментариев, описывавших цепочку тиров. Цепочка после удаления: кэш → геопортал ЕКБ → кадастр (по дому) → кадастр (сырой) → Nominatim. В подсказках дополнительно DaData. ## Яндекс.Недвижимость не задета — проверено Главный риск задачи. Контроль: **в диффе нет ни одного файла скрапера**. Персонально проверено и оставлено нетронутым: - `providers/yandex/serp.py` — поле `location.geocoderAddress` (это их JSON, а не наш геокодер); - `providers/avito/imv.py:_geocode()` — геокодер Авито; - `EKB_BBOX_TIGHT` / `EKB_BBOX_WIDE` — живые (удалён только словарь `EKB_BBOX`, который использовался исключительно удалённым кодом); - `_nominatim_region_ok`, `geocode_missing.py:160`; - в `config.py` убраны только два ключа геокодера — настройки прокси, cookies и таймаута оценки Яндекса остались; - в `estimator.py` правился один комментарий — функции истории и оценки Яндекса не тронуты. ## Отклонения от буквального списка — все обоснованы - В `test_cadastral_reverse.py` нашёлся ещё один тест, патчивший `_yandex_reverse` (в списке его не было). Заглушку пришлось снять — иначе подмена несуществующего атрибута падала бы в рантайме, ровно тот сценарий, о котором предупреждала задача. - Перенумерованы комментарии тиров и поправлены сообщения логов вида «falling back to yandex» — прямое следствие удалений. - `tests/fixtures/yandex_geocode_sample.json` **оставлен**: греп показал, что он ещё используется тестом скрипта `_yandex_reverse.py`, который удаляется в части 3. ## `_SNAP_PRECISIONS` — значение `"exact"` оставлено Его производил только `_yandex_reverse`, теперь оно недостижимо. Оставлено осознанно: во-первых, на него есть тест, не входивший в список правок (удаление сломало бы полный прогон); во-вторых, ровно та же константа продублирована во фронтенде (`MapPicker.tsx:21`), и расхождение двух независимо поддерживаемых копий хуже, чем недостижимый литерал в множестве. Комментарий рядом это фиксирует. Полный прогон: 2937 passed, 1 pre-existing (`test_search_cache_hit`, к геокодеру отношения не имеет). ruff чисто. Часть 3 (скрипты `_yandex_reverse.py`, `backfill_house_coords.py`, `audit_address_mismatch.py` + документация) — отдельным PR.
lekss361 added 1 commit 2026-07-31 18:23:52 +00:00
chore(tradein/geocoder): удалить Яндекс-геокодер (#2593)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
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 2m28s
3d075632a9
Убирает ядро Yandex Geocoder (forward/reverse/suggest lookups + region-check
+ bias-хелперы + EKB_BBOX dict) из app/services/geocoder.py — Yandex demo-key
исчерпан, Nominatim/DaData/локальные ЕКБ-тиры (geoportal/cadastral) остаются
единственными живыми провайдерами. Цепочка тиров после удаления: кэш →
геопортал ЕКБ → кадастр (house-match) → кадастр (raw) → Nominatim; в
подсказках дополнительно DaData.

НЕ затронуто (намеренно): Yandex.Недвижимость как источник объявлений
(source='yandex', yandex_city_sweep*, providers/yandex/serp.py:geocoderAddress),
Avito geocoder (providers/avito/imv.py:_geocode), EKB_BBOX_TIGHT/WIDE,
_nominatim_region_ok, scripts/*_yandex_reverse.py и их тесты, tests/fixtures/
yandex_geocode_sample.json (всё ещё используется test_audit_address_mismatch.py).

_SNAP_PRECISIONS оставлен с "exact" (недостижимо без Yandex-tier, но дёшево
хранить — parity с frontend MapPicker.tsx SNAP_PRECISIONS и не ломает
test_snap_precision_useful_exact_and_number).
lekss361 merged commit 3de4d42cde into main 2026-07-31 19:04:04 +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#2596
No description provided.