feat(trade-in/ui): transparency «Мера» — analog_tier, address_precision, expected_sold бар, ratio_basis #1837

Merged
lekss361 merged 1 commit from feat/estimator-ui-transparency into main 2026-06-20 12:31:20 +00:00
Owner

UI-часть аудита «Мера» (transparency-находки). Бэкенд — PR #1836 (поле analog_tier; мержить/деплоить ДО — иначе фронт graceful-fallback'ает на старый string-parse).

Изменения

  1. Структурный analog_tier (убирает хрупкий парсинг строки): тип AnalogTier + analog_tier? в AggregatedEstimate. resolveCompsTier() предпочитает estimate.analog_tier (лейблы: same_building→«тот же дом», micro_radius→«ближайшее окружение ≤500 м», district→«район/узкий радиус», city→«широкий по городу»). Если поле отсутствует → graceful fallback на старую compsTier() (не удалена). До деплоя #1836 работает по-старому.
  2. address_precision в «Как рассчитано» — строка точности адреса (house→«до дома»/street→«до улицы»/approximate→«приблизительно»); при confidence=low && approximate — красный + ⚠️.
  3. expected_sold третий бар в hero-bars — «Ожидаемая цена сделки» (фиолетовый, отличен от asking/ДКП), рендер только при наличии expected_sold_price_rub>0, диапазон soldLo/soldHi или точечный, −N% к объявлению.
  4. ratio_basis всегда — нота основы прогноза выкупа: per_rooms→«по сделкам той же планировки», global_fallback→«ср.-городской (мало сделок)» (раньше только fallback).

Файлы

types/trade-in.ts, components/trade-in/HeroTransparency.tsx, components/trade-in/HeroSummary.tsx

Проверка

lint/prettier (pre-commit) pass. Все новые поля опциональные — graceful при null/отсутствии (лэйаут не ломается, фронт безопасен до деплоя #1836). tsc в worktree без node_modules полноценно не гоняется (baseline); новых ошибок в тронутых файлах нет.

Контракт analog_tier сверен с #1836 дословно. Cross-ref аудит audits/Mera_Tradein_Estimate_Audit_0620.md.

UI-часть аудита «Мера» (transparency-находки). Бэкенд — **PR #1836** (поле `analog_tier`; мержить/деплоить ДО — иначе фронт graceful-fallback'ает на старый string-parse). ## Изменения 1. **Структурный analog_tier** (убирает хрупкий парсинг строки): тип `AnalogTier` + `analog_tier?` в `AggregatedEstimate`. `resolveCompsTier()` предпочитает `estimate.analog_tier` (лейблы: same_building→«тот же дом», micro_radius→«ближайшее окружение ≤500 м», district→«район/узкий радиус», city→«широкий по городу»). Если поле отсутствует → **graceful fallback** на старую `compsTier()` (не удалена). До деплоя #1836 работает по-старому. 2. **address_precision в «Как рассчитано»** — строка точности адреса (house→«до дома»/street→«до улицы»/approximate→«приблизительно»); при `confidence=low && approximate` — красный + ⚠️. 3. **expected_sold третий бар** в hero-bars — «Ожидаемая цена сделки» (фиолетовый, отличен от asking/ДКП), рендер только при наличии `expected_sold_price_rub>0`, диапазон soldLo/soldHi или точечный, `−N% к объявлению`. 4. **ratio_basis всегда** — нота основы прогноза выкупа: per_rooms→«по сделкам той же планировки», global_fallback→«ср.-городской (мало сделок)» (раньше только fallback). ## Файлы `types/trade-in.ts`, `components/trade-in/HeroTransparency.tsx`, `components/trade-in/HeroSummary.tsx` ## Проверка lint/prettier (pre-commit) pass. Все новые поля **опциональные** — graceful при null/отсутствии (лэйаут не ломается, фронт безопасен до деплоя #1836). tsc в worktree без node_modules полноценно не гоняется (baseline); новых ошибок в тронутых файлах нет. Контракт analog_tier сверен с #1836 дословно. Cross-ref аудит `audits/Mera_Tradein_Estimate_Audit_0620.md`.
lekss361 added 1 commit 2026-06-20 12:10:52 +00:00
feat(trade-in/ui): структурный analog_tier, address_precision в деталях, expected_sold бар, ratio_basis всегда
All checks were successful
CI / changes (pull_request) Successful in 6s
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
7080cce40e
- types/trade-in.ts: добавлен AnalogTier тип и analog_tier? поле в AggregatedEstimate (опциональное, graceful при absent/null)
- HeroTransparency: resolveCompsTier() предпочитает analog_tier (структурный, без парсинга строки), fallback на compsTier() эвристику при absent/null; добавлена строка «Точность адреса» в collapsible «Как рассчитано» из address_precision с предупреждением при low+approximate
- HeroSummary: третий бар «Ожидаемая цена сделки» (expected_sold_price_rub/low/high) с отличным цветом (viz-5/6) — graceful при null; ratio_basis показывается всегда: per_rooms→«по сделкам той же планировки», global_fallback→прежний текст
lekss361 merged commit 56e1c6e62d into main 2026-06-20 12:31:20 +00:00
lekss361 deleted branch feat/estimator-ui-transparency 2026-06-20 12:31:20 +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#1837
No description provided.