fix(concept): §7 massing-сцена осознаёт весь MultiPolygon (соседи уезжали до 1.6км) (#2180) #2463
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2463
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/massing-multipolygon-whole-parcel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Симптом
На §7 «Размещение застройки» (3D «Объём» / 2D «План») соседние здания рендерились грубо смещёнными относительно участка и OSM-подложки — для многочастных кадастровых участков (скриншот-репорт от Anton).
Root cause (доказан прод-данными)
extractPolygon(concept-api.ts) схлопывал GeoJSONMultiPolygonдо первой части (coordinates[0]).Massing3DScene.buildModelбрал по ней контур участка + начало проекции lon0/lat0 + bbox OSM-тайла. А бэкенд/neighbor-buildingsанкорит соседей к ЦЕЛОЙ геометрии (ST_DWithinвокруг всегоcad_parcels_geom.geom). Для многочастного участка, где part[0] смещён от центроида целого, соседи проецировались вокруг «чужого» центра.Масштаб (прод): 41 234 MultiPolygon-участка, 437 многочастные, 163 со сдвигом part[0]↔целое >100м (max 1611м) — совпадает с наблюдаемым.
Исключено с числами: Mercator-дрейф <0.1м, СК 4326, единый проектор корпуса/соседей, источник
geom_geojsonбез контаминации.Fix
geo-local.ts:ringsBounds/ringsCentroid/polygonOuterRings; старыеringBounds/ringCentroidделегируют к plural-версиям (single-ring байт-в-байт идентично → одночастные участки не затронуты).Massing3DScene.buildModel: origin ←ringsCentroid, groundBounds ←ringsBounds(union всех частей), контур per-part, камера охватывает все части.extractPolygon: MultiPolygon-ветка берёт наибольшую по площади часть (былоcoordinates[0]) → корпус строится на главной части, не осколке. НовыйextractParcelGeometryотдаёт сцене всю геометрию.ConceptResultMap(2D):geometryBoundsфитит по всему экстенту.MassingScene(ptica) area-based → не затронута.Test plan
Post-deploy verify (rule #7)
Визуальный смоук на известном многочастном участке — соседи теперь совмещены с контуром и OSM.
Refs #2180