fix(tradein/v2): wire РАДИУС (backend radius_m) + map +/− zoom + building image + deglue word+word #2060

Merged
lekss361 merged 1 commit from feat/tradein-v2-audit-fixes-2 into main 2026-06-28 15:04:09 +00:00
Owner

Раунд 2 живого аудита (юзер нашёл мёртвые контролы). Backend + frontend.

РАДИУС (был захардкожен «500 м», нерабочий — BE-2 #2044)

  • Backend: optional radius_m: int (100–5000) в TradeInEstimateInput → проброшен в estimate_quality (base + fallback поиск аналогов/сделок). None сохраняет текущее двух-ярусное поведение байт-в-байт (1000м primary / 2000м fallback) — глобальный estimator не меняется на дефолте (ge=100 исключает falsy-0).
  • FE: дропдаун с дефолтом «Авто» (шлёт radius_m=null → legacy two-tier, НЕ молчаливое сужение до 500м — это поймал reviewer) + явные 300/500/1000/2000 как override; идёт radius_m в submit; внешнее кольцо карты отражает значение. Меняешь радиус → «ОЦЕНИТЬ» пересчитывает.

+/− на карте (были декоративные)

  • Реальный зум: transform: scale() на слое карты (шаг .25, clamp .6–2.5); кнопки/брекеты не масштабируются.

building.png / АДРЕС-карточка (фото 404)

  • next/image не подставлял basePath → 400. Заменил на <img> с NEXT_PUBLIC_BASE_PATH-префиксом (→ 200) + onError-фолбэк.

deglue word+word

  • «БольшаковаГеологическая» → «Большакова Геологическая» (сохраняет литеры дома 14А/д.5К).

Verify

  • next build зелёный (/v2 34.3 kB); pre-commit ruff на backend — Passed.
  • code-reviewer APPROVE — поймал и я исправил дефолт-радиус регрессию (отдавал бы 500м вместо двух-ярусного 1000/2000); backend None-default подтверждён байт-идентичным на всех 5 call-site.
  • Прод (frontend + backend пересборка) → визуальная проверка в этом окне после деплоя.

⚠️ Деплой пересобирает и backend-образ (estimator) — прослежу что оба образа обновились (rapid-merge trap).

Раунд 2 живого аудита (юзер нашёл мёртвые контролы). Backend + frontend. ### РАДИУС (был захардкожен «500 м», нерабочий — BE-2 #2044) - **Backend**: optional `radius_m: int (100–5000)` в `TradeInEstimateInput` → проброшен в `estimate_quality` (base + fallback поиск аналогов/сделок). **`None` сохраняет текущее двух-ярусное поведение байт-в-байт** (1000м primary / 2000м fallback) — глобальный estimator не меняется на дефолте (`ge=100` исключает falsy-0). - **FE**: дропдаун с дефолтом **«Авто»** (шлёт `radius_m=null` → legacy two-tier, НЕ молчаливое сужение до 500м — это поймал reviewer) + явные 300/500/1000/2000 как override; идёт `radius_m` в submit; внешнее кольцо карты отражает значение. Меняешь радиус → «ОЦЕНИТЬ» пересчитывает. ### +/− на карте (были декоративные) - Реальный зум: `transform: scale()` на слое карты (шаг .25, clamp .6–2.5); кнопки/брекеты не масштабируются. ### building.png / АДРЕС-карточка (фото 404) - next/image не подставлял basePath → 400. Заменил на `<img>` с `NEXT_PUBLIC_BASE_PATH`-префиксом (→ 200) + onError-фолбэк. ### deglue word+word - «БольшаковаГеологическая» → «Большакова Геологическая» (сохраняет литеры дома 14А/д.5К). ## Verify - `next build` зелёный (/v2 34.3 kB); pre-commit **ruff на backend — Passed**. - `code-reviewer` ✅ APPROVE — поймал и я исправил дефолт-радиус регрессию (отдавал бы 500м вместо двух-ярусного 1000/2000); backend None-default подтверждён байт-идентичным на всех 5 call-site. - Прод (frontend **+ backend** пересборка) → визуальная проверка в этом окне после деплоя. ⚠️ Деплой пересобирает и backend-образ (estimator) — прослежу что оба образа обновились (rapid-merge trap).
lekss361 added 1 commit 2026-06-28 15:03:49 +00:00
fix(tradein/v2): wire РАДИУС (backend radius_m) + map +/- zoom + building image + deglue word+word
All checks were successful
CI / changes (pull_request) Successful in 7s
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
e23dabe4f5
Live-browser audit (round 2): РАДИУС/+- dead, building photo missing.
- РАДИУС: backend BE-2 — optional radius_m (int 100–5000) on TradeInEstimateInput,
  threaded into estimate_quality comp search (base + fallback). None preserves the
  exact two-tier default (1000m primary / 2000m fallback) byte-identically. FE: РАДИУС
  dropdown with **Авто** default (sends no radius_m → legacy behaviour, NOT a silent
  500m narrowing) + 300/500/1000/2000 overrides; included as radius_m on submit; outer
  map ring tracks the value.
- Map +/− buttons: now a real zoom (transform: scale() on the map content layer, step
  .25, clamp .6–2.5); controls/bracket stay unscaled.
- building.png: next/image didn't apply basePath → 400; switched to plain <img> with
  NEXT_PUBLIC_BASE_PATH-prefixed src (→ 200) + onError fallback. HERO АДРЕС card шоу.
- deglueAddr: also splits word+word glue ('БольшаковаГеологическая'→'Большакова
  Геологическая'), still preserves house letters (14А, д.5К).

next build green (/v2 34.3 kB); estimator None-default byte-identical (ge=100 rules out
falsy-0); code-reviewer  after the Авто-default fix (avoided a default-radius regression).
lekss361 merged commit bcbbb53495 into main 2026-06-28 15:04:09 +00:00
lekss361 deleted branch feat/tradein-v2-audit-fixes-2 2026-06-28 15:04:09 +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#2060
No description provided.