feat(site-finder): «7. Концепция» в light-отчёте — Stage 1 #1965 #2023

Merged
bot-backend merged 1 commit from feat/concept-section-1965-stage1 into main 2026-06-27 19:22:13 +00:00
Collaborator

#1965 Stage 1 (эпик #1953) — консолидация генеративной Концепции в light-отчёт. Фронт-онли, без backend/миграций. code-reviewer APPROVE.

Что

Новая секция «7. Концепция» в light-отчёте (/site-finder/analysis/{cad}, после «6. Прогноз») — рендерит существующий генератор концепций (3 стратегии: карта размещения + ТЭП + финмодель) БЕЗ повторного ввода кадастра/полигона.

  • NEW Section7Concept.tsx — реюз ConceptParamsForm/ConceptVariantsResult/concept-api (extractPolygon/useCreateConcept) как есть, ничего не дублируется.
  • AnalysisPageContent.tsx — монтаж после Section6 + nav-пункт «7. Концепция» (section-7, scrollMarginTop как у Section6).
  • Вход из ответа /analyze: полигон ← geom_geojson (extractPolygon, Polygon/MultiPolygon/null); дефолты ← financial_estimate.housing_class_inferred/development_type_inferred (narrow к enum, fallback DEFAULT_PARAMS), land_cost_rubegrn.cadastral_value_rub.
  • СЗЗ/null-финмодель: честный баннер «финмодель по регламенту недоступна», но форма + «Рассчитать концепции» рабочие (/concepts независим от gate).
  • On-demand (кнопка, не на mount); тяжёлый результат (Leaflet) lazy-mount dynamic(ssr:false); секция <details> свёрнута по умолчанию (above-the-fold). Только light-токены.

Качество

  • tsc clean; next lint clean; prettier 3.9.0 clean. Без backend/contract-изменений. Reviewer проверил все поля против реальных типов + enum-narrow + null-safe.

Stage 2 (следующий PR): интерактивный 3D MassingScene в этой секции + backend POST /concepts/recompute (compute_financial по building-program) → живой пересчёт TEAP/NPV/IRR при кручении ползунков. Refs #1965.

#1965 Stage 1 (эпик #1953) — консолидация генеративной Концепции в light-отчёт. Фронт-онли, без backend/миграций. code-reviewer ✅ APPROVE. ## Что Новая секция **«7. Концепция»** в light-отчёте (`/site-finder/analysis/{cad}`, после «6. Прогноз») — рендерит существующий генератор концепций (3 стратегии: карта размещения + ТЭП + финмодель) БЕЗ повторного ввода кадастра/полигона. - **NEW** `Section7Concept.tsx` — реюз `ConceptParamsForm`/`ConceptVariantsResult`/`concept-api` (`extractPolygon`/`useCreateConcept`) как есть, ничего не дублируется. - `AnalysisPageContent.tsx` — монтаж после Section6 + nav-пункт «7. Концепция» (`section-7`, scrollMarginTop как у Section6). - Вход из ответа /analyze: полигон ← `geom_geojson` (extractPolygon, Polygon/MultiPolygon/null); дефолты ← `financial_estimate.housing_class_inferred`/`development_type_inferred` (narrow к enum, fallback DEFAULT_PARAMS), `land_cost_rub` ← `egrn.cadastral_value_rub`. - **СЗЗ/null-финмодель:** честный баннер «финмодель по регламенту недоступна», но форма + «Рассчитать концепции» рабочие (/concepts независим от gate). - On-demand (кнопка, не на mount); тяжёлый результат (Leaflet) lazy-mount `dynamic(ssr:false)`; секция `<details>` свёрнута по умолчанию (above-the-fold). Только light-токены. ## Качество - tsc clean; next lint clean; prettier 3.9.0 clean. Без backend/contract-изменений. Reviewer проверил все поля против реальных типов + enum-narrow + null-safe. Stage 2 (следующий PR): интерактивный 3D `MassingScene` в этой секции + backend `POST /concepts/recompute` (`compute_financial` по building-program) → живой пересчёт TEAP/NPV/IRR при кручении ползунков. Refs #1965.
bot-backend added 1 commit 2026-06-27 19:19:20 +00:00
feat(site-finder): add «7. Концепция» section to light analysis report
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 58s
CI / openapi-codegen-check (pull_request) Successful in 1m58s
e809063ca3
Fold the generative concept generator (3 strategy variants: placement map +
ТЭП + finance) into the light analysis report (/site-finder/analysis/{cad}) as
a new section after «6. Прогноз», so Концепция lives in one place alongside the
report instead of a separate flow (epic #1953, #1965 Stage 1).

Frontend-only: reuses ConceptParamsForm / ConceptVariantsResult and the
/concepts mutation (useCreateConcept) as-is — no duplication, no backend change.
Inputs are seeded from the analysis the report already has (no re-entry of the
cadastre/polygon): polygon ← extractPolygon(geom_geojson); housing_class /
development_type ← financial_estimate inferred values; land_cost ←
egrn.cadastral_value_rub; falls back to comfort/mid_rise.

Runs on demand (heavy generative call — never auto on mount); result block
(Leaflet map) is lazy-mounted via dynamic({ ssr: false }) and the section is
collapsed by default. When financial_estimate is null (ЗОУИТ/СЗЗ/нет зоны) it
shows an honest banner but still allows a manual run, since /concepts is
independent of the financial_estimate gate. Graceful empty state when geometry
is missing/unsupported. Stage 2 (interactive 3D + /concepts/recompute) left as
a seam, not built.
bot-backend merged commit fed33fce27 into main 2026-06-27 19:22:13 +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#2023
No description provided.