1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct OptimizationRule {
8 pub id: Uuid,
10 pub rule_description: String,
12 pub affected_traits: Vec<String>,
14 pub confidence: f64,
16 pub source_experiments_count: usize,
18 pub created_at: DateTime<Utc>,
20}
21
22impl OptimizationRule {
23 pub fn new(description: String, traits: Vec<String>, confidence: f64, count: usize) -> Self {
24 Self {
25 id: Uuid::new_v4(),
26 rule_description: description,
27 affected_traits: traits,
28 confidence: confidence.clamp(0.0, 1.0),
29 source_experiments_count: count,
30 created_at: Utc::now(),
31 }
32 }
33}