use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShapAnalysisResult {
pub timestamp: DateTime<Utc>,
pub shap_values: HashMap<String, f64>,
pub feature_names: Vec<String>,
pub base_value: f64,
pub prediction: f64,
pub feature_contributions: Vec<FeatureContribution>,
pub top_positive_features: Vec<FeatureContribution>,
pub top_negative_features: Vec<FeatureContribution>,
pub interaction_values: Option<HashMap<(String, String), f64>>,
pub summary: ShapSummary,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeatureContribution {
pub feature_name: String,
pub shap_value: f64,
pub feature_value: f64,
pub importance_rank: usize,
pub contribution_percentage: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ShapSummary {
pub total_positive_contribution: f64,
pub total_negative_contribution: f64,
pub num_important_features: usize,
pub importance_distribution: HashMap<String, f64>,
pub explanation_completeness: f64,
}