use jiff::Timestamp;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ServiceStatus {
#[default]
Healthy,
Degraded,
Unhealthy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ComponentCheck {
pub name: String,
pub status: ServiceStatus,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Health {
pub status: ServiceStatus,
pub checks: Vec<ComponentCheck>,
pub timestamp: Timestamp,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Analytics {
pub timestamp: Timestamp,
pub total_runs: u64,
pub active_runs: u64,
pub succeeded_runs: u64,
pub failed_runs: u64,
pub cancelled_runs: u64,
pub total_entities_detected: u64,
pub total_redactions_applied: u64,
pub distinct_actors: u64,
}