fix(tradein/geocoder): строгий матч литеры дома + починка DaData region-фильтра #2622
1 changed files with 14 additions and 2 deletions
|
|
@ -1020,8 +1020,20 @@ def _cadastral_house_match(db: Session, street: str, house: str) -> GeocodeSugge
|
|||
сузилась до цифр prefilter'а.
|
||||
|
||||
Нет дома с нужной литерой → возвращаем None, а НЕ «похожий» дом: пусть
|
||||
отработают следующие тиры (`_cadastral_forward_sync` → DaData → Nominatim).
|
||||
Тихо подставленный соседний дом здесь необратимо помечался бы `exact`.
|
||||
отработают следующие тиры. Тихо подставленный соседний дом здесь
|
||||
необратимо помечался бы `exact`.
|
||||
|
||||
ВНИМАНИЕ, цепочки различаются — не путать:
|
||||
* `geocode()` : geoportal → cadastral → `_cadastral_forward_sync`
|
||||
→ Nominatim → None. Тира DaData тут НЕТ.
|
||||
* `suggest()` : cadastral → DaData → Nominatim (единственный вызов
|
||||
`_dadata_suggest`).
|
||||
То есть на прямом вызове `geocode()` (API/PDF/восстановление по `?id=`)
|
||||
адрес с литерой, неизвестный ни геопорталу, ни Nominatim, даёт None —
|
||||
оценка не строится. Это сознательный выбор: честный отказ вместо
|
||||
уверенно-неверной оценки чужого дома. Основной UI-путь этим не задет —
|
||||
координаты приходят из выбранной подсказки (`ParamsPanel.tsx:776` →
|
||||
`api/v1/trade_in.py:128` использует lat/lon напрямую, минуя `geocode()`).
|
||||
"""
|
||||
house_norm = _norm_house(house)
|
||||
house_digits_m = re.match(r"\d+", house_norm)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue