feat(ptica): wire real КСИТ/height/zone/density into cockpit (frontend of #1843) #1849
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1849
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/ptica-real-ksit-frontend"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Фронт-часть оживления КСИТ (бэкенд — #1847). Читает реальный ПЗЗ-регламент из
nspd_zoningв ПТИЦА-cockpit.Что оживает
max_far, предельная высота ←max_height_m, этажность ←max_floors, коэф. застройки ←max_building_pct(%), зона ←regulation_zone_index(человеческое «Ж-2») / fallbackzone_code.max_far(реальная ёмкость); пятно = площадь ×max_building_pct/100; продаваемая — честная оценка (caption «без вычета МОП/паркинга»).maxFar = nspd_zoning.max_far ?? 3.5(finite/>0 guard), caption «регламент НСПД» когда реальный.Defensive (важно)
Бэкенд #1847 ещё не задеплоен → поля null/отсутствуют. Каждое чтение
nspd_zoning?.<field>+!= null→ те же «—»-плейсхолдеры, что и сейчас. Cockpit визуально не меняется, пока #1847 не выкатится, потом авто-зажигается. Никаких NaN/«null м²».Качество
max_building_pct— percent 0..100 (сверено с backend-парсером + тестами). КСИТ-density гейтится на обоих операндах (нет NaN при отсутствии площади). TS strict безany, NspdZoning +7 optional полей. tsc/lint/prettier ✅. code-reviewer ✅ APPROVE (адверсариально по NaN-в-недеплой-стейте + unit % — оба верны), 2 копи-нита закрыты.Связано: backend #1847, #1843 (Route 2), ПТИЦА #1831-1835. Post-deploy QA (rule 7) на участке с реальным max_far.
Read nspd_zoning.{max_far,max_height_m,max_floors,max_building_pct, regulation_zone_index,regulation_source} (backend PR #1847) into the urban scan-card, urban/buildability/potential drawers and the 3D massing КСИТ-target. Defensive: every read is optional-chained + != null guarded → identical "—" placeholders when fields absent, so the cockpit is unchanged until #1847 deploys, then auto-lights-up. КСИТ density = area × max_far; пятно = area × max_building_pct (percent 0..100, verified vs backend parser); sellable labeled estimate. 3D maxFar = nspd_zoning.max_far ?? 3.5 (finite/>0 guarded). NspdZoning type +7 optional fields. TS strict, no any.