gendesign/frontend
Light1YT 5339aeb72e
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m1s
CI / openapi-codegen-check (pull_request) Successful in 1m52s
feat(concept): 3D-масса корпусов на карте с тенями (§7) (#1953)
Anton: «куда делась 3D? хочу подробную 3D-модель, крутится на карте (карта как
подставка-земля), видеть тень». Вернул 3D — но привязанный к ЕДИНОЙ программе.

- Massing3DScene (three, ssr:false): рисует РОВНО размещённые корпуса из
  variant.buildings_geojson (высота = floors × высота этажа), на ground-плоскости
  с растровым OSM-тайлом участка («карта как земля»), солнце по времени суток
  отбрасывает тени (slider «Время суток»), OrbitControls + автоповорот.
- geo-local.ts: WGS84→локальные метры (equirectangular о центроиде) + slippy-tile
  математика (выбор зума ≤2×2, geo-pin плоскости теми же углами тайл-блока) — 11
  vitest. Без новых зависимостей (three+leaflet уже есть).
- Вкладка 2D/3D в «Размещение застройки»: «План (2D)» = существующая Leaflet-карта,
  «Объём (3D)» = новый вьюер. Десктоп — 3D по умолчанию, моб (<768) — 2D + 3D по тапу.
- sun.ts / three-utils.ts: sunFromHour + disposeObject вынесены из MassingScene
  (verbatim), кокпит репойнтнут на них (без изменения поведения).
- Полный teardown (RAF/RO/dispose geom+mat+CanvasTexture+renderer), WebGL-guard,
  fallback на плоскую плашку+grid при сбое тайла/таймауте 6с, честный caption
  (высота этажа норматив движка; подложка © OpenStreetMap).

Отложено (follow-up): live-ползунок высоты этажа (Phase 2); полноценный 3D-рельеф
местности (нужны DEM/elevation-тайлы — отдельный эпик).
2026-06-30 16:55:06 +05:00
..
public refactor(tradein/v2): перенос HUD v2 в tradein-mvp frontend 2026-06-28 13:10:23 +03:00
src feat(concept): 3D-масса корпусов на карте с тенями (§7) (#1953) 2026-06-30 16:55:06 +05:00
.dockerignore fix(scraper): диагностируем «кнопка не работает» — Redis lock + task_received log 2026-04-28 23:17:42 +03:00
.env.example feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
.eslintrc.json init 2026-04-25 13:45:19 +03:00
Dockerfile fix(frontend): bind Next standalone to 0.0.0.0 so healthcheck passes 2026-06-06 20:06:52 +05:00
next-env.d.ts add interactive analytics dashboard for Sverdlovsk market and PRINZIP 2026-04-27 16:55:30 +03:00
next.config.ts feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
package-lock.json fix(ci): pin prettier 3.9.0 for codegen check + pre-commit so api-types is byte-stable 2026-06-27 16:11:26 +05:00
package.json fix(ci): pin prettier 3.9.0 for codegen check + pre-commit so api-types is byte-stable 2026-06-27 16:11:26 +05:00
sentry.client.config.ts feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
sentry.edge.config.ts feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
sentry.server.config.ts feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
tsconfig.json init 2026-04-25 13:45:19 +03:00
vitest-env.d.ts chore(frontend): add vitest runner + WKT parser unit tests 2026-06-07 16:46:27 +05:00
vitest.config.ts chore(frontend): add vitest runner + WKT parser unit tests 2026-06-07 16:46:27 +05:00
vitest.setup.ts chore(frontend): add vitest runner + WKT parser unit tests 2026-06-07 16:46:27 +05:00