# app/core/schema_definition.py from pydantic import BaseModel, Field from typing import List, Dict, Optional, Union class ProjectMetadata(BaseModel): name: str level: str unit: str = "meter" class ElementPosition(BaseModel): x: float y: float z: float class ElementDimensions(BaseModel): length: Optional[float] = None width: Optional[float] = None height: Optional[float] = None class BIMElement(BaseModel): id: str element_type: str # Column, Beam, Wall-Structural, etc. position: ElementPosition dimensions: ElementDimensions material: str description: Optional[str] = None class BIMProjectJSON(BaseModel): project_metadata: ProjectMetadata elements: List[BIMElement]