feat(tradein): ui-preview/estimate — все 17 секций на оффлайн-фикстуре (#801) #828

Merged
bot-reviewer merged 1 commit from feat/801-preview-full-wt into main 2026-05-30 19:57:05 +00:00
Owner

Summary

  • fixture.ts: добавлены FIXTURE_IMV, FIXTURE_HOUSES, FIXTURE_PLACEMENT, FIXTURE_ANALYTICS, FIXTURE_SELLTIME (ЕКБ, ул. Репина, 2к, ~9 млн)
  • page.tsx: все 17 секций в порядке page.tsx строки 228–276; QueryClient засевает placement-history / house-analytics / sell-time-sensitivity / cian-price-changes — ни одна секция не схлопывается в return null

Порядок секций:

  1. SourcesProgress
  2. WhatIfPanel
  3. HeroSummary
  4. IMVBenchmark (available:true)
  5. CianValuationCard
  6. HouseInfoCard (length>0)
  7. PlacementHistoryCard (queryKey засеян)
  8. HouseAnalyticsSection (kpi.total_lots=38)
  9. PhotoUpload
  10. ListingsCard (cian-price-changes засеян пустым)
  11. DealsCard
  12. StreetDealsCard
  13. MapCard (analogs имеют lat/lon)
  14. DistributionCard
  15. PriceTrendCard
  16. ExposureCard
  17. OfferCard

Test plan

  • NEXT_PUBLIC_ENABLE_PREVIEW=1 npm run dev → http://localhost:3000/ui-preview/estimate
  • Все 17 секций видны без белых провалов
  • В консоли нет 401-циклов (seed покрывает все estimateId-запросы)
  • tsc --noEmit clean (проверено локально)

Refs #801

## Summary - fixture.ts: добавлены FIXTURE_IMV, FIXTURE_HOUSES, FIXTURE_PLACEMENT, FIXTURE_ANALYTICS, FIXTURE_SELLTIME (ЕКБ, ул. Репина, 2к, ~9 млн) - page.tsx: все 17 секций в порядке page.tsx строки 228–276; QueryClient засевает placement-history / house-analytics / sell-time-sensitivity / cian-price-changes — ни одна секция не схлопывается в return null Порядок секций: 1. SourcesProgress 2. WhatIfPanel 3. HeroSummary 4. IMVBenchmark (available:true) 5. CianValuationCard 6. HouseInfoCard (length>0) 7. PlacementHistoryCard (queryKey засеян) 8. HouseAnalyticsSection (kpi.total_lots=38) 9. PhotoUpload 10. ListingsCard (cian-price-changes засеян пустым) 11. DealsCard 12. StreetDealsCard 13. MapCard (analogs имеют lat/lon) 14. DistributionCard 15. PriceTrendCard 16. ExposureCard 17. OfferCard ## Test plan - [ ] NEXT_PUBLIC_ENABLE_PREVIEW=1 npm run dev → http://localhost:3000/ui-preview/estimate - [ ] Все 17 секций видны без белых провалов - [ ] В консоли нет 401-циклов (seed покрывает все estimateId-запросы) - [ ] tsc --noEmit clean (проверено локально) Refs #801
lekss361 added 1 commit 2026-05-30 19:52:20 +00:00
Расширяет preview-маршрут до 1:1 с реальной страницей результата:
- fixture.ts: добавлены FIXTURE_IMV, FIXTURE_HOUSES, FIXTURE_PLACEMENT,
  FIXTURE_ANALYTICS, FIXTURE_SELLTIME с правдоподобными данными (ЕКБ, 2-к ~9 млн)
- page.tsx: все 17 секций в порядке page.tsx строки 228-276; QueryClient
  засевает placement-history / house-analytics / sell-time-sensitivity /
  cian-price-changes — ни одна секция не схлопывается в return null

Секции: SourcesProgress, WhatIfPanel, HeroSummary, IMVBenchmark,
CianValuationCard, HouseInfoCard, PlacementHistoryCard, HouseAnalyticsSection,
PhotoUpload, ListingsCard, DealsCard, StreetDealsCard, MapCard,
DistributionCard, PriceTrendCard, ExposureCard, OfferCard

Closes #801
lekss361 added the
scope/frontend
status/review
tradein
labels 2026-05-30 19:52:27 +00:00
bot-reviewer approved these changes 2026-05-30 19:56:51 +00:00
bot-reviewer left a comment
Collaborator

APPROVE — все 17 секций на оффлайн-фикстуре (#801), preview-only.

Проверено (runtime-критично — seed-ключи реально матчат хуки):

  • Все 4 засеянных queryKey точно совпадают с хуками: placement-history (api:69), house-analytics (api:115), sell-time-sensitivity (api:182), cian-price-changes (api:99) → секции 7/8/10 рендерятся из seed оффлайн, без 401-fetch. PREVIEW_ID = FIXTURE_ESTIMATE.estimate_id.
  • IMVBenchmark/HouseInfoCard получают данные пропом напрямую (available:true / length>0 → не схлопываются в null). SourcesProgress/WhatIfPanel/OfferCard — корректные пропы (brandSlug=null).
  • Фикстуры типизированы (IMVBenchmarkResponse/HouseInfoForEstimate[]/PlacementHistoryItem[]/HouseAnalyticsResponse/SellTimeSensitivityResponse) — tsc clean (per PR) → поля conform.

Anti-regression:

  • CSS-импорт @/components/trade-in/trade-in.css (#820) сохранён — в base-blob 2e21876, diff его не удаляет.
  • Гейт NEXT_PUBLIC_ENABLE_PREVIEW==="1"notFound() не тронут (default-off в проде).
  • PREVIEW_USER admin — render-scoped в собственный QueryClient (без privilege-escalation, как в #803).
  • Scope: только ui-preview/estimate/{page,fixture}.tsx — preview-surface, prod-путь/бэкенд не затронуты. self-extending файлов нет, секретов нет (photo_url=null намеренно, без внешних картинок).

Минор (не блокер): MapCard тянет Leaflet-тайлы из CDN (сеть) — для оффлайн-axe ок (контент рендерится), для lighthouse-CWV может шуметь сетью. Не критично.

Мержу. #801 остаётся в status/qa.

<!-- gendesign-review-bot: sha=a34686a verdict=approve --> ✅ **APPROVE** — все 17 секций на оффлайн-фикстуре (#801), preview-only. **Проверено (runtime-критично — seed-ключи реально матчат хуки):** - Все 4 засеянных queryKey **точно** совпадают с хуками: `placement-history` (api:69), `house-analytics` (api:115), `sell-time-sensitivity` (api:182), `cian-price-changes` (api:99) → секции 7/8/10 рендерятся из seed оффлайн, без 401-fetch. PREVIEW_ID = `FIXTURE_ESTIMATE.estimate_id`. - IMVBenchmark/HouseInfoCard получают данные пропом напрямую (`available:true` / `length>0` → не схлопываются в null). SourcesProgress/WhatIfPanel/OfferCard — корректные пропы (`brandSlug=null`). - Фикстуры типизированы (`IMVBenchmarkResponse`/`HouseInfoForEstimate[]`/`PlacementHistoryItem[]`/`HouseAnalyticsResponse`/`SellTimeSensitivityResponse`) — tsc clean (per PR) → поля conform. **Anti-regression:** - CSS-импорт `@/components/trade-in/trade-in.css` (#820) сохранён — в base-blob `2e21876`, diff его не удаляет. - Гейт `NEXT_PUBLIC_ENABLE_PREVIEW==="1"` → `notFound()` не тронут (default-off в проде). - `PREVIEW_USER` admin — render-scoped в собственный QueryClient (без privilege-escalation, как в #803). - Scope: только `ui-preview/estimate/{page,fixture}.tsx` — preview-surface, prod-путь/бэкенд не затронуты. self-extending файлов нет, секретов нет (photo_url=null намеренно, без внешних картинок). Минор (не блокер): MapCard тянет Leaflet-тайлы из CDN (сеть) — для оффлайн-axe ок (контент рендерится), для lighthouse-CWV может шуметь сетью. Не критично. Мержу. #801 остаётся в `status/qa`.
bot-reviewer merged commit 20ec4647d3 into main 2026-05-30 19:57:05 +00:00
bot-reviewer deleted branch feat/801-preview-full-wt 2026-05-30 19:57:05 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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#828
No description provided.