|
All checks were successful
CI / changes (pull_request) Successful in 11s
CI Trade-In / changes (pull_request) Successful in 11s
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 2m38s
Замыкает петлю "город объявления -> геокодирование" (issue #2594, шаг 2/3). listings.city (миграция 196) заполняется скрапером из контекста развёртки, но три caller-места геокодера решали город по ТЕКСТУ адреса и игнорировали колонку - голый адрес без города в тексте ("ул. Победы, 30", тагильский) уходил в Екатеринбург. - app/tasks/geocode_missing.py: группировка по (address, city) вместо address, city_hint в geocode(), UPDATE/tried_at-пометка по паре через city IS NOT DISTINCT FROM :city (обычный `=` не поймал бы NULL-город и не даёт нужной симметрии между группами). - app/tasks/backfill_listings_coords_geoportal.py: гейт по колонке city ПЕРЕД матчем против EKB-only ekb_geoportal_buildings, ПЕРЕД текстовым гейтом _names_non_ekb_city (сохранён как fallback для city IS NULL). Это окно идёт раньше geocode_missing_listings, поэтому раньше успевало испортить координаты первым. - app/api/v1/admin.py: per-ID endpoint /geocode-missing читает city из SELECT (listings.city / deals.city) и передаёт как city_hint. geocoder.py не тронут (запрещено ТЗ). Тесты: falsification-прогон (stash impl, тесты остаются) - 7 failed / 36 passed на старом коде, все 7 - новые тесты на новое поведение; после stash pop - 43 passed / 0 failed. Полный pytest tradein-mvp/backend: 2970 passed, 1 failed (pre-existing tests/test_search_api.py::test_search_cache_hit, несвязан), 9 skipped. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| asking_to_sold_ratio.py | ||
| avito_detail_backfill.py | ||
| backfill_listings_coords_geoportal.py | ||
| cadastral_geo_match.py | ||
| cian_history_backfill.py | ||
| deactivate_stale_avito.py | ||
| deal_city_price_bands_refresh.py | ||
| deals_freshness_monitor.py | ||
| domclick_detail_backfill.py | ||
| domrf_kapremont_load.py | ||
| ekb_geoportal_ingest.py | ||
| gar_flats_load.py | ||
| geocode_missing.py | ||
| listing_source_snapshot.py | ||
| newbuilding_enrich_backfill.py | ||
| osm_poi_ekb_refresh.py | ||
| refresh_search_matview.py | ||
| rosreestr_quarter_poll.py | ||
| sber_freshness_monitor.py | ||
| sber_index_pull.py | ||
| yandex_address_backfill.py | ||
| yandex_detail_backfill.py | ||
| yandex_newbuilding_sweep.py | ||
| zhkh_flats_load.py | ||