gendesign/frontend/src/components/site-finder
Light1YT a0232e22f1
All checks were successful
CI / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m1s
CI / openapi-codegen-check (pull_request) Successful in 1m54s
feat(concept): live 3D massing → financial recompute in «7. Концепция» (#1965 Stage 2b)
Wire the interactive 3D massing to a LIVE financial recompute inside the
Section «7. Концепция» of the light analysis report (epic #1953).

- concept-api.ts: add MassingProgram / MassingRecomputeOutput contracts +
  useRecomputeMassing() (POST /api/v1/concepts/recompute via shared apiFetch),
  and polygonCentroidWkt() helper for the DB-price fallback hint.
- MassingScene.tsx: export MassingModel + add optional onModelChange prop fired
  on the initial build and every floors/sections change (NOT on the sun/hour
  slider). No-op when absent — /ptica cockpit + preview/drawer unchanged.
- MassingEconomics.tsx (new): light-token KPI strip rendering recomputed ТЭП
  (GFA, продаваемая, квартиры, КСИТ факт/цель) + финмодель (выручка,
  себестоимость, прибыль, ROI, NPV, IRR, цена). Debounced ~250ms, latest-wins
  via monotonic request id, last-good values + subtle note on error, grey-fade
  skeleton on first load, КСИТ over-cap flag.
- Section7Concept.tsx: mount lazy MassingViewer (dynamic ssr:false) + the
  economics strip; map computeModel → MassingProgram (footprint/floors/sections
  ← model; site area ← polygon; class/type ← financial_estimate inferred,
  fallback comfort/mid_rise; land ← egrn cadastral; price/source ←
  financial_estimate; КСИТ-цель ← coerced nspd_zoning.max_far, fallback 3.5).
2026-06-28 01:01:53 +05:00
..
__tests__ fix(site-finder): show networks & connection points on Раздел 3 map (#1961) 2026-06-27 17:52:51 +05:00
analysis feat(concept): live 3D massing → financial recompute in «7. Концепция» (#1965 Stage 2b) 2026-06-28 01:01:53 +05:00
compare fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
entry revert(site-finder): rollback dark entry-landing skin to light 2026-06-22 11:08:44 +05:00
ptica feat(concept): live 3D massing → financial recompute in «7. Концепция» (#1965 Stage 2b) 2026-06-28 01:01:53 +05:00
BestLayoutsBlock.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
CadInput.tsx revert(site-finder): rollback dark entry-landing skin to light 2026-06-22 11:08:44 +05:00
ChatPanel.tsx feat(site-finder): grounded parcel-chat panel UI (#958) 2026-06-08 18:08:01 +05:00
CompetitorTable.tsx feat(sf-fe-a8): Section 3.2 Планировки + 3.3 Остатки/Velocity + CompetitorTable drawer pattern (#357) 2026-05-18 01:14:32 +00:00
ConfidenceBadge.tsx feat(site-finder): X2 confidence indicator + caveats (#48) (#88) 2026-05-12 01:04:25 +03:00
ConnectionPointsLayer.tsx fix(site-finder): show networks & connection points on Раздел 3 map (#1961) 2026-06-27 17:52:51 +05:00
CpLayerControlPanel.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
CustomPoiAddModal.tsx feat(#254,#114): custom POI UI + score breakdown stacked-bar viz 2026-05-17 09:35:35 +03:00
CustomPoiEditModal.tsx feat(#254,#114): custom POI UI + score breakdown stacked-bar viz 2026-05-17 09:35:35 +03:00
CustomPoiLayer.tsx feat(#254,#114): custom POI UI + score breakdown stacked-bar viz 2026-05-17 09:35:35 +03:00
CustomPoiToggleButton.tsx feat(#254,#114): custom POI UI + score breakdown stacked-bar viz 2026-05-17 09:35:35 +03:00
EnvironmentTab.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
FetchingState.tsx feat(site-finder): auto-fetch cadastre geometry on-demand (#93) (#95) 2026-05-12 09:02:17 +03:00
GateVerdictBanner.tsx fix(site-finder): P3 a11y/UI batch from audit #1871 2026-06-23 12:52:32 +05:00
GeologyBlock.tsx feat(site-finder): v3.4 - weather enrichment (temp/precip/UV) + geology stub 2026-05-11 21:17:57 +03:00
GeometrySuitabilityBlock.tsx feat(site-finder): P1 geometry suitability score (#45) (#89) 2026-05-12 08:00:12 +03:00
GeotechRiskBlock.tsx fix(site-finder): P3 a11y/UI batch from audit #1871 2026-06-23 12:52:32 +05:00
HorizonSelector.tsx feat(site-finder): продуктовые решения по фидбеку analyze (#1741 #1742 #1743 #1744 #1745) 2026-06-18 12:18:04 +05:00
HydrologyBlock.tsx fix(site-finder): P3 a11y/UI batch from audit #1871 2026-06-23 12:52:32 +05:00
IsochronesPanel.tsx feat(site-finder): isochrones UI + networks VKH + OSM substations 2026-05-11 21:48:21 +03:00
KpiCard.tsx fix(site-finder): honest POI-score label + drop duplicate MOI column (audit #1871 P2) 2026-06-23 12:29:02 +05:00
LandTab.tsx fix(site-finder): wire encumbrance/obj_class/ЗОУИТ display + forecast axis & flat-state (#1953) 2026-06-27 16:51:40 +05:00
MarketLayers.tsx feat(site-finder): add opportunity-ЗУ + red-line map layers (§12.1-13, #958) 2026-06-09 07:19:53 +00:00
MarketTab.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
MarketTrendBlock.tsx fix(site-finder): velocity fallback 4500→750, coverage/proxy disclosure, market_trend staleness honesty (audit #1871 P2) 2026-06-23 12:04:08 +05:00
NeighborsBlock.tsx feat(site-finder): P2 cad_buildings соседи + overlap check (#46) (#91) 2026-05-12 01:30:53 +03:00
NspdEngineeringNearbyBlock.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
NspdFreshnessBadge.tsx fix(#234): NSPD harvest ETA badge + SETNX dedupe (Sub-PR C) 2026-05-17 09:13:06 +03:00
NspdOpportunityBlock.tsx feat(nspd): TIER 4 opportunity layers + red lines (#94 PR2 of 4) 2026-05-16 19:06:22 +03:00
NspdRedLinesBlock.tsx fix(nspd): rename migration 89→98, fix red lines ST_Area→ST_Length (#220) 2026-05-16 19:33:14 +03:00
NspdRiskZonesBlock.tsx feat(nspd): enable TIER 3 risk zones harvest + extract in analyze (#94 PR1) 2026-05-16 16:11:59 +03:00
NspdZoningBlock.tsx fix(#234): NSPD harvest ETA badge + SETNX dedupe (Sub-PR C) 2026-05-17 09:13:06 +03:00
NspdZouitOverlapsBlock.tsx fix(site-finder): wire encumbrance/obj_class/ЗОУИТ display + forecast axis & flat-state (#1953) 2026-06-27 16:51:40 +05:00
OverviewTab.tsx fix(report): newbuild-consistent district median + obj_class dedup (#1953) 2026-06-27 15:10:49 +05:00
Pipeline24moBlock.tsx feat(site-finder): продуктовые решения по фидбеку analyze (#1741 #1742 #1743 #1744 #1745) 2026-06-18 12:18:04 +05:00
ScoreBreakdownPanel.tsx feat(site-finder): X1 score breakdown + verbal explain (#47) (#92) 2026-05-12 08:17:00 +03:00
ScoreBreakdownStackedBar.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
ScoreCard.tsx feat(site-finder): tabbed UX - hero KPI band + 4 tabs (Overview/Env/Land/Market) + sticky map 2026-05-11 23:21:39 +03:00
SeasonalWeatherBlock.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
SiteMap.tsx feat(site-finder): render OSM utility-infrastructure layer on analyze map (#1746) 2026-06-27 03:40:51 +05:00
SuccessRecommendationBlock.tsx fix(site-finder): wire encumbrance/obj_class/ЗОУИТ display + forecast axis & flat-state (#1953) 2026-06-27 16:51:40 +05:00
UtilityInfrastructureLayer.tsx feat(site-finder): render OSM utility-infrastructure layer on analyze map (#1746) 2026-06-27 03:40:51 +05:00
UtilityLayerControlPanel.tsx feat(site-finder): render OSM utility-infrastructure layer on analyze map (#1746) 2026-06-27 03:40:51 +05:00
VelocityBlock.tsx fix(site-finder): velocity fallback 4500→750, coverage/proxy disclosure, market_trend staleness honesty (audit #1871 P2) 2026-06-23 12:04:08 +05:00
WeightProfilePanel.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
ZouitLayer.tsx fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1») 2026-06-15 20:21:11 +05:00
ZouitLayerControlPanel.tsx feat(site-finder): ЗОУИТ visual layer на Leaflet карте (#255) 2026-06-13 17:41:08 +00:00