Light report (Section1ParcelInfo) only rendered the dead top-level zoning.data_available=false (closed-PKK6 path) and never showed the resolved nspd_zoning, so the resolved regulation (synth #1891) was invisible to the user («мы выгружали НСПД — где они?»). - Add «Градрегламент (НСПД)»-card to Раздел 1 (right column, под ЕГРН): тер.зона, КСИТ/max_far, пред. высота, этажность, коэф. застройки, КСИТ-ёмкость/пятно (от площади ЕГРН), источник + список разрешённых ВРИ зоны. Empty-state когда регламент не определён (gap-зоны / не-ЕКБ). КСИТ-microcopy расшифровывает жаргон на первой странице. - New pure mapper adaptNspdRegulation (nspd-regulation.ts) reused by ptica-adapt so light report и /ptica остаются consistent. - coerceFloat: max_far/max_building_pct приходят с провода СТРОКАМИ ("2.4"/"80") — фикс латентного бага cockpit'а (typeof===number глушил реальный строковый КСИТ в massing/insolation). - Widen NspdZoning.max_far/max_building_pct to string|number, add main_vri; expose nspd_zoning on ParcelAnalyzeResponse. - Unit test для field-mapping + coercion + empty-state. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .eslintrc.json | ||
| Dockerfile | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| sentry.client.config.ts | ||
| sentry.edge.config.ts | ||
| sentry.server.config.ts | ||
| tsconfig.json | ||
| vitest-env.d.ts | ||
| vitest.config.ts | ||
| vitest.setup.ts | ||