feat(ptica): detail drawer system + 17 drawers [PR#4] #1834

Merged
lekss361 merged 1 commit from feat/ptica-cockpit-pr4-drawers into main 2026-06-20 12:33:38 +00:00
Collaborator

Стэкнут на #1833 (база feat/ptica-cockpit-pr3-reports-compare) — диф только дельта инкремента 4.

Drawer-система

PticaDrawer — правый слайдер 480px (full-screen <768): scrim+Esc-close, focus-on-open, body-scroll-lock (восстанавливается на close/unmount), role=dialog+aria-modal. Deep-link ?drawer= через useSearchParams + shallow router.replace (без render-loop, неизвестные ключи игнорируются). Кнопки «Подробнее» на scan/hero-карточках теперь открывают drawer'ы.

17 drawer'ов (REAL-first)

Реальные данные из ParcelAnalysis/forecast: среда (шум/AQI/ветер/погода), геориски (геология/гидрология/геотех), рынок (4 под-вкладки: конкуренты/планировки/скорость/тренд — competitors/market_trend/velocity/pipeline_24mo), ограничения (ЗОУИТ/красные линии/зонирование), инженерия, паспорт, продукт (product_tz из forecast).
Честные заглушки (нет в backend): КСИТ/высота («НСПД-зонинг»), ёмкость, ОКС («нет данных»), экономика/финмодель, инсоляция/3D («скоро») — через ptica-adapt (real()/notReal()).

Качество

Все field-paths сверены с типами. Тема scoped .pticaRoot[data-theme=dark]. TS strict без any. tsc/lint/prettier . code-reviewer APPROVE — был адверсариальным по scroll-lock leak / deep-link render-loop / выдуманным полям, все чисты. Известный follow-up (не блокер): focus-trap/restore для полной modal-a11y.

Дальше: PR#5 «3D-масса застройки» (Three.js, +зависимость three с regen lockfile).

**Стэкнут на #1833** (база `feat/ptica-cockpit-pr3-reports-compare`) — диф только дельта инкремента 4. ## Drawer-система `PticaDrawer` — правый слайдер 480px (full-screen <768): scrim+Esc-close, focus-on-open, body-scroll-lock (восстанавливается на close/unmount), `role=dialog`+`aria-modal`. **Deep-link `?drawer=`** через `useSearchParams` + shallow `router.replace` (без render-loop, неизвестные ключи игнорируются). Кнопки «Подробнее» на scan/hero-карточках теперь **открывают drawer'ы**. ## 17 drawer'ов (REAL-first) **Реальные данные** из `ParcelAnalysis`/forecast: **среда** (шум/AQI/ветер/погода), **геориски** (геология/гидрология/геотех), **рынок** (4 под-вкладки: конкуренты/планировки/скорость/тренд — `competitors`/`market_trend`/`velocity`/`pipeline_24mo`), **ограничения** (ЗОУИТ/красные линии/зонирование), **инженерия**, **паспорт**, **продукт** (`product_tz` из forecast). **Честные заглушки** (нет в backend): КСИТ/высота («НСПД-зонинг»), ёмкость, ОКС («нет данных»), экономика/финмодель, инсоляция/3D («скоро») — через `ptica-adapt` (`real()`/`notReal()`). ## Качество Все field-paths сверены с типами. Тема scoped `.pticaRoot[data-theme=dark]`. TS strict без `any`. tsc/lint/prettier ✅. **code-reviewer ✅ APPROVE** — был адверсариальным по scroll-lock leak / deep-link render-loop / выдуманным полям, все чисты. Известный follow-up (не блокер): focus-trap/restore для полной modal-a11y. Дальше: PR#5 «3D-масса застройки» (Three.js, +зависимость `three` с regen lockfile).
bot-backend added 1 commit 2026-06-20 11:16:44 +00:00
PticaDrawer: controlled right slider (480px / full-screen <768), scrim+Esc
close, focus-on-open, body-scroll-lock (restored on close/unmount), dialog
a11y. Deep-link ?drawer= via useSearchParams + shallow router.replace (no
render loop; unknown keys ignored). Enables the «Подробнее» buttons on scan
+ hero cards.

17 drawer contents (passport/buildability/urban/restrictions/engineering/
market[4 sub-tabs]/economy/risks/georisks/oks/potential/product/finance/legal/
environment/insolation/future3d) built from ParcelAnalysis + forecast product_tz.
Many are REAL: environment (noise/air_quality/wind/weather), georisks (geology/
hydrology/geotech_risk), market (competitors/market_trend/velocity/pipeline),
restrictions (zouit/red_lines/zoning), engineering, passport. Absent fields
(КСИТ/ОКС/финмодель/insolation) show honest «—»/«скоро» via ptica-adapt.

All field paths verified against types. Dark theme scoped. TS strict, no any.
Follow-up: drawer focus-trap + focus-restore for full modal a11y.
lekss361 changed target branch from feat/ptica-cockpit-pr3-reports-compare to main 2026-06-20 12:33:19 +00:00
lekss361 merged commit f6922e5527 into main 2026-06-20 12:33:38 +00:00
lekss361 deleted branch feat/ptica-cockpit-pr4-drawers 2026-06-20 12:33:39 +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#1834
No description provided.