Eishaan's picture
Add KML terrain and soil analysis layers
2f91d7e
Raw
History Blame Contribute Delete
2.26 kB
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Literal
SelectionType = Literal[
"drawn_polygon",
"rectangle",
"pin_radius",
"dxf_boundary",
"geojson_boundary",
"kml_boundary",
"reference_only",
]
CoordinateMode = Literal["wgs84", "local_cad", "anchored_local_cad", "unknown"]
Confidence = Literal["high", "medium", "low"]
OutputLabel = Literal[
"computed",
"public_data",
"cad_derived",
"user_input",
"ai_interpretation",
"site_visit_required",
"professional_verification_required",
]
@dataclass
class SiteSelection:
id: str
selection_type: SelectionType
coordinate_mode: CoordinateMode
geometry_geojson: dict[str, Any] | None
local_geometry: list[tuple[float, float]] | None
anchor_lat: float | None
anchor_lon: float | None
radius_m: float | None
area_sqm: float | None
perimeter_m: float | None
centroid: tuple[float, float] | None
bbox: tuple[float, float, float, float] | None
unit_source: str
accuracy_label: str
source_files: list[str] = field(default_factory=list)
selected_boundary_id: str | None = None
limitations: list[str] = field(default_factory=list)
@dataclass
class BoundaryCandidate:
id: str
source_file: str
layer_name: str
unit: str
area_sqm: float
perimeter_m: float
vertex_count: int
is_closed: bool
bbox: tuple[float, float, float, float]
confidence_reason: str
points_m: list[tuple[float, float]] = field(default_factory=list)
@dataclass
class LayerFeature:
source_file: str
layer_name: str
feature_type: str
interpreted_category: str
count: int
@dataclass
class EvidenceItem:
id: str
category: str
finding: str
source_name: str
source_url: str
source_type: str
resolution_or_scope: str
confidence: Confidence
limitation: str
design_implication: str
verification_needed: str
output_label: OutputLabel
@dataclass
class ReportBundle:
board_markdown: str
evidence_rows: list[EvidenceItem]
checklist_markdown: str
diagram_paths: list[str]
export_path: str | None
warnings: list[str] = field(default_factory=list)