gendesign/frontend
lekss361 6ecd7a9269 feat(#254,#114): custom POI UI + score breakdown stacked-bar viz
Task A (#254): Leaflet click-to-add custom POIs
- sessionId.ts: getOrCreateSessionId() from localStorage
- types/customPoi.ts: CustomPoi, CustomPoiCreate, CustomPoiUpdate
- hooks/useCustomPois.ts: useCustomPois / useAddCustomPoi / useUpdateCustomPoi / useDeleteCustomPoi (TanStack Query, X-Session-Id header)
- CustomPoiLayer.tsx: LayerGroup with CircleMarker (green/red/gray by weight), popup with edit/delete
- CustomPoiToggleButton.tsx: crosshair mode toggle button
- CustomPoiAddModal.tsx: modal form (name, 26 categories, weight -5..+5, notes)
- CustomPoiEditModal.tsx: same form for editing existing POI
- SiteMap.tsx: MapClickHandler (useMapEvents), integrated all custom POI components
- page.tsx: useCustomPois hook + passes customPois + parcelCad to SiteMap

Task B (#114): ScoreBreakdownStackedBar
- ScoreBreakdownStackedBar.tsx: horizontal stacked bar by category with positive/negative split, toggle between category and factor views, custom POIs highlighted orange with dashed outline
- OverviewTab.tsx: renders ScoreBreakdownStackedBar below ScoreBreakdownPanel

Requires backend PR with /api/v1/custom-pois endpoints merged before POI CRUD works.
2026-05-17 09:35:35 +03:00
..
public feat(docs): /docs/b2b-channels (rendered) + /docs/b2b-channels.md (raw) for sharing 2026-05-11 23:36:02 +03:00
src feat(#254,#114): custom POI UI + score breakdown stacked-bar viz 2026-05-17 09:35:35 +03: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(infra): wire GlitchTip DSNs (build-arg + env_file) + reject sentry.io promote 2026-05-16 21:48:28 +03: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 feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00:00
package.json feat(frontend): @sentry/nextjs init для GlitchTip (#204 frontend) (#208) 2026-05-16 15:09:38 +00: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