feat(tradein/v2): wire overlays History/Analytics/Sources to real API (FE-2/3/4) #2051

Merged
lekss361 merged 1 commit from feat/tradein-v2-overlays into main 2026-06-28 12:46:50 +00:00
Owner

Closes #2039, #2040, #2041 · продолжение #2036. Тот же mappers-паттерн, что FE-1 (#2048).

Что

Оверлеи /trade-in/v2 (открываются по NAV) рендерят реальные данные:

  • История / Продажи в доме (HistoryView): продажи в доме ← useEstimatePlacementHistory; ДКП KPI/шапка ← useStreetDeals + useSalesVsListings; строки сделок с реальными адресом/датой/источником-объявления/торгом (pairs[]).
  • Аналитика дома (AnalyticsView): KPI (экспозиция/торг/доля снятых) ← useEstimateHouseAnalytics.kpi; 4 тира срока продажи ← useEstimateSellTimeSensitivity; полилинии истории цен ₽/м² посчитаны из price_history (год×источник); detail-scatter.
  • РЫНОК / Аналогичные (SourcesView): объявления ← analogs[] (реальные source/distance_m/source_url через safeUrl); сделки ← actual_deals[] (source/tier/date); KPI рынка/сделок.

Механика: mappers.ts += mapHistory/mapAnalytics/mapSources (+ хелперы, реюз FE-1); компоненты на composite data prop с fixture-default; SectionOverlay форвардит данные; page.tsx добавил 3 sub-хука + memo. FE-1 дашборд не тронут.

Честность данных

Раскодировал фабрикованные ячейки, которые рендерились «как настоящие»: ДКП адрес/дата/источник, дата сделки, футер «Показано N сделок». Где данных нет → , не выдуманное значение.

FE-approx (TODO BE-1 #2043)

CV (std/mean по analogs), per-source counts (groupBy), scatter exposure (today − listing_date, т.к. days_on_market null на проде).

Verify

  • next build зелёный (/v2 37.8 kB).
  • tsx-харнесс прогнал 3 оверлей-маппера против реальной оценки 701795d8 (placement-history/house-analytics/sell-time JSON с прода): houseSales(9)/KPI(экспозиция 47дн, торг −1.0%, снятых 22%)/sellTime(4 тира)/priceHistory(yandex полилиния, avito пусто — нет avito_imv данных = корректно)/scatter/adRows(10, реальный avito URL)/dealRows(10, source/tier/date).
  • code-reviewer: ⚠️ после 2 honesty-фиксов (футер счётчика + deal-бейдж).
  • Визуальный прод-скрин — за QA-окном (Playwright CDP-браузер недоступен в сессии).
Closes #2039, #2040, #2041 · продолжение #2036. Тот же mappers-паттерн, что FE-1 (#2048). ## Что Оверлеи `/trade-in/v2` (открываются по NAV) рендерят **реальные данные**: - **История / Продажи в доме** (`HistoryView`): продажи в доме ← `useEstimatePlacementHistory`; ДКП KPI/шапка ← `useStreetDeals` + `useSalesVsListings`; строки сделок с **реальными** адресом/датой/источником-объявления/торгом (`pairs[]`). - **Аналитика дома** (`AnalyticsView`): KPI (экспозиция/торг/доля снятых) ← `useEstimateHouseAnalytics.kpi`; 4 тира срока продажи ← `useEstimateSellTimeSensitivity`; полилинии истории цен ₽/м² **посчитаны** из `price_history` (год×источник); detail-scatter. - **РЫНОК / Аналогичные** (`SourcesView`): объявления ← `analogs[]` (реальные `source`/`distance_m`/`source_url` через `safeUrl`); сделки ← `actual_deals[]` (`source`/`tier`/`date`); KPI рынка/сделок. Механика: `mappers.ts` += `mapHistory`/`mapAnalytics`/`mapSources` (+ хелперы, реюз FE-1); компоненты на composite `data` prop с fixture-default; `SectionOverlay` форвардит данные; `page.tsx` добавил 3 sub-хука + memo. **FE-1 дашборд не тронут.** ## Честность данных Раскодировал фабрикованные ячейки, которые рендерились «как настоящие»: ДКП адрес/дата/источник, дата сделки, футер «Показано N сделок». Где данных нет → `—`, не выдуманное значение. ## FE-approx (TODO BE-1 #2043) CV (std/mean по analogs), per-source counts (groupBy), scatter exposure (`today − listing_date`, т.к. `days_on_market` null на проде). ## Verify - `next build` зелёный (/v2 37.8 kB). - tsx-харнесс прогнал 3 оверлей-маппера против реальной оценки `701795d8` (placement-history/house-analytics/sell-time JSON с прода): houseSales(9)/KPI(экспозиция 47дн, торг −1.0%, снятых 22%)/sellTime(4 тира)/priceHistory(yandex полилиния, avito пусто — нет avito_imv данных = корректно)/scatter/adRows(10, реальный avito URL)/dealRows(10, source/tier/date). - `code-reviewer`: ⚠️→✅ после 2 honesty-фиксов (футер счётчика + deal-бейдж). - Визуальный прод-скрин — за QA-окном (Playwright CDP-браузер недоступен в сессии).
lekss361 added 1 commit 2026-06-28 12:46:41 +00:00
feat(tradein/v2): wire overlays History/Analytics/Sources to real API (#2039 #2040 #2041)
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
267585e312
FE-2/3/4 on the FE-1 mappers architecture. Adds mapHistory/mapAnalytics/mapSources
(+helpers) to mappers.ts; HistoryView/AnalyticsView/SourcesView accept composite
data props (fixture default); SectionOverlay forwards overlay data; page.tsx adds
useEstimatePlacementHistory/useSalesVsListings/useEstimateSellTimeSensitivity and
feeds mapped data. FE-1 main dashboard untouched.

- History: house sales (placement-history); ДКП KPI/header (street-deals +
  sales-vs-listings); per-deal rows with REAL addr/date/listing-source/discount.
- Analytics: KPIs (экспозиция/торг/доля снятых), 4 sell-time tiers, price-history
  polylines computed from year×source, detail scatter.
- Sources: ad rows from analogs (real source/distance/url via safeUrl), deal rows
  from actual_deals (real source/tier/date), market KPIs.
- Un-hardcoded fabricated cells: DKP addr/date/source, deal date, deals footer count.
- FE-approx (TODO BE-1 #2043): CV, per-source counts, days_on_market->listing_date.

Verified: next build green (/v2 37.8 kB); tsx harness ran the 3 overlay mappers vs
real estimate 701795d8 (houseSales/KPIs/sellTime/priceHistory/scatter/ad+deal rows
correct). code-reviewer APPROVE after honesty fixes.
lekss361 merged commit 0c0efb887a into main 2026-06-28 12:46:50 +00:00
lekss361 deleted branch feat/tradein-v2-overlays 2026-06-28 12:46:50 +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#2051
No description provided.