use crate::constants::versions::EXECUTION_HISTORY_VERSION;
use crate::progress::ExecutionPhase;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionHistory {
pub version: u32,
pub entries: Vec<ExecutionEntry>,
}
impl Default for ExecutionHistory {
fn default() -> Self {
Self {
version: EXECUTION_HISTORY_VERSION,
entries: Vec::new(),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionEntry {
pub timestamp: String,
pub task_id: String,
pub runner: String,
pub model: String,
pub phase_count: u8,
pub phase_durations: HashMap<ExecutionPhase, Duration>,
pub total_duration: Duration,
}