"""Domain and MetricBound dataclasses.""" from __future__ import annotations from dataclasses import dataclass, field @dataclass class MetricBound: """Per-metric weight and normalization bounds within a domain.""" metric_name: str weight: float # 0.0–1.0 norm_min: float # Below this → score 0 norm_max: float # Above this → score 1 unit: str = "" metric_id: int | None = None @dataclass class Domain: """A context frame that defines what 'good' means (e.g., urban_commuting).""" name: str description: str = "" metric_bounds: list[MetricBound] = field(default_factory=list) id: int | None = None