#![cfg_attr(coverage_nightly, coverage(off))]
use super::roadmap::Roadmap;
use super::ticket::TicketFile;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct HealthScore {
pub overall_score: f64,
pub metrics: HealthMetrics,
pub timestamp: String,
pub version: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct HealthMetrics {
pub velocity_score: f64,
pub aging_score: f64,
pub dependency_score: f64,
pub quality_score: f64,
}
#[derive(Debug, Clone, PartialEq)]
pub struct VelocityMetrics {
pub total_tickets: usize,
pub completed_tickets: usize,
pub completion_rate: f64,
}
#[derive(Debug, Clone, PartialEq)]
pub struct AgingMetrics {
pub red_tickets: Vec<String>,
pub stale_tickets: Vec<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DependencyMetrics {
pub total_dependencies: usize,
pub broken_dependencies: usize,
}
#[derive(Debug, thiserror::Error)]
pub enum HealthError {
#[error("Roadmap error: {0}")]
RoadmapError(#[from] super::roadmap::RoadmapError),
#[error("Ticket error: {0}")]
TicketError(#[from] super::ticket::TicketError),
#[error("I/O error: {0}")]
IoError(#[from] std::io::Error),
}
pub type Result<T> = std::result::Result<T, HealthError>;
include!("health_calculations.rs");
include!("health_tests.rs");