use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptiveQECConfig {
pub enable_real_time_adaptation: bool,
pub adaptation_window: std::time::Duration,
pub performance_threshold: f64,
pub enable_threshold_adaptation: bool,
pub enable_strategy_switching: bool,
pub learning_rate: f64,
pub enable_adaptive: bool,
pub strategies: Vec<AdaptationStrategy>,
pub learning: AdaptiveLearningConfig,
pub realtime_optimization: RealtimeOptimizationConfig,
pub feedback_control: FeedbackControlConfig,
pub prediction: PredictionConfig,
pub optimization: OptimizationConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AdaptationStrategy {
ErrorRateBased,
PerformanceBased,
ResourceBased,
MLBased,
HybridAdaptation,
PredictiveAdaptation,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdaptiveLearningConfig {
pub algorithms: Vec<LearningAlgorithm>,
pub online_learning: OnlineLearningConfig,
pub transfer_learning: TransferLearningConfig,
pub meta_learning: MetaLearningConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum LearningAlgorithm {
ReinforcementLearning,
SupervisedLearning,
UnsupervisedLearning,
SemiSupervisedLearning,
FederatedLearning,
ContinualLearning,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OnlineLearningConfig {
pub enable_online: bool,
pub learning_rate_adaptation: LearningRateAdaptation,
pub concept_drift: ConceptDriftConfig,
pub model_updates: ModelUpdateConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum LearningRateAdaptation {
Fixed,
Exponential,
Polynomial,
Adaptive,
PerformanceBased,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConceptDriftConfig {
pub enable_detection: bool,
pub methods: Vec<DriftDetectionMethod>,
pub responses: Vec<DriftResponse>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DriftDetectionMethod {
StatisticalTest,
PerformanceMonitoring,
DistributionChange,
ModelPerformance,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DriftResponse {
Retrain,
Adapt,
Reset,
EnsembleUpdate,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelUpdateConfig {
pub frequency: UpdateFrequency,
pub triggers: Vec<UpdateTrigger>,
pub strategies: Vec<UpdateStrategy>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UpdateFrequency {
Continuous,
Periodic(Duration),
EventTriggered,
Adaptive,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UpdateTrigger {
PerformanceDegradation,
NewData,
EnvironmentChange,
UserRequest,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UpdateStrategy {
FullRetrain,
IncrementalUpdate,
EnsembleUpdate,
ParameterUpdate,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransferLearningConfig {
pub enable_transfer: bool,
pub source_domains: Vec<SourceDomain>,
pub strategies: Vec<TransferStrategy>,
pub domain_adaptation: DomainAdaptationConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SourceDomain {
pub id: String,
pub characteristics: HashMap<String, f64>,
pub similarity: SimilarityMetrics,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SimilarityMetrics {
pub statistical: f64,
pub structural: f64,
pub performance: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TransferStrategy {
FeatureTransfer,
ParameterTransfer,
ModelTransfer,
KnowledgeDistillation,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DomainAdaptationConfig {
pub methods: Vec<AdaptationMethod>,
pub validation: Vec<ValidationStrategy>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AdaptationMethod {
FeatureAlignment,
DistributionMatching,
AdversarialTraining,
CorrectionModels,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ValidationStrategy {
CrossDomainValidation,
TargetValidation,
UnsupervisedMetrics,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaLearningConfig {
pub enable_meta: bool,
pub algorithms: Vec<MetaLearningAlgorithm>,
pub task_distribution: TaskDistributionConfig,
pub meta_optimization: MetaOptimizationConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MetaLearningAlgorithm {
MAML,
Reptile,
ProtoNet,
RelationNet,
MatchingNet,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TaskDistributionConfig {
pub task_types: Vec<String>,
pub complexity_range: (f64, f64),
pub generation_strategy: TaskGenerationStrategy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum TaskGenerationStrategy {
Random,
Curriculum,
Adaptive,
HumanDesigned,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaOptimizationConfig {
pub optimizer: MetaOptimizer,
pub learning_rates: LearningRates,
pub regularization: MetaRegularization,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MetaOptimizer {
SGD,
Adam,
RMSprop,
AdaGrad,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LearningRates {
pub inner_lr: f64,
pub outer_lr: f64,
pub adaptive: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaRegularization {
pub regularization_type: RegularizationType,
pub strength: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum RegularizationType {
L1,
L2,
Dropout,
BatchNorm,
None,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RealtimeOptimizationConfig {
pub enable_realtime: bool,
pub objectives: Vec<OptimizationObjective>,
pub algorithms: Vec<RealtimeAlgorithm>,
pub constraints: ResourceConstraints,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizationObjective {
MinimizeErrorRate,
MaximizeFidelity,
MinimizeLatency,
MaximizeThroughput,
MinimizeResourceUsage,
BalancedObjective,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum RealtimeAlgorithm {
OnlineGradientDescent,
AdaptiveMomentum,
ParticleSwarm,
GeneticAlgorithm,
BayesianOptimization,
ModelPredictiveControl,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceConstraints {
pub time_limit: Duration,
pub memory_limit: usize,
pub power_budget: f64,
pub hardware_constraints: HardwareConstraints,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HardwareConstraints {
pub connectivity: ConnectivityConstraints,
pub gate_fidelities: HashMap<String, f64>,
pub coherence_times: CoherenceTimes,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConnectivityConstraints {
pub coupling_map: Vec<(usize, usize)>,
pub max_distance: usize,
pub routing_overhead: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CoherenceTimes {
pub t1_times: HashMap<usize, f64>,
pub t2_times: HashMap<usize, f64>,
pub gate_times: HashMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FeedbackControlConfig {
pub enable_feedback: bool,
pub algorithms: Vec<ControlAlgorithm>,
pub sensors: SensorConfig,
pub actuators: ActuatorConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ControlAlgorithm {
PID,
LQR,
MPC,
AdaptiveControl,
RobustControl,
NeuralControl,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SensorConfig {
pub sensor_types: Vec<SensorType>,
pub sampling_rates: HashMap<String, f64>,
pub noise_characteristics: NoiseCharacteristics,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum SensorType {
PerformanceMonitor,
ErrorRateMonitor,
TemperatureSensor,
VibrationseSensor,
CustomSensor(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NoiseCharacteristics {
pub gaussian_noise: f64,
pub systematic_bias: f64,
pub temporal_correlation: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActuatorConfig {
pub actuator_types: Vec<ActuatorType>,
pub response_times: HashMap<String, Duration>,
pub control_ranges: HashMap<String, (f64, f64)>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ActuatorType {
PulseController,
FrequencyController,
PhaseController,
AmplitudeController,
CustomActuator(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QECOptimizationConfig {
pub enable_optimization: bool,
pub enable_code_optimization: bool,
pub enable_layout_optimization: bool,
pub enable_scheduling_optimization: bool,
pub optimization_algorithm: crate::unified_benchmarking::config::OptimizationAlgorithm,
pub optimization_objectives: Vec<crate::unified_benchmarking::config::OptimizationObjective>,
pub constraint_satisfaction: ConstraintSatisfactionConfig,
pub targets: Vec<OptimizationTarget>,
pub metrics: Vec<PerformanceMetric>,
pub strategies: Vec<OptimizationStrategy>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConstraintSatisfactionConfig {
pub hardware_constraints: Vec<HardwareConstraint>,
pub resource_constraints: Vec<ResourceConstraint>,
pub performance_constraints: Vec<PerformanceConstraint>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum HardwareConstraint {
ConnectivityGraph,
GateTimes,
ErrorRates,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ResourceConstraint {
QubitCount,
CircuitDepth,
ExecutionTime,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PerformanceConstraint {
LogicalErrorRate,
ThroughputTarget,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizationTarget {
ErrorCorrection,
ResourceEfficiency,
Latency,
Throughput,
EnergyConsumption,
FaultTolerance,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum PerformanceMetric {
LogicalErrorRate,
DecodingLatency,
SyndromeAccuracy,
CorrectionSuccess,
ResourceUtilization,
ThroughputRate,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizationStrategy {
HeuristicOptimization,
ExactOptimization,
ApproximateOptimization,
MachineLearningOptimization,
HybridOptimization,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QECMLConfig {
pub model_type: crate::unified_benchmarking::config::MLModelType,
pub training_data_size: usize,
pub validation_split: f64,
pub enable_online_learning: bool,
pub feature_extraction: crate::ml_optimization::FeatureExtractionConfig,
pub model_update_frequency: std::time::Duration,
pub enable_ml: bool,
pub models: Vec<MLModel>,
pub training: MLTrainingConfig,
pub inference: MLInferenceConfig,
pub model_management: ModelManagementConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MLModel {
NeuralNetwork,
ConvolutionalNN,
RecurrentNN,
Transformer,
RandomForest,
SupportVectorMachine,
GaussianProcess,
EnsembleModel,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MLTrainingConfig {
pub data: TrainingDataConfig,
pub architecture: ModelArchitectureConfig,
pub parameters: TrainingParameters,
pub validation: ValidationConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrainingDataConfig {
pub sources: Vec<DataSource>,
pub preprocessing: DataPreprocessingConfig,
pub augmentation: DataAugmentationConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DataSource {
HistoricalData,
SimulatedData,
RealTimeData,
SyntheticData,
ExternalData,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataPreprocessingConfig {
pub normalization: NormalizationMethod,
pub feature_selection: FeatureSelectionMethod,
pub dimensionality_reduction: DimensionalityReductionMethod,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum NormalizationMethod {
MinMax,
ZScore,
Robust,
None,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum FeatureSelectionMethod {
Statistical,
ModelBased,
Wrapper,
Embedded,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DimensionalityReductionMethod {
PCA,
LDA,
TSNE,
UMAP,
None,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataAugmentationConfig {
pub enable: bool,
pub techniques: Vec<AugmentationTechnique>,
pub ratio: f64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AugmentationTechnique {
NoiseInjection,
Rotation,
Scaling,
Cropping,
Synthesis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelArchitectureConfig {
pub architecture_type: ArchitectureType,
pub layers: Vec<LayerConfig>,
pub connections: ConnectionPattern,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ArchitectureType {
Sequential,
Residual,
DenseNet,
Attention,
Custom,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LayerConfig {
pub layer_type: LayerType,
pub parameters: HashMap<String, f64>,
pub activation: ActivationFunction,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum LayerType {
Dense,
Convolutional,
Recurrent,
Attention,
Normalization,
Dropout,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ActivationFunction {
ReLU,
Sigmoid,
Tanh,
Softmax,
LeakyReLU,
ELU,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ConnectionPattern {
FullyConnected,
Sparse,
Skip,
Residual,
Dense,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrainingParameters {
pub learning_rate: f64,
pub batch_size: usize,
pub epochs: usize,
pub optimizer: OptimizerType,
pub loss_function: LossFunction,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum OptimizerType {
SGD,
Adam,
RMSprop,
AdaGrad,
AdaDelta,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum LossFunction {
MeanSquaredError,
CrossEntropy,
BinaryCrossEntropy,
HuberLoss,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationConfig {
pub method: ValidationMethod,
pub split: f64,
pub cv_folds: usize,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ValidationMethod {
HoldOut,
CrossValidation,
Bootstrap,
TimeSeriesSplit,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MLInferenceConfig {
pub mode: InferenceMode,
pub batch_processing: BatchProcessingConfig,
pub optimization: InferenceOptimizationConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum InferenceMode {
Synchronous,
Asynchronous,
Batch,
Streaming,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchProcessingConfig {
pub enable: bool,
pub batch_size: usize,
pub timeout: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InferenceOptimizationConfig {
pub model_optimization: ModelOptimization,
pub hardware_acceleration: HardwareAcceleration,
pub caching: InferenceCaching,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ModelOptimization {
Quantization,
Pruning,
Distillation,
Compilation,
None,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum HardwareAcceleration {
GPU,
TPU,
FPGA,
CPU,
Custom,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InferenceCaching {
pub enable: bool,
pub cache_size: usize,
pub eviction_policy: CacheEvictionPolicy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CacheEvictionPolicy {
LRU,
LFU,
FIFO,
Random,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelManagementConfig {
pub versioning: ModelVersioning,
pub deployment: ModelDeployment,
pub monitoring: ModelMonitoring,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelVersioning {
pub enable: bool,
pub version_control: VersionControlSystem,
pub rollback: RollbackStrategy,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum VersionControlSystem {
Git,
MLflow,
DVC,
Custom,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum RollbackStrategy {
Automatic,
Manual,
PerformanceBased,
TimeBased,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelDeployment {
pub strategy: DeploymentStrategy,
pub environment: EnvironmentConfig,
pub scaling: ScalingConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DeploymentStrategy {
BlueGreen,
Canary,
RollingUpdate,
Shadow,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EnvironmentConfig {
pub environment_type: EnvironmentType,
pub resources: ResourceAllocation,
pub dependencies: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum EnvironmentType {
Development,
Staging,
Production,
Testing,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceAllocation {
pub cpu: f64,
pub memory: usize,
pub gpu: Option<usize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScalingConfig {
pub auto_scaling: bool,
pub min_replicas: usize,
pub max_replicas: usize,
pub metrics: Vec<ScalingMetric>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ScalingMetric {
CpuUtilization,
MemoryUtilization,
RequestRate,
ResponseTime,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelMonitoring {
pub performance: PerformanceMonitoring,
pub drift_detection: DriftDetection,
pub alerting: AlertingConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PerformanceMonitoring {
pub metrics: Vec<MonitoringMetric>,
pub frequency: Duration,
pub baseline_comparison: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MonitoringMetric {
Accuracy,
Precision,
Recall,
F1Score,
Latency,
Throughput,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DriftDetection {
pub enable: bool,
pub methods: Vec<DriftDetectionMethod>,
pub sensitivity: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertingConfig {
pub channels: Vec<AlertChannel>,
pub thresholds: HashMap<String, f64>,
pub escalation: EscalationRules,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AlertChannel {
Email,
Slack,
PagerDuty,
Webhook,
Dashboard,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EscalationRules {
pub levels: Vec<EscalationLevel>,
pub timeouts: HashMap<String, Duration>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EscalationLevel {
pub name: String,
pub threshold: f64,
pub actions: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QECMonitoringConfig {
pub enable_performance_tracking: bool,
pub enable_error_analysis: bool,
pub enable_resource_monitoring: bool,
pub reporting_interval: std::time::Duration,
pub enable_predictive_analytics: bool,
pub enable_monitoring: bool,
pub targets: Vec<MonitoringTarget>,
pub dashboard: DashboardConfig,
pub data_collection: DataCollectionConfig,
pub alerting: MonitoringAlertingConfig,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MonitoringTarget {
ErrorRates,
CorrectionPerformance,
ResourceUtilization,
SystemHealth,
UserExperience,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DashboardConfig {
pub enable: bool,
pub components: Vec<DashboardComponent>,
pub update_frequency: Duration,
pub access_control: AccessControl,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DashboardComponent {
RealTimeMetrics,
HistoricalTrends,
Alerts,
SystemStatus,
PerformanceGraphs,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessControl {
pub authentication: bool,
pub roles: Vec<UserRole>,
pub permissions: HashMap<String, Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum UserRole {
Admin,
Operator,
Viewer,
Guest,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataCollectionConfig {
pub frequency: Duration,
pub retention: DataRetention,
pub storage: StorageConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataRetention {
pub period: Duration,
pub archival: ArchivalStrategy,
pub compression: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ArchivalStrategy {
CloudStorage,
LocalStorage,
HybridStorage,
NoArchival,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StorageConfig {
pub backend: StorageBackend,
pub replication: usize,
pub consistency: ConsistencyLevel,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StorageBackend {
FileSystem,
Database,
CloudStorage,
DistributedStorage,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ConsistencyLevel {
Eventual,
Strong,
Session,
Bounded,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MonitoringAlertingConfig {
pub rules: Vec<AlertRule>,
pub channels: Vec<NotificationChannel>,
pub suppression: AlertSuppression,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertRule {
pub name: String,
pub condition: String,
pub severity: AlertSeverity,
pub actions: Vec<AlertAction>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AlertSeverity {
Critical,
High,
Medium,
Low,
Info,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum AlertAction {
Notify,
Log,
Execute,
Escalate,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum NotificationChannel {
Email,
SMS,
Slack,
Teams,
Webhook,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertSuppression {
pub enable: bool,
pub rules: Vec<SuppressionRule>,
pub default_time: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SuppressionRule {
pub name: String,
pub condition: String,
pub duration: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictionConfig {
pub horizon: Duration,
pub confidence_threshold: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptimizationConfig {
pub objectives: Vec<String>,
pub constraints: Vec<String>,
}
impl Default for PredictionConfig {
fn default() -> Self {
Self {
horizon: Duration::from_secs(60),
confidence_threshold: 0.8,
}
}
}
impl Default for OptimizationConfig {
fn default() -> Self {
Self {
objectives: vec!["minimize_error_rate".to_string()],
constraints: vec!["hardware_connectivity".to_string()],
}
}
}