feat(site-finder): ПТИЦА dark cockpit — increment 1 (shell + hero + Development Scan) #1831

Merged
lekss361 merged 1 commit from feat/ptica-cockpit-pr1 into main 2026-06-20 12:32:56 +00:00
Collaborator

Что

Новый недеструктивный роут /site-finder/analysis/[cad]/ptica — рендер существующих данных /analyze в дизайне «ПТИЦА» (операторский cockpit). Первый инкремент порта статического прототипа (ptica-redesign/) в боевой фронт.

Живая страница не тронута: AnalysisPageContent.tsx, Section1-6, globals.css, package.json/lockfile — без изменений (проверено: 15 новых ptica-файлов + аддитивная правка layout.tsx для шрифта).

Scope PR#1

  • App-shell: липкий топбар (ПТИЦА + 4 вкладки) + левый рельс (якорная навигация + mono-часы). Только вкладка «Анализ» с контентом; остальные — панель «В разработке».
  • Hero: тёмная Leaflet-карта участка + паспорт (KV-grid ЕГРН/НСПД) + Buildability radial-gauge + блок инвест-скора.
  • Development Scan: сетка карточек (Градостроительство / Ограничения / Инженерия / Рынок / Экономика / Риски / Среда + ОКС).

Честность данных (ключевое)

Привязано к реальному useParcelAnalyzeQueryParcelAnalysis, через типизированный ptica-adapt.ts ({value, isReal, caption}):

  • РЕАЛ: паспорт (egrn.*, district), utilities.summary (инженерия), district.median_price_per_m2, pipeline_24mo.objects_count, ЗОУИТ-count.
  • ЗАГЛУШКА (muted «—» + caption, НЕ фейк-цифры): buildability/risk gauges = производный прокси от gate_verdict+geometry_suitability («предв.»); invest/buy-signal («после прогноза»); КСИТ/высота (нужен НСПД-зонинг), ОКС, поглощение/спрос, маржа.

Технически

  • Тема — CSS-module, scoped под .pticaRoot[data-theme=dark]не утекает в светлое приложение. IBM Plex Mono через next/font (без новых зависимостей/lockfile).
  • Leafletdynamic(ssr:false). TS strict, без any. tsc --noEmit , lint , prettier .

⚠️ Осознанный override

Тёмная ПТИЦА-поверхность противоречит ui-tokens.md/ui-conventions.md (светлый DOM.РФ, без dark mode). Это намеренное исключение только для роута /ptica (новая дизайн-линия ПТИЦА), не затрагивает остальное приложение. Прошу ратифицировать как принятое.

Ревью

2 раунда code-reviewer: после фикса (был баг — голые CSS-module классы не применялись, исправлено на styles.*). Non-destructive / theme-scoping / SSR-safety / data-honesty — подтверждены.

Визуальное QA

Страница за auth-gate + клиентский рендер → пиксель-проверка на деплое (Caddy+backend). Прототип, с которого порт, визуально сверен 1:1.

Дальше (отдельными PR)

  • PR#2 «ПТИЦА — Scenarios» (useParcelForecastQuery/§22, переиспользование ForecastHorizonsBlock/ScenariosBlock)
  • PR#3 «ПТИЦА — Reports + Compare»
  • PR#4 «ПТИЦА — 16 detail drawers» (правый слайдер)
  • PR#5 «ПТИЦА — 3D-масса» (three, dynamic ssr:false, порт massing.js)
