35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
"""Generative Design — geometry placement.
|
|
|
|
Stage 1a: Shapely-based polygon parsing + normative offsets (buffer).
|
|
Stage 1b: greedy filling of rectangular MKD with 3 strategies. STRtree for collisions.
|
|
Performance target: <=10s per variant; fallback acceptance 15s.
|
|
"""
|
|
|
|
from typing import Any
|
|
|
|
from app.schemas.concept import TEAP, ConceptInput, ConceptVariant, FinancialModel
|
|
|
|
|
|
def generate_stub(payload: ConceptInput) -> list[ConceptVariant]:
|
|
"""Placeholder returning 3 empty variants. Replaced in Stage 1b."""
|
|
empty_buildings: dict[str, Any] = {"type": "FeatureCollection", "features": []}
|
|
empty_teap = TEAP(
|
|
built_area_sqm=0.0,
|
|
total_floor_area_sqm=0.0,
|
|
residential_area_sqm=0.0,
|
|
apartments_count=0,
|
|
density=0.0,
|
|
parking_spaces=0,
|
|
)
|
|
empty_financial = FinancialModel(revenue_rub=0.0, cost_rub=0.0, gross_margin_rub=0.0, irr=0.0)
|
|
strategies: list[ConceptVariant] = []
|
|
for strategy in ("max_area", "max_insolation", "balanced"):
|
|
strategies.append(
|
|
ConceptVariant(
|
|
strategy=strategy,
|
|
buildings_geojson=empty_buildings,
|
|
teap=empty_teap,
|
|
financial=empty_financial,
|
|
)
|
|
)
|
|
return strategies
|