use anyhow::Result;
use serde::{Deserialize, Serialize};
use std::time::SystemTime;
use super::config::{CoordinationStrategy, UnifiedOptimizationConfig};
#[derive(Debug, Clone)]
pub struct CoordinationEvent {
pub timestamp: SystemTime,
pub strategy: CoordinationStrategy,
pub components: Vec<String>,
pub performance_impact: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserBehaviorSummary {
pub total_interactions: usize,
pub dominant_patterns: Vec<String>,
pub engagement_level: f64,
pub preferred_interaction_style: String,
}
#[derive(Debug)]
pub struct UnifiedChatCoordinator {
config: UnifiedOptimizationConfig,
events: Vec<CoordinationEvent>,
}
impl UnifiedChatCoordinator {
pub async fn new(config: UnifiedOptimizationConfig) -> Result<Self> {
Ok(Self {
config,
events: Vec::new(),
})
}
pub fn config(&self) -> &UnifiedOptimizationConfig {
&self.config
}
pub fn record_event(&mut self, event: CoordinationEvent) {
self.events.push(event);
if self.events.len() > 1000 {
self.events.remove(0);
}
}
pub fn recent_events(&self, limit: usize) -> &[CoordinationEvent] {
let start = if self.events.len() > limit {
self.events.len() - limit
} else {
0
};
&self.events[start..]
}
pub fn get_behavior_summary(&self) -> UserBehaviorSummary {
UserBehaviorSummary {
total_interactions: 0,
dominant_patterns: Vec::new(),
engagement_level: 0.0,
preferred_interaction_style: "unknown".to_string(),
}
}
}