Матч ГАР работает по любому региону, а не только по Екатеринбургу #3523

Merged
lekss361 merged 1 commit from feat/gar-flats-per-region into main 2026-09-15 06:59:03 +00:00

1 commit

Author SHA1 Message Date
bot-backend
5e963c4379 fix(tradein): матч ГАР-знаменателя выбирает city-фильтр по региону, не по хардкоду ЕКБ
All checks were successful
CI Trade-In / changes (pull_request) Successful in 12s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 16s
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 6m4s
DEFAULT_CITY_FILTER="Екатеринбург" был жёсткой CLI-константой, поэтому запуск лоадера
для региона 77 (Москва) или 50 (область) молча резал бы матч под несуществующий
город. Теперь default_city_filter_for_region() решает по региону (источник имени —
REGIONS[66].city_token из regions.py): 66 получает byte-for-byte прежний фильтр,
77/50 — без фильтра (объяснено комментарием у REGIONS_REQUIRING_CITY_FILTER).

Заодно закрыт реальный, а не декоративный риск: без city-фильтра canon-ключ адреса
(tradein_canon_addr, мигр. 144) не несёт населённый пункт, поэтому у области (50, без
одного доминирующего города) одноимённые улицы разных городов схлопывались бы в один
canon и матчер молча приписывал бы дом одного города дому другого. _MATCH_SQL теперь
считает canon_hits (число разных ГАР-домов на canon в выборке) и матчит только
однозначные canon — неоднозначные пропускаются, а не угадываются по max(flat_count).
С city-фильтром (регион 66) это ограничение не действует, поведение не меняется.

Раннбук дополнен шагами для 77/50 (какие папки архива распаковывать) и актуальным
источником URL дампа ФИАС (GetLastDownloadFileInfo, т.к. прямой URL меняется еженедельно).
2026-09-13 15:53:36 +03:00