lawkit_core/common/
risk.rs1#[derive(Debug, Clone, PartialEq)]
2pub enum RiskLevel {
3    Low,      Medium,   High,     Critical, }
8
9impl std::fmt::Display for RiskLevel {
10    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11        match self {
12            RiskLevel::Low => write!(f, "Low"),
13            RiskLevel::Medium => write!(f, "Medium"),
14            RiskLevel::High => write!(f, "High"),
15            RiskLevel::Critical => write!(f, "Critical"),
16        }
17    }
18}
19
20impl RiskLevel {
21    pub fn from_p_value(p_value: f64) -> Self {
22        if p_value <= 0.01 {
23            RiskLevel::Critical
24        } else if p_value <= 0.05 {
25            RiskLevel::High
26        } else if p_value <= 0.1 {
27            RiskLevel::Medium
28        } else {
29            RiskLevel::Low
30        }
31    }
32
33    pub fn exit_code(&self) -> i32 {
34        match self {
35            RiskLevel::Low => 0,
36            RiskLevel::Medium => 0,
37            RiskLevel::High => 10,
38            RiskLevel::Critical => 11,
39        }
40    }
41}