quantrs2_device/mapping_scirs2/
analytics.rs

1//! Analytics and monitoring for mapping performance
2
3use super::*;
4
5/// Mapping analytics configuration
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct MappingAnalyticsConfig {
8    /// Enable performance analytics
9    pub enable_analytics: bool,
10    /// Level of analysis detail
11    pub tracking_level: AnalysisDepth,
12    /// Metrics to track
13    pub metrics_to_track: Vec<TrackingMetric>,
14    /// Anomaly detection configuration
15    pub anomaly_detection: AnomalyDetectionConfig,
16    /// Alert configuration
17    pub alerting: AlertConfig,
18    /// Reporting configuration
19    pub reporting: ReportingConfig,
20}
21
22/// Anomaly detection configuration
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct AnomalyDetectionConfig {
25    /// Enable anomaly detection
26    pub enable_detection: bool,
27    /// Detection method
28    pub detection_method: AnomalyDetectionMethod,
29    /// Anomaly threshold
30    pub threshold: f64,
31    /// Window size for analysis
32    pub window_size: usize,
33}
34
35/// Alert configuration
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct AlertConfig {
38    /// Enable alerting
39    pub enable_alerts: bool,
40    /// Severity threshold for alerts
41    pub severity_threshold: f64,
42    /// Notification methods
43    pub notification_methods: Vec<NotificationMethod>,
44    /// Cooldown period between alerts
45    pub cooldown_period: Duration,
46}
47
48/// Reporting configuration
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ReportingConfig {
51    /// Enable automated reporting
52    pub enable_reporting: bool,
53    /// Report generation frequency
54    pub report_frequency: Duration,
55    /// Report format
56    pub report_format: ReportFormat,
57    /// Report content configuration
58    pub content_config: ReportContentConfig,
59}
60
61/// Report content configuration
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct ReportContentConfig {
64    /// Include performance metrics
65    pub include_performance_metrics: bool,
66    /// Include trend analysis
67    pub include_trend_analysis: bool,
68    /// Include optimization recommendations
69    pub include_recommendations: bool,
70    /// Include visualizations
71    pub include_visualizations: bool,
72}
73
74/// Real-time analytics results
75#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct RealtimeAnalyticsResult {
77    /// Current performance metrics
78    pub current_metrics: HashMap<String, f64>,
79    /// Performance trends over time
80    pub performance_trends: HashMap<String, Vec<(SystemTime, f64)>>,
81    /// Detected anomalies
82    pub anomalies: Vec<DetectedAnomaly>,
83    /// Resource utilization
84    pub resource_utilization: ResourceUtilization,
85    /// Quality assessments
86    pub quality_assessments: Vec<QualityAssessment>,
87}
88
89/// Detected anomaly information
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct DetectedAnomaly {
92    /// Timestamp of detection
93    pub timestamp: SystemTime,
94    /// Anomaly type
95    pub anomaly_type: String,
96    /// Severity score
97    pub severity: f64,
98    /// Description
99    pub description: String,
100    /// Affected metrics
101    pub affected_metrics: Vec<String>,
102    /// Recommended actions
103    pub recommended_actions: Vec<String>,
104}
105
106/// Resource utilization metrics
107#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct ResourceUtilization {
109    /// CPU utilization percentage
110    pub cpu_usage: f64,
111    /// Memory utilization percentage
112    pub memory_usage: f64,
113    /// Disk I/O metrics
114    pub disk_io: f64,
115    /// Network utilization
116    pub network_usage: f64,
117    /// GPU utilization (if applicable)
118    pub gpu_usage: Option<f64>,
119}
120
121/// Quality assessment metrics
122#[derive(Debug, Clone, Serialize, Deserialize)]
123pub struct QualityAssessment {
124    /// Assessment timestamp
125    pub timestamp: SystemTime,
126    /// Quality metric type
127    pub metric_type: QualityMetricType,
128    /// Quality score
129    pub score: f64,
130    /// Confidence in assessment
131    pub confidence: f64,
132    /// Comparison to baseline
133    pub baseline_comparison: f64,
134}
135
136/// Optimization recommendations
137#[derive(Debug, Clone, Serialize, Deserialize)]
138pub struct OptimizationRecommendations {
139    /// Algorithm recommendations
140    pub algorithm_recommendations: Vec<AlgorithmRecommendation>,
141    /// Parameter tuning suggestions
142    pub parameter_suggestions: Vec<ParameterSuggestion>,
143    /// Hardware-specific optimizations
144    pub hardware_optimizations: Vec<HardwareOptimization>,
145    /// Performance improvement predictions
146    pub improvement_predictions: HashMap<String, f64>,
147}
148
149/// Algorithm recommendation
150#[derive(Debug, Clone, Serialize, Deserialize)]
151pub struct AlgorithmRecommendation {
152    /// Recommended algorithm
153    pub algorithm: String,
154    /// Confidence score
155    pub confidence: f64,
156    /// Expected performance gain
157    pub expected_gain: f64,
158    /// Reasoning
159    pub reasoning: String,
160}
161
162/// Parameter tuning suggestion
163#[derive(Debug, Clone, Serialize, Deserialize)]
164pub struct ParameterSuggestion {
165    /// Parameter name
166    pub parameter: String,
167    /// Suggested value range
168    pub value_range: (f64, f64),
169    /// Priority level
170    pub priority: SuggestionPriority,
171    /// Impact assessment
172    pub impact: String,
173}
174
175/// Hardware-specific optimization
176#[derive(Debug, Clone, Serialize, Deserialize)]
177pub struct HardwareOptimization {
178    /// Optimization type
179    pub optimization_type: String,
180    /// Target hardware component
181    pub target_component: String,
182    /// Optimization parameters
183    pub parameters: HashMap<String, f64>,
184    /// Expected benefit
185    pub expected_benefit: f64,
186    /// Implementation complexity
187    pub complexity: String,
188}