|
|
|
|
|
|
|
def get_missing_keys(data, required_keys=["site_area", "FAR", "BCR"]):
|
|
"""檢查缺少哪些欄位"""
|
|
return [key for key in required_keys if key not in data or data[key] is None]
|
|
|
|
def calculate_area(data):
|
|
result = {}
|
|
|
|
|
|
site_area = data.get("site_area")
|
|
far = data.get("FAR")
|
|
bcr = data.get("BCR")
|
|
bonus_far = data.get("bonus_far", 0)
|
|
|
|
|
|
if site_area is None or far is None:
|
|
print("⚠️ 缺少 site_area 或 FAR,無法計算")
|
|
return {}
|
|
|
|
|
|
buildable_area = site_area * (bcr / 100)
|
|
result["buildable_area"] = round(buildable_area, 2)
|
|
|
|
|
|
base_volume = site_area * (far / 100)
|
|
result["base_volume"] = round(base_volume, 2)
|
|
|
|
|
|
bonus_volume = base_volume * (bonus_far / 100)
|
|
result["bonus_volume"] = round(bonus_volume, 2)
|
|
|
|
|
|
total_living_area = base_volume + bonus_volume
|
|
result["residential_area"] = round(total_living_area, 2)
|
|
|
|
|
|
result["summary"] = (
|
|
f"🏗️ 基準容積為 {result['base_volume']} 平方公尺,"
|
|
f"容積獎勵為 {result['bonus_volume']} 平方公尺,"
|
|
f"總可規劃住家面積為 {result['residential_area']} 平方公尺。"
|
|
)
|
|
|
|
|
|
print("✅ 建築面積計算完成")
|
|
print(result["summary"])
|
|
|
|
return result |