pub trait ScoringModel: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn dimensions(&self) -> &[DimensionWeight];
fn score_dimension(
&self,
dimension: HealthDimension,
metrics: &RawMetrics,
) -> f64;
// Provided methods
fn grade(&self, score: f64) -> Grade { ... }
fn total_score(&self, metrics: &RawMetrics) -> f64 { ... }
}