chore(tradein/geocoder): удалить остатки скриптов Яндекс-геокодера, часть 3 (#2593) #2599
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2599
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "chore/tradein-remove-yandex-scripts"
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?
Часть 3 выпиливания Yandex-геокодера (части 1-2 — PR #2595, #2596, −845 строк). Nominatim остаётся единственным живым внешним геокодером (
app/services/geocoder.py).Удалено
scripts/_yandex_reverse.py,scripts/audit_address_mismatch.py,scripts/backfill_house_coords.py— мёртвые ops-скрипты, опирались на Yandex Geocoder API, недостижимы после частей 1-2tests/test_audit_address_mismatch.py,tests/test_backfill_house_coords.pytests/fixtures/yandex_geocode_sample.json— использовалась только вtest_audit_address_mismatch.py(grep по всем тестам подтвердил отсутствие других потребителей), стала сиротойscripts/audit_address_sample.sql,scripts/address_audit_report.sql— SQL-хелперы, использовались толькоaudit_address_mismatch.py(не в исходном списке задачи, добавлены как логичное продолжение — были бы осиротевшими ad-hoc report-скриптами без вызывающего кода)Документация (трейл)
tradein-mvp/backend/scripts/README.md— убраны секции "Production usage" и "Address audit + backfill (issue #582)", целиком описывавшие удалённые скрипты; оставлена короткая заметка о том, что и почему убрано + куда теперь смотреть (geocode_deals_nominatim.py)tradein-mvp/DEPLOY.md— убраны все упоминанияYANDEX_GEOCODER_API_KEY(переменная больше нигде не читается живым кодом)docs/Secrets_Rotation_Policy.md— убрана строкаYANDEX_GEOCODER_API_KEYиз таблицы секретов tradein-стека и из класса ротации DОсознанно НЕ тронуто (вне scope / живой код)
scripts/geocode_deals_nominatim.pyи его тесты — живой скрипт (не трогал по прямому указанию); в его docstring остались 2 стилистически устаревшие строки проYANDEX_GEOCODER_API_KEY(переменная там ни на что не влияет, реальногоos.environ.getна неё нет) — не правил, т.к. модуль вне scope этого PRapp/services/geocoder.py— модуль не модифицировался (только что дважды переработан); в нём остались исторические комментарии про удалённый_yandex_reverse(задокументированы как dead-but-kept для parity с фронтом)tradein-mvp/docker-compose.prod.yml— комментарии проYANDEX_GEOCODER_API_KEY/backfill_house_coords.pyустарели, но файл вне scope backend-engineer (devops-owned) — не трогалtests/services/test_cadastral_reverse.py:215— инертныйmock_settings.yandex_geocoder_api_key = Noneна MagicMock (в реальномSettingsтакого поля больше нет) — безобидный мусор, не функциональный трейл, оставилaddress_mismatch_audit(data/sql/066_*.sql) и её использование вhouse_dedup_merge.py— живая часть house-dedup pipeline, независимая от Yandex-аудита, не трогалsource='yandex',deploy/cron-scrape.sh) — другая подсистема, не трогалНовый тест
tests/test_geocoder_nominatim_lookup.py— closes coverage gap, оставленный удалением yandex-тестов (они были единственной проверкой, чтоcity/city_hintреально доходит до исходящего HTTP-запроса, а не только до cache-ключа). Мокает HTTP-транспорт черезhttpx.MockTransport(паттернtest_geocoder_bbox.py/tests/services/test_dadata.py) и ассертит параметрq=реального GET кnominatim.openstreetmap.org/search:test_nominatim_lookup_sends_city_hint_in_query_param—city_hint="Нижний Тагил"попадает вq=test_nominatim_lookup_no_city_sends_bare_address— без городаq=остаётся bare-адресом (regression guard против молчаливого дефолта, #2576)Тесты
Полный
pytestвtradein-mvp/backend: 2900 passed, 1 failed (pre-existing), 9 skipped (~124s).Pre-existing fail:
tests/test_search_api.py::test_search_cache_hit(assert 401 == 200) — воспроизведён и на чистомforgejo/main(до этого PR), не связан с geocoder-изменениями; похоже на регрессию недавнего auth-db PR #2597 (RBAC на/api/v1/search).Refs #2593