1fa99812af
fix(concept): §7 massing-сцена осознаёт весь MultiPolygon (соседи уезжали до 1.6км) ( #2180 ) ( #2463 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m35s
Deploy / deploy (push) Successful in 1m23s
2026-07-07 08:10:27 +00:00
de5da6ec35
fix(frontend): нейтральный fallback для gate/velocity enum-lookup (#2445-B2/B3) ( #2451 )
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Has been cancelled
2026-07-05 19:20:28 +00:00
ab250a132b
feat(site-finder): PermitsNearbyBlock — разрешения на строительство в §6 ( #2367 PR-2, frontend-half) ( #2403 )
Deploy / changes (push) Successful in 9s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m26s
Deploy / deploy (push) Successful in 1m21s
2026-07-04 10:24:48 +00:00
ae814706a2
feat(forecast-ui): confidence band на ForecastChart — качественный интервал уверенности ( #1926 ) ( #2368 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m10s
Deploy / deploy (push) Successful in 1m16s
2026-07-04 02:21:44 +00:00
38f703c8ec
fix(landing): Trade-In nav как внешний <a> на /trade-in/v2 (ChunkLoadError) ( #2365 )
Deploy / changes (push) Successful in 10s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m18s
Deploy / deploy (push) Successful in 1m20s
2026-07-04 01:10:57 +00:00
49304a78bc
feat(ptica/reports): DOCX-скачивание полного отчёта в UI ( #2259 R2) ( #2338 )
Deploy / changes (push) Successful in 8s
Deploy / build-frontend (push) Successful in 3m12s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / deploy (push) Successful in 1m19s
2026-07-03 22:40:11 +00:00
d6d4a1c94a
fix(site-finder): «Скачать отчёт» без пустых скобок на fast-path из кэша ( #2289 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m16s
Deploy / deploy (push) Successful in 1m18s
2026-07-03 11:32:04 +00:00
2f127c4316
feat(site-finder): кнопка «Полный отчёт (PDF)» ( #2259 PR-E, финал эпика) ( #2288 )
Deploy / changes (push) Successful in 9s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m28s
Deploy / deploy (push) Successful in 1m17s
2026-07-03 11:18:31 +00:00
8a42fba836
feat(site-finder): блок «Сети рядом с участком» в §3 (Фаза C2-UI) ( #2282 )
Deploy / changes (push) Successful in 9s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m22s
Deploy / deploy (push) Successful in 1m17s
2026-07-03 08:23:59 +00:00
21608eced1
fix(site-finder): три честности-фикса — B1 ГРС «выход №N» + околонуль + Росреестр-квартал ( #2257 )
Deploy / changes (push) Successful in 9s
Deploy / build-backend (push) Successful in 3m35s
Deploy / build-worker (push) Successful in 5m31s
Deploy / build-frontend (push) Successful in 7m23s
Deploy / deploy (push) Successful in 2m17s
2026-07-03 06:27:27 +00:00
e440209d91
feat(site-finder): «Пересчитать §7 с этой программой» из блока альтернатив ( #2181 хвост) ( #2256 )
Deploy / changes (push) Successful in 15s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 4m35s
Deploy / deploy (push) Successful in 1m28s
2026-07-03 06:11:58 +00:00
15757685c9
feat(site-finder): Celery + §3 точки выхода газосети ( #2119 B2, PR-4/4 — финал формы-6) ( #2251 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Successful in 2m17s
Deploy / build-worker (push) Successful in 3m19s
Deploy / build-frontend (push) Successful in 3m54s
Deploy / deploy (push) Successful in 1m34s
2026-07-03 04:26:41 +00:00
4b6d1cbc06
fix(report): авторетрай §7 с densify — «не вместила ни одной секции» больше не 422 при загрузке ( #2242 )
Deploy / build-frontend (push) Successful in 3m26s
Deploy / deploy (push) Successful in 1m29s
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
2026-07-03 00:31:25 +00:00
9cfefc0ca4
feat(site-finder): supply-only fallback в §4.2 — предложение без темпа продаж ( #2177 шаг 3) ( #2240 )
Deploy / changes (push) Successful in 6s
Deploy / build-backend (push) Successful in 1m48s
Deploy / build-worker (push) Failing after 1m54s
Deploy / build-frontend (push) Successful in 3m31s
Deploy / deploy (push) Has been skipped
2026-07-02 23:18:42 +00:00
ae483468c9
feat(site-finder): оптимизатор программ — «Как участок сходится» при отрицательном вердикте ( #2181 ) ( #2222 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Successful in 2m40s
Deploy / build-worker (push) Successful in 3m54s
Deploy / build-frontend (push) Successful in 4m55s
Deploy / deploy (push) Successful in 1m35s
2026-07-02 20:57:12 +00:00
b028377584
fix(best-layouts): покрытие §4.2 в комплексах, не в сырых obj_id ( #2177 , шаг 1/3) ( #2198 )
Deploy / changes (push) Successful in 10s
Deploy / build-backend (push) Successful in 2m51s
Deploy / build-worker (push) Successful in 4m5s
Deploy / build-frontend (push) Successful in 5m8s
Deploy / deploy (push) Successful in 1m37s
2026-07-02 19:34:11 +00:00
a7ad1764c1
feat(concept): 3D-макет окружения — соседние здания из кадастра в §7 ( #2180 ) ( #2210 )
Deploy / build-frontend (push) Has been cancelled
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
2026-07-02 19:33:44 +00:00
a3db6e4158
feat(site-finder): §4.3 тренд из цен предложения Объектива при устаревших сделках ( #2178 ) ( #2190 )
Deploy / changes (push) Successful in 5s
Deploy / deploy (push) Blocked by required conditions
Deploy / build-worker (push) Has been cancelled
Deploy / build-frontend (push) Has been cancelled
Deploy / build-backend (push) Has been cancelled
2026-07-02 18:33:16 +00:00
b5f8f7b437
feat(report): §7 открыт по умолчанию + выделение участка на подложке + шире карта ( #2179 ) ( #2183 )
Deploy / deploy (push) Blocked by required conditions
Deploy / build-backend (push) Has been skipped
Deploy / changes (push) Successful in 6s
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Has been cancelled
2026-07-02 17:52:21 +00:00
e501dedf78
feat(site-finder): ЕЭСК-резервы городских ПС/ТП + тепло из ФГИС ФАС ( #2119 B2) ( #2165 )
Deploy / build-frontend (push) Successful in 4m38s
Deploy / deploy (push) Successful in 1m37s
Deploy / build-backend (push) Successful in 2m48s
Deploy / build-worker (push) Successful in 3m59s
Deploy / changes (push) Successful in 9s
2026-07-02 16:44:57 +00:00
5839680998
feat(site-finder): газ — свободная мощность ГРС + пометка ЕЭСК в §3 ( #2119 Фаза B1) ( #2123 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 2m2s
Deploy / build-worker (push) Successful in 3m17s
Deploy / build-frontend (push) Successful in 3m57s
Deploy / deploy (push) Successful in 1m31s
2026-07-02 12:54:05 +00:00
2bb3ceb9de
fix(site-finder): секции отчёта изначально раскрыты («Свернуть» для компакта) ( #2122 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m20s
Deploy / deploy (push) Successful in 1m16s
2026-07-02 10:43:32 +00:00
4758ea5e2b
feat(site-finder): резервы мощности для ТП — электро+вода на карте §3 ( #2119 Фаза A) ( #2120 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 2m16s
Deploy / build-worker (push) Successful in 3m27s
Deploy / build-frontend (push) Successful in 3m47s
Deploy / deploy (push) Successful in 1m30s
2026-07-02 08:36:51 +00:00
4a7ce91db1
fix(site-finder): §4.3 график «По кварталам» — бары вылезали за край карточки ( #2118 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / deploy (push) Successful in 1m12s
Deploy / build-frontend (push) Successful in 3m14s
2026-06-30 17:15:56 +00:00
babb2a3473
fix(site-finder): §4.3 — укомпановать 3 колонки в единообразные карточки ( #2117 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m28s
Deploy / deploy (push) Successful in 1m15s
2026-06-30 16:51:52 +00:00
e52dc47067
feat(site-finder): прогрессивное раскрытие секций отчёта §1–§6 («Раскрыть всё») ( #2116 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m34s
Deploy / deploy (push) Successful in 1m22s
2026-06-30 15:31:33 +00:00
663f04b777
fix(site-finder): попап конкурента — NUMERIC-поля приходят строкой (цена/площадь не рендерились) ( #2114 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m58s
Deploy / deploy (push) Successful in 1m22s
2026-06-30 14:01:00 +00:00
02b5f0b5d1
feat(site-finder): max-info попапы — конкурент / §3-таблица / польз.точка / соседи ( #2111 ) ( #2113 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 2m26s
Deploy / build-worker (push) Successful in 3m41s
Deploy / deploy (push) Successful in 1m30s
Deploy / build-frontend (push) Successful in 4m2s
2026-06-30 13:45:43 +00:00
6d6e0ce0ca
feat(site-finder): §3 «Сети и точки подключения» — попапы показывают характеристики ( #2111 ) ( #2112 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 2m2s
Deploy / build-worker (push) Successful in 3m29s
Deploy / build-frontend (push) Successful in 3m44s
Deploy / deploy (push) Successful in 1m30s
2026-06-30 13:16:07 +00:00
b024864518
feat(site-finder): §1 POI-точки карты показывают максимум информации ( #2110 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 2m3s
Deploy / build-worker (push) Successful in 3m15s
Deploy / build-frontend (push) Successful in 3m51s
Deploy / deploy (push) Successful in 1m27s
2026-06-30 12:42:13 +00:00
daf4ebefc2
feat(concept): 3D-масса корпусов на карте с тенями (§7) ( #1953 ) ( #2109 )
Deploy / deploy (push) Successful in 1m14s
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m35s
2026-06-30 11:58:47 +00:00
53cfd3c3b8
feat(networks): человеко-язык типов §3 + реальные имена НСПД-точек ( #1953 ) ( #2107 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Successful in 1m55s
Deploy / build-worker (push) Successful in 3m4s
Deploy / build-frontend (push) Successful in 3m35s
Deploy / deploy (push) Successful in 1m31s
2026-06-30 11:34:29 +00:00
4ffda3299c
fix(report): §4.3 выравнивание колонок (уплыло) + двойная точка в вердикте ( #1953 ) ( #2108 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m24s
Deploy / deploy (push) Successful in 1m15s
2026-06-30 11:29:33 +00:00
02f49e795c
feat(report): nav scrollspy + offset-jump, чат в плавающее окно справа ( #958 ) ( #2104 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m20s
Deploy / deploy (push) Successful in 1m16s
2026-06-30 10:29:02 +00:00
de4704f6cd
fix(concept): step="any" — stepMismatch блокировал submit «Рассчитать концепцию» ( #1953 ) ( #2103 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m8s
Deploy / deploy (push) Successful in 1m16s
2026-06-30 10:09:55 +00:00
975c400536
feat(section7): editable section footprint + корпус plural/program hint ( #1953 ) ( #2102 )
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Successful in 1m57s
Deploy / build-frontend (push) Successful in 3m34s
Deploy / build-worker (push) Successful in 3m41s
Deploy / deploy (push) Successful in 1m32s
2026-06-30 09:48:11 +00:00
e359fb4b95
feat(section7): unify «Концепция» into one engine driven by building_program ( #1953 ) ( #2101 )
Deploy / deploy (push) Successful in 1m14s
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m13s
2026-06-30 08:35:55 +00:00
5f84008cb3
fix(site-finder): §4.2 «Качество данных» — inline-стили (Tailwind flex/gap не применяется) ( #1953 ) ( #2100 )
Deploy / build-frontend (push) Successful in 3m28s
Deploy / changes (push) Successful in 9s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / deploy (push) Successful in 1m15s
2026-06-30 07:33:11 +00:00
005ce2f4ad
fix(site-finder): §4.2 «Качество данных» — воздух вокруг разделителя ( #1953 ) ( #2099 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m22s
Deploy / deploy (push) Successful in 1m19s
2026-06-30 07:13:16 +00:00
f448b550b5
feat(site-finder): §7 «Концепция» — методики + синхронизация подписей ( #1953 , batch D) ( #2098 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m30s
Deploy / deploy (push) Successful in 1m14s
2026-06-29 12:24:21 +00:00
d9915c7834
fix(site-finder): unify §3 «Сети» table↔map source + enrich popups ( #1953 , batch C) ( #2097 )
Deploy / build-backend (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m4s
Deploy / changes (push) Successful in 7s
Deploy / build-worker (push) Has been skipped
Deploy / deploy (push) Successful in 1m21s
2026-06-29 11:56:11 +00:00
1337fadb49
fix(forecast): §6 honesty layer — pegged deficit, non-residential caveat, segment/pipeline note ( #1953 ) ( #2096 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m21s
Deploy / deploy (push) Successful in 1m14s
2026-06-29 11:26:35 +00:00
86f0797499
fix(site-finder): report microcopy batch A — gate titles, breadcrumb area, §4.2/4.3 ( #1953 ) ( #2095 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m8s
Deploy / deploy (push) Successful in 1m19s
2026-06-29 08:29:34 +00:00
a35d42f1c7
fix(site-finder): invest-score advisory flag + velocity data-honesty + h1 a11y ( #1926 ) ( #2094 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Successful in 5m22s
Deploy / build-frontend (push) Successful in 6m11s
Deploy / build-worker (push) Successful in 7m53s
Deploy / deploy (push) Successful in 2m23s
2026-06-29 06:42:50 +00:00
fcb85deab8
refactor(tradein/v2): перенос HUD v2 в tradein-mvp frontend
...
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m3s
CI / openapi-codegen-check (pull_request) Successful in 1m59s
Прод-/trade-in/* обслуживает tradein-mvp/frontend (basePath=/trade-in,
standalone), а не главный frontend — v2 по ошибке попал в главный, где
прод его не отдаёт. Markup-only порт (fixtures, без API):
- компоненты v2 → tradein-mvp/frontend/src/components/trade-in/v2/
- роут src/app/v2/ (basePath даёт прод-URL /trade-in/v2)
- public/trade-in-v2/building.png
- HeroBar: <img> → next/image (плоский img не префиксит basePath → 404)
- удалён мёртвый v2 из главного frontend
next build (NEXT_PUBLIC_BASE_PATH=/trade-in) зелёный, роут /v2 prerendered.
2026-06-28 13:10:23 +03:00
fba41c0cce
feat(tradein/v2): HUD-редизайн страницы оценки (Макс) → /trade-in/v2 ( #2035 )
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 3m22s
Deploy / deploy (push) Successful in 1m20s
2026-06-28 09:58:53 +00:00
8aec625134
fix(audit): index for flats_latest, coerce max_height_m, hide empty reg-date ( #1953 )
...
CI / changes (pull_request) Successful in 8s
CI / frontend-tests (pull_request) Successful in 1m2s
CI / openapi-codegen-check (pull_request) Successful in 1m56s
CI / backend-tests (pull_request) Successful in 14m7s
Three #1953 audit follow-ups:
- perf: add migration 174 — composite index idx_kn_flats_obj_snap on
domrf_kn_flats (obj_id, snapshot_date DESC). Serves the #1956 flats_latest
CTE in best_layouts.py (DISTINCT ON (obj_id) ORDER BY obj_id, snapshot_date
DESC + self-join on (obj_id, snapshot_date)); previously only (obj_id)
existed so Postgres sorted per object. Prod: 789 569 rows, idx ~5.7 MB,
dry-run instant. Idempotent, self-wrapped BEGIN/COMMIT.
- frontend: route every max_height_m read through coerceFloat (same string-bug
class as max_far #1962 ). max_height_m is NUMERIC → arrives as a string on the
wire; ptica-adapt.ts read it raw at 4 sites and relied on formatInt/Math.round
coercion. Widen the type in nspd.ts and fix the stale "real number" comment in
nspd-regulation.ts.
- frontend: hide the «Дата регистрации» EGRN row entirely when
registration_date is null (~97% of parcels) instead of rendering a bare «—».
2026-06-28 03:19:18 +05:00
c55eb4f4d4
feat(concept): фронт-пикер типовых домов ( #1965 Stage 3b)
...
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Successful in 1m1s
CI / openapi-codegen-check (pull_request) Successful in 1m55s
CI / backend-tests (pull_request) Successful in 14m9s
Финальная часть эпика #1953 : пользователь выбирает типовые дома
(тип × этажность × число секций) вместо авто max-FAR раскладки, формируя
building_program из Stage 3a.
Бэкенд:
- GET /api/v1/concepts/house-types — read-only каталог HOUSE_TYPES
(section_type, label_ru, footprint w×d + sqm, default_floors, housing_class)
как single source of truth; фронт ничего не хардкодит.
- Схема HouseTypeCatalog / HouseTypeCatalogItem в schemas/concept.py.
- Тесты эндпоинта: полнота каталога + совпадение ключей с available_section_types.
Кодген: api-types.ts перегенерён (dump OpenAPI → openapi-typescript →
project-local prettier 3.9.0); 2-й прогон без диффа.
Фронтенд:
- useHouseTypes() (TanStack useQuery, staleTime Infinity) в concept-api.ts;
building_program в ConceptInput, placed_count/requested_count в ConceptVariant.
- HouseProgramPicker: toggle «Авто (max-FAR)» (default, program omit → greedy)
vs «Выбрать дома» (список каталожных типов, count 1-50 / floors 1-40, дефолт
из каталога; габариты/этажность/класс как подсказка). Смонтирован в
Section7Concept и на странице /concept.
- Partial-fit заметка в ConceptVariantsResult: при placed<requested честное
«Разместилось N из M секций — участок вмещает меньше» (нейтрально, не ошибка).
2026-06-28 02:49:44 +05:00
a0232e22f1
feat(concept): live 3D massing → financial recompute in «7. Концепция» ( #1965 Stage 2b)
...
CI / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m1s
CI / openapi-codegen-check (pull_request) Successful in 1m54s
Wire the interactive 3D massing to a LIVE financial recompute inside the
Section «7. Концепция» of the light analysis report (epic #1953 ).
- concept-api.ts: add MassingProgram / MassingRecomputeOutput contracts +
useRecomputeMassing() (POST /api/v1/concepts/recompute via shared apiFetch),
and polygonCentroidWkt() helper for the DB-price fallback hint.
- MassingScene.tsx: export MassingModel + add optional onModelChange prop fired
on the initial build and every floors/sections change (NOT on the sun/hour
slider). No-op when absent — /ptica cockpit + preview/drawer unchanged.
- MassingEconomics.tsx (new): light-token KPI strip rendering recomputed ТЭП
(GFA, продаваемая, квартиры, КСИТ факт/цель) + финмодель (выручка,
себестоимость, прибыль, ROI, NPV, IRR, цена). Debounced ~250ms, latest-wins
via monotonic request id, last-good values + subtle note on error, grey-fade
skeleton on first load, КСИТ over-cap flag.
- Section7Concept.tsx: mount lazy MassingViewer (dynamic ssr:false) + the
economics strip; map computeModel → MassingProgram (footprint/floors/sections
← model; site area ← polygon; class/type ← financial_estimate inferred,
fallback comfort/mid_rise; land ← egrn cadastral; price/source ←
financial_estimate; КСИТ-цель ← coerced nspd_zoning.max_far, fallback 3.5).
2026-06-28 01:01:53 +05:00
e809063ca3
feat(site-finder): add «7. Концепция» section to light analysis report
...
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
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.
2026-06-28 00:13:57 +05:00