fix(tradein/dadata): suggest-fallback для house_fias_id когда CLEAN выключен #2486

Merged
bot-backend merged 1 commit from fix/tradein-dadata-clean-fallback-suggest into main 2026-07-12 16:59:30 +00:00
Collaborator

Проблема

На проде у DaData-аккаунта выключена услуга CLEAN (Стандартизация)/clean/address отдаёт HTTP 403 «Feature 'CLEAN' disabled for token …». Это НЕ отклонённый/протухший токен (проверено вживую: profile/balance и /suggest дают 200) — refresh токена не помогает. Из-за 403 house_fias_id (ключ join с houses/ДОМ.РФ: year_built, стены и пр.), гео и qc терялись, хотя /suggest их отдаёт бесплатно (token-only). В estimate для целевого адреса house_fias_id/canonical/cadnum = null.

Фикс

  • enrich_address() — новый оркестратор: /clean → graceful fallback на /suggest (top house-level кандидат). Отдаёт house_fias_id + гео + kladr_id + qc_geo. canonical_address/house_cadnum честно None (их умеет только CLEAN — не выдумываем). Город не ограничиваем (city="") — работает по всей обл. (66).
  • clean_address()403 «feature disabled» логируется отдельно от auth-rejection (токен валиден → refresh не поможет; чинить = включить услугу либо полагаться на fallback).
  • DadataSuggestion + _parse_suggestion тянут house_fias_id/kladr_id/qc_geo из data.
  • estimator: enrichment-вызов → enrich_address (алиас dadata_clean_address сохранён — точка патча в 11 тестах, без churn).

Проверка

  • 44 dadata-теста (вкл. новые: feature-disabled лог, enrich clean-path/suggest-fallback/both-fail, новые поля) — зелёные.
  • Regression-гейт байт-зелёный (2 passed); 151 estimator-тест, патчащих алиас, — зелёные.
  • Вживую на прод-кредах: clean_address → 403 (новый корректный лог); enrich_address → suggest-fallback вернул house_fias_id=bfa7153e-…, гео, qc_geo=0, kladr; canonical/cadnum=None.

Ортогонально к oblast-C1/C2. Услуга CLEAN на аккаунте DaData (за cadastral_number) — отдельно, вне кода.

## Проблема На проде у DaData-аккаунта **выключена услуга CLEAN (Стандартизация)** → `/clean/address` отдаёт `HTTP 403 «Feature 'CLEAN' disabled for token …»`. Это НЕ отклонённый/протухший токен (проверено вживую: `profile/balance` и `/suggest` дают 200) — refresh токена не помогает. Из-за 403 `house_fias_id` (ключ join с `houses`/ДОМ.РФ: year_built, стены и пр.), гео и qc терялись, хотя `/suggest` их отдаёт бесплатно (token-only). В `estimate` для целевого адреса `house_fias_id/canonical/cadnum = null`. ## Фикс - **`enrich_address()`** — новый оркестратор: `/clean` → graceful fallback на `/suggest` (top house-level кандидат). Отдаёт `house_fias_id` + гео + `kladr_id` + `qc_geo`. `canonical_address`/`house_cadnum` честно `None` (их умеет только CLEAN — не выдумываем). Город не ограничиваем (`city=""`) — работает по всей обл. (66). - **`clean_address()`** — `403 «feature disabled»` логируется **отдельно** от auth-rejection (токен валиден → refresh не поможет; чинить = включить услугу либо полагаться на fallback). - **`DadataSuggestion` + `_parse_suggestion`** тянут `house_fias_id`/`kladr_id`/`qc_geo` из `data`. - **estimator**: enrichment-вызов → `enrich_address` (алиас `dadata_clean_address` сохранён — точка патча в 11 тестах, без churn). ## Проверка - 44 dadata-теста (вкл. новые: feature-disabled лог, enrich clean-path/suggest-fallback/both-fail, новые поля) — зелёные. - Regression-гейт байт-зелёный (2 passed); 151 estimator-тест, патчащих алиас, — зелёные. - **Вживую на прод-кредах**: `clean_address` → 403 (новый корректный лог); `enrich_address` → suggest-fallback вернул `house_fias_id=bfa7153e-…`, гео, `qc_geo=0`, `kladr`; `canonical/cadnum=None`. Ортогонально к oblast-C1/C2. Услуга CLEAN на аккаунте DaData (за `cadastral_number`) — отдельно, вне кода.
bot-backend added 1 commit 2026-07-12 16:57:39 +00:00
fix(tradein/dadata): suggest-fallback для house_fias_id когда CLEAN выключен
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 56s
e250869c9d
На проде у DaData-аккаунта выключена услуга CLEAN (Стандартизация) → /clean/address
отдаёт HTTP 403 «Feature CLEAN disabled», из-за чего house_fias_id (ключ join с
houses/ДОМ.РФ) и гео терялись, хотя /suggest их отдаёт бесплатно (token-only).

- enrich_address(): /clean → graceful fallback на /suggest (house-level кандидат);
  canonical_address/house_cadnum честно None (их даёт только CLEAN — не выдумываем).
- clean_address(): 403 «feature disabled» логируется отдельно от auth-rejection
  (токен валиден — refresh не поможет; чинить = включить услугу либо fallback).
- DadataSuggestion + _parse_suggestion: тянут house_fias_id/kladr_id/qc_geo.
- estimator: enrichment-вызов → enrich_address (алиас dadata_clean_address сохранён,
  это точка патча в 11 тестах — без churn).
- Тесты: feature-disabled лог, enrich clean-path/suggest-fallback/both-fail, новые поля.
  Проверено вживую на прод-кредах: clean→403, enrich→house_fias_id восстановлен.
bot-backend merged commit 74017b39c4 into main 2026-07-12 16:59:30 +00:00
bot-backend deleted branch fix/tradein-dadata-clean-fallback-suggest 2026-07-12 16:59:30 +00:00
Sign in to join this conversation.
No reviewers
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#2486
No description provided.