gendesign/backend/app/services/generative
bot-backend 22526aa331
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m7s
CI / backend-tests (pull_request) Successful in 14m41s
fix(generative): parse MultiPolygon parcels by largest contour (#2295)
_parse_polygon бросал ParcelGeometryError на MultiPolygon → POST /concepts
отдавал 422 на многоконтурных участках (интерактивный §7 «Пересчитать»
не работал; таких участков в ЕГРН немало — подвид «Многоконтурный»).
Нормализуем в одном месте: крупнейший контур max(geoms, key=area) —
паттерн, который буфер-стадия ниже уже использует; сравнение площадей
в градусах на этом этапе монотонно (один масштаб-фактор на участок),
итоговые площади считаются после репроекции. Пустой MultiPolygon и
прочие не-Polygon типы падают как раньше. Polygon-путь байт-в-байт
(тест эквивалентности single-contour MultiPolygon == Polygon, 1e-9).

Refs #2295
2026-07-04 01:56:58 +05:00
..
exporters feat(financial): ground-floor нежилое (office/commercial) tranche 2026-06-25 11:40:01 +00:00
__init__.py feat(generative): движок концепций Stage 1a/1b/1c (#54 #55 #56) 2026-06-13 21:32:32 +05:00
catalog.py feat(concept): house-type catalog + program-driven placement (#1965 Stage 3a) 2026-06-28 01:29:04 +05:00
financial.py feat(financial/dcf): dormant separate-index inflation capability (default OFF) 2026-06-25 12:12:02 +00:00
geometry.py fix(generative): parse MultiPolygon parcels by largest contour (#2295) 2026-07-04 01:56:58 +05:00
placement.py feat(section7): editable section footprint + корпус plural/program hint (#1953) (#2102) 2026-06-30 09:48:11 +00:00
teap.py feat(generative): LIVE financial recompute from massing program (#1965 Stage 2a) 2026-06-28 00:27:25 +05:00