gendesign/backend/app/services/generative
bot-backend 0a018d201e
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 12s
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 2m8s
CI / backend-tests (pull_request) Successful in 15m0s
fix(generative): отклонять спроецированные координаты до pyproj CRSError (#2445-B1)
parcel_geojson со спроецированными координатами (МСК-66/UTM метры) проходил
синтаксическую валидацию Polygon, затем крашил _metric_transformers на
CRS.from_proj4 с lat_0 вне ±90° → необработанный CRSError → opaque 500.

Добавлен WGS84 bbox-check (_assert_wgs84_bounds) в parse_parcel ДО проекции
(root cause, понятное сообщение) + защитный CRSError → ParcelGeometryError
wrap в _metric_transformers. Существующий маппинг ParcelGeometryError → 422
в concepts.py срабатывает как задумано.

Refs #2445
2026-07-06 00:04:10 +05:00
..
exporters fix(generative): честные типы в dxf-экспортёре — strict mypy проходит (#2316) (#2319) 2026-07-03 21:40:48 +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): отклонять спроецированные координаты до pyproj CRSError (#2445-B1) 2026-07-06 00:04:10 +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