flatten sap property to excel row object 🟩

This commit is contained in:
Daniel Roth 2026-04-15 08:23:59 +00:00
parent fcceeb2736
commit 7904eca1fa

View file

@ -172,5 +172,33 @@ def parse_rdsap(xml_string: str) -> SapPropertyDetails:
return result
def _normalise_identifier(identifier: str) -> str:
return identifier.lower().replace(" ", "_").replace("-", "_")
def flatten_sap_property(details: SapPropertyDetails) -> dict[str, Any]:
raise NotImplementedError
row: dict[str, Any] = {}
row["address"] = details["address"]
row["property_type"] = details["property_type"]
for bp in details["building_parts"]:
prefix = _normalise_identifier(bp["identifier"])
for i, floor in enumerate(bp["floors"], start=1):
floor_prefix = f"{prefix}_floor_{i}"
row[f"{floor_prefix}_area_m2"] = floor["area_m2"]
row[f"{floor_prefix}_height_m"] = floor["height_m"]
row[f"{floor_prefix}_heat_loss_perimeter_m"] = floor["heat_loss_perimeter_m"]
row[f"{floor_prefix}_party_wall_length_m"] = floor["party_wall_length_m"]
roof = bp.get("roof")
if roof:
if "construction" in roof:
row[f"{prefix}_roof_construction"] = roof["construction"]
if "insulation_location" in roof:
row[f"{prefix}_roof_insulation_location"] = roof["insulation_location"]
if "insulation_thickness_mm" in roof:
row[f"{prefix}_roof_insulation_thickness_mm"] = roof["insulation_thickness_mm"]
return row