## Что Новый **недеструктивный** роут `/site-finder/analysis/[cad]/ptica` — рендер существующих данных `/analyze` в дизайне «ПТИЦА» (операторский cockpit). Первый инкремент порта статического прототипа (`ptica-redesign/`) в боевой фронт. **Живая страница не тронута:** `AnalysisPageContent.tsx`, `Section1-6`, `globals.css`, `package.json`/lockfile — без изменений (проверено: 15 новых ptica-файлов + аддитивная правка `layout.tsx` для шрифта). ## Scope PR#1 - **App-shell**: липкий топбар (ПТИЦА + 4 вкладки) + левый рельс (якорная навигация + mono-часы). Только вкладка «Анализ» с контентом; остальные — панель «В разработке». - **Hero**: тёмная Leaflet-карта участка + паспорт (KV-grid ЕГРН/НСПД) + Buildability radial-gauge + блок инвест-скора. - **Development Scan**: сетка карточек (Градостроительство / Ограничения / Инженерия / Рынок / Экономика / Риски / Среда + ОКС). ## Честность данных (ключевое) Привязано к реальному `useParcelAnalyzeQuery` → `ParcelAnalysis`, через типизированный `ptica-adapt.ts` (`{value, isReal, caption}`): - **РЕАЛ**: паспорт (`egrn.*`, `district`), `utilities.summary` (инженерия), `district.median_price_per_m2`, `pipeline_24mo.objects_count`, ЗОУИТ-count. - **ЗАГЛУШКА** (muted «—» + caption, НЕ фейк-цифры): buildability/risk gauges = производный прокси от `gate_verdict`+`geometry_suitability` («предв.»); invest/buy-signal («после прогноза»); КСИТ/высота (нужен НСПД-зонинг), ОКС, поглощение/спрос, маржа. ## Технически - **Тема** — CSS-module, scoped под `.pticaRoot[data-theme=dark]` → **не утекает** в светлое приложение. IBM Plex Mono через `next/font` (без новых зависимостей/lockfile). - **Leaflet** — `dynamic(ssr:false)`. **TS strict, без `any`**. `tsc --noEmit` ✅, `lint` ✅, prettier ✅. ## ⚠️ Осознанный override Тёмная ПТИЦА-поверхность противоречит `ui-tokens.md`/`ui-conventions.md` (светлый DOM.РФ, без dark mode). Это **намеренное исключение только для роута `/ptica`** (новая дизайн-линия ПТИЦА), не затрагивает остальное приложение. Прошу ратифицировать как принятое. ## Ревью 2 раунда code-reviewer: ✅ после фикса (был баг — голые CSS-module классы не применялись, исправлено на `styles.*`). Non-destructive / theme-scoping / SSR-safety / data-honesty — подтверждены. ## Визуальное QA Страница за auth-gate + клиентский рендер → пиксель-проверка на деплое (Caddy+backend). Прототип, с которого порт, визуально сверен 1:1. ## Дальше (отдельными PR) - PR#2 «ПТИЦА — Scenarios» (`useParcelForecastQuery`/§22, переиспользование ForecastHorizonsBlock/ScenariosBlock) - PR#3 «ПТИЦА — Reports + Compare» - PR#4 «ПТИЦА — 16 detail drawers» (правый слайдер) - PR#5 «ПТИЦА — 3D-масса» (`three`, dynamic ssr:false, порт massing.js)
bot-backend added 1 commit 2026-06-20 10:30:31 +00:00
feat(site-finder): ПТИЦА dark cockpit — increment 1 (shell + hero + Development Scan)
All checks were successful
CI / changes (pull_request) Successful in 5s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 55s
CI / openapi-codegen-check (pull_request) Successful in 1m57s
05eb70eb62
New non-destructive route /site-finder/analysis/[cad]/ptica rendering the existing
/analyze data in the «ПТИЦА» operator-terminal cockpit. The light analysis page,
Section1-6, globals.css and package.json are untouched.

PR#1 scope: app-shell (topbar + 4 tabs + left rail), hero (dark Leaflet map +
parcel passport KV-grid + Buildability radial gauge + invest-score block), and the
Development Scan card grid — wired to useParcelAnalyzeQuery / ParcelAnalysis.

Data honesty: real fields render live (passport egrn.*, district, utilities.summary,
median_price, pipeline_24mo); absent fields show muted placeholders with source
captions (buildability/risk = derived proxy «предв.»; invest/buy-signal «после
прогноза»; КСИТ/height/ОКС/economy «—») via typed ptica-adapt.ts — no fake numbers
presented as live.

Dark theme is a CSS-module scoped under .pticaRoot[data-theme=dark] (cannot leak to
the light app); IBM Plex Mono added via next/font (no dep/lockfile change). Leaflet
via dynamic(ssr:false). TS strict, no any. Deferred to follow-up PRs: Scenarios
(forecast), Reports+Compare tabs, 16 detail drawers, Three.js 3D massing.
lekss361 merged commit 47187fe4f3 into main 2026-06-20 12:32:56 +00:00
lekss361 deleted branch feat/ptica-cockpit-pr1 2026-06-20 12:32:57 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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#1831
No description provided.