use crate::types::DiffResult;
pub fn compute_score(diff: &DiffResult, base_entity_count: u64) -> f64 {
let numerator =
diff.stats.added as f64 + diff.stats.removed as f64 + diff.stats.modified as f64 * 0.5;
let denominator = (base_entity_count.max(1)) as f64;
(numerator / denominator).min(1.0)
}
pub fn divergence_label(score: f64) -> &'static str {
if score == 0.0 {
"identical"
} else if score <= 0.05 {
"minimal"
} else if score <= 0.25 {
"moderate"
} else if score <= 0.75 {
"significant"
} else {
"diverged"
}
}
pub fn time_weighted_score(score: f64, age_days: f64, decay_factor: f64) -> f64 {
score * (-age_days * decay_factor).exp()
}