Port the prototype massing.js to a client-only React component (MassingScene) behind a dynamic(ssr:false) wrapper (MassingViewer), wired into the future3d + insolation drawers, replacing the СКОРО SoonCards. Generative mass from parcel area (real geometry_suitability.area_ha) × КСИТ-цель 3.5 (labelled regulation-default · НСПД — honest, real max_far not in /analyze), OrbitControls (orbit/zoom/auto-rotate), time-of-day sun with shadows (insolation preview), live GFA/КСИТ-факт metrics (green ≤3.5 / amber over). Full renderer/ scene/RAF dispose on drawer close; graceful WebGL-unavailable fallback. Adds three@0.184.0 + @types/three (package.json + package-lock.json in sync). SSR-isolated (three imported only in MassingScene). TS strict, no any. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .eslintrc.json | ||
| Dockerfile | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| sentry.client.config.ts | ||
| sentry.edge.config.ts | ||
| sentry.server.config.ts | ||
| tsconfig.json | ||
| vitest-env.d.ts | ||
| vitest.config.ts | ||
| vitest.setup.ts | ||