use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ThresholdOverrideInput {
#[serde(skip_serializing_if = "Option::is_none")]
pub pattern_entropy_rate: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub convention_drift_rate: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coupling_delta_rate: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub boundary_violation_rate: Option<f64>,
pub expires: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ThresholdsInput {
pub pattern_entropy_rate: f64,
pub convention_drift_rate: f64,
pub coupling_delta_rate: f64,
pub boundary_violation_rate: f64,
#[serde(default)]
pub overrides: BTreeMap<String, ThresholdOverrideInput>,
pub today: chrono::NaiveDate,
}
impl Default for ThresholdsInput {
fn default() -> Self {
ThresholdsInput {
pattern_entropy_rate: 2.0,
convention_drift_rate: 3.0,
coupling_delta_rate: 0.15,
boundary_violation_rate: 2.0,
overrides: BTreeMap::new(),
today: chrono::NaiveDate::from_ymd_opt(9999, 12, 31).unwrap(),
}
}
}