(low) dadata._classify_kind: fias_level 65 (planning) и 75 (plot) ошибочно попадают в kind='house' #1529

Closed
opened 2026-06-15 05:59:20 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: parsing · Файл: tradein-mvp/backend/app/services/dadata.py:250-265

dadata.py:261-262. Условие if level >= 8: return 'house' относит к домам не только fias_level=8, но и =65 (planning structure) и =75 (земельный участок/plot), которые сам докстринг (стр.253-255) перечисляет как отдельные уровни. Полученный kind пробрасывается через geocoder._DADATA_KIND_MAP (geocoder.py:327,349) в GeocodeSuggestion.kind, влияющий на отображение/маршрутизацию подсказки. Импакт: участок или ОНТ/планировочная структура в автокомплите помечаются как 'house' (предложит «дом» там, где дома нет) — деградация UX, без влияния на гео-координаты. Реальная частота низкая (для адресного автокомплита квартир уровни 65/75 редки). Фикс: явно различать if level == 8: return 'house', а 9 (flat) и 65/75 либо отдельные kind, либо fallback на 'city'/'plot' по docstring.

Почему баг: Докстринг явно различает 8=house, 9=flat, 65=planning, 75=plot, но проверка >= 8 сваливает всё ≥8 в 'house'. Через geocoder._DADATA_KIND_MAP (geocoder.py:349) kind влияет на отображение/маршрутизацию подсказки; участок, выданный как 'house', собьёт UX автокомплита (предложит дом там, где дома нет).

Как чинить: Проверять конкретные уровни: level==8 → house, ==7 → street, ==75 → plot/skip, ==65 → planning, иначе city; не использовать открытое >= 8.


deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U127

**Severity:** low · **Категория:** parsing · **Файл:** `tradein-mvp/backend/app/services/dadata.py:250-265` dadata.py:261-262. Условие `if level >= 8: return 'house'` относит к домам не только fias_level=8, но и =65 (planning structure) и =75 (земельный участок/plot), которые сам докстринг (стр.253-255) перечисляет как отдельные уровни. Полученный kind пробрасывается через geocoder._DADATA_KIND_MAP (geocoder.py:327,349) в GeocodeSuggestion.kind, влияющий на отображение/маршрутизацию подсказки. Импакт: участок или ОНТ/планировочная структура в автокомплите помечаются как 'house' (предложит «дом» там, где дома нет) — деградация UX, без влияния на гео-координаты. Реальная частота низкая (для адресного автокомплита квартир уровни 65/75 редки). Фикс: явно различать `if level == 8: return 'house'`, а 9 (flat) и 65/75 либо отдельные kind, либо fallback на 'city'/'plot' по docstring. **Почему баг:** Докстринг явно различает 8=house, 9=flat, 65=planning, 75=plot, но проверка `>= 8` сваливает всё ≥8 в 'house'. Через geocoder._DADATA_KIND_MAP (geocoder.py:349) kind влияет на отображение/маршрутизацию подсказки; участок, выданный как 'house', собьёт UX автокомплита (предложит дом там, где дома нет). **Как чинить:** Проверять конкретные уровни: level==8 → house, ==7 → street, ==75 → plot/skip, ==65 → planning, иначе city; не использовать открытое `>= 8`. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.8 · unit U127</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:59:20 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:18 +00:00
Sign in to join this conversation.
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#1529
No description provided.