oxirs-chat 0.2.4

RAG chat API with LLM integration and natural language to SPARQL translation
Documentation
//! Configuration types for the revolutionary chat optimization framework
//!
//! This module defines configuration structures for unified optimization,
//! advanced statistics, AI-powered conversation analysis, and real-time
//! performance enhancement.

use serde::{Deserialize, Serialize};

/// Revolutionary chat optimization configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RevolutionaryChatConfig {
    /// Enable unified optimization coordination
    pub enable_unified_optimization: bool,
    /// Enable advanced conversation statistics
    pub enable_advanced_statistics: bool,
    /// Enable AI-powered conversation analysis
    pub enable_ai_conversation_analysis: bool,
    /// Enable quantum-enhanced context processing
    pub enable_quantum_context_processing: bool,
    /// Enable real-time streaming optimization
    pub enable_streaming_optimization: bool,
    /// Enable professional memory management
    pub enable_advanced_memory_management: bool,
    /// Unified optimization configuration
    pub unified_config: UnifiedOptimizationConfig,
    /// Statistics collection configuration
    pub statistics_config: AdvancedStatisticsConfig,
    /// Conversation analysis configuration
    pub conversation_analysis_config: ConversationAnalysisConfig,
    /// Performance targets
    pub performance_targets: ChatPerformanceTargets,
}

impl Default for RevolutionaryChatConfig {
    fn default() -> Self {
        Self {
            enable_unified_optimization: true,
            enable_advanced_statistics: true,
            enable_ai_conversation_analysis: true,
            enable_quantum_context_processing: true,
            enable_streaming_optimization: true,
            enable_advanced_memory_management: true,
            unified_config: UnifiedOptimizationConfig::default(),
            statistics_config: AdvancedStatisticsConfig::default(),
            conversation_analysis_config: ConversationAnalysisConfig::default(),
            performance_targets: ChatPerformanceTargets::default(),
        }
    }
}

/// Unified optimization configuration for chat
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UnifiedOptimizationConfig {
    /// Enable cross-component coordination
    pub enable_cross_component_coordination: bool,
    /// Enable adaptive optimization strategies
    pub enable_adaptive_strategies: bool,
    /// Enable AI-driven optimization decisions
    pub enable_ai_driven_optimization: bool,
    /// Optimization update frequency in milliseconds
    pub optimization_frequency_ms: u64,
    /// Performance monitoring window size
    pub monitoring_window_size: usize,
    /// Coordination strategy
    pub coordination_strategy: CoordinationStrategy,
}

impl Default for UnifiedOptimizationConfig {
    fn default() -> Self {
        Self {
            enable_cross_component_coordination: true,
            enable_adaptive_strategies: true,
            enable_ai_driven_optimization: true,
            optimization_frequency_ms: 100,
            monitoring_window_size: 1000,
            coordination_strategy: CoordinationStrategy::AIControlled,
        }
    }
}

/// Coordination strategy for unified optimization
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum CoordinationStrategy {
    Independent,
    Sequential,
    Parallel,
    Adaptive,
    AIControlled,
}

/// Advanced statistics configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdvancedStatisticsConfig {
    /// Enable conversation quality metrics
    pub enable_conversation_quality_metrics: bool,
    /// Enable ML-powered conversation prediction
    pub enable_conversation_prediction: bool,
    /// Enable user behavior analysis
    pub enable_user_behavior_analysis: bool,
    /// Enable performance correlation analysis
    pub enable_performance_correlation: bool,
    /// Statistics collection window in minutes
    pub collection_window_minutes: u64,
    /// Historical data retention days
    pub historical_retention_days: u64,
    /// Statistical significance threshold
    pub significance_threshold: f64,
}

impl Default for AdvancedStatisticsConfig {
    fn default() -> Self {
        Self {
            enable_conversation_quality_metrics: true,
            enable_conversation_prediction: true,
            enable_user_behavior_analysis: true,
            enable_performance_correlation: true,
            collection_window_minutes: 60,
            historical_retention_days: 30,
            significance_threshold: 0.95,
        }
    }
}

/// Conversation analysis configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConversationAnalysisConfig {
    /// Enable semantic conversation flow analysis
    pub enable_semantic_flow_analysis: bool,
    /// Enable emotional state tracking
    pub enable_emotional_state_tracking: bool,
    /// Enable conversation pattern recognition
    pub enable_pattern_recognition: bool,
    /// Enable intent prediction
    pub enable_intent_prediction: bool,
    /// Analysis depth level (1-5)
    pub analysis_depth: u8,
    /// Pattern recognition window size
    pub pattern_window_size: usize,
    /// Confidence threshold for predictions
    pub prediction_confidence_threshold: f64,
}

impl Default for ConversationAnalysisConfig {
    fn default() -> Self {
        Self {
            enable_semantic_flow_analysis: true,
            enable_emotional_state_tracking: true,
            enable_pattern_recognition: true,
            enable_intent_prediction: true,
            analysis_depth: 3,
            pattern_window_size: 20,
            prediction_confidence_threshold: 0.75,
        }
    }
}

/// Chat performance targets
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChatPerformanceTargets {
    /// Target response time in milliseconds
    pub target_response_time_ms: u64,
    /// Target conversation quality score (0.0-1.0)
    pub target_conversation_quality: f64,
    /// Target user satisfaction score (0.0-1.0)
    pub target_user_satisfaction: f64,
    /// Target memory efficiency (MB per conversation)
    pub target_memory_efficiency_mb: f64,
    /// Target throughput (messages per second)
    pub target_throughput_mps: f64,
}

impl Default for ChatPerformanceTargets {
    fn default() -> Self {
        Self {
            target_response_time_ms: 2000,
            target_conversation_quality: 0.85,
            target_user_satisfaction: 0.9,
            target_memory_efficiency_mb: 50.0,
            target_throughput_mps: 100.0,
        }
    }
}