Skip to main content

oxirs_embed/
enterprise_knowledge_config.rs

1//! Configuration types for enterprise knowledge analyzer.
2
3/// Configuration for enterprise knowledge analysis
4#[derive(Debug, Clone)]
5pub struct EnterpriseConfig {
6    /// Maximum number of products to track
7    pub max_products: usize,
8    /// Maximum number of employees to track
9    pub max_employees: usize,
10    /// Maximum number of customers to track
11    pub max_customers: usize,
12    /// Product recommendation refresh interval (hours)
13    pub product_recommendation_refresh_hours: u64,
14    /// Employee skill analysis interval (hours)
15    pub skill_analysis_interval_hours: u64,
16    /// Market analysis interval (hours)
17    pub market_analysis_interval_hours: u64,
18    /// Enable real-time customer behavior tracking
19    pub enable_real_time_customer_tracking: bool,
20    /// Minimum interaction threshold for recommendations
21    pub min_interaction_threshold: u32,
22    /// Embedding dimension
23    pub embedding_dimension: usize,
24    /// Recommendation system config
25    pub recommendation_config: RecommendationConfig,
26}
27
28impl Default for EnterpriseConfig {
29    fn default() -> Self {
30        Self {
31            max_products: 500_000,
32            max_employees: 50_000,
33            max_customers: 1_000_000,
34            product_recommendation_refresh_hours: 6,
35            skill_analysis_interval_hours: 24,
36            market_analysis_interval_hours: 12,
37            enable_real_time_customer_tracking: true,
38            min_interaction_threshold: 3,
39            embedding_dimension: 256,
40            recommendation_config: RecommendationConfig::default(),
41        }
42    }
43}
44
45/// Configuration for recommendation systems
46#[derive(Debug, Clone)]
47pub struct RecommendationConfig {
48    /// Number of recommendations to generate
49    pub num_recommendations: usize,
50    /// Similarity threshold for recommendations
51    pub similarity_threshold: f64,
52    /// Diversity factor (0.0 = pure similarity, 1.0 = pure diversity)
53    pub diversity_factor: f64,
54    /// Enable collaborative filtering
55    pub enable_collaborative_filtering: bool,
56    /// Enable content-based filtering
57    pub enable_content_based_filtering: bool,
58    /// Enable hybrid recommendations
59    pub enable_hybrid: bool,
60    /// Cold start strategy
61    pub cold_start_strategy: ColdStartStrategy,
62}
63
64impl Default for RecommendationConfig {
65    fn default() -> Self {
66        Self {
67            num_recommendations: 10,
68            similarity_threshold: 0.3,
69            diversity_factor: 0.2,
70            enable_collaborative_filtering: true,
71            enable_content_based_filtering: true,
72            enable_hybrid: true,
73            cold_start_strategy: ColdStartStrategy::PopularityBased,
74        }
75    }
76}
77
78/// Cold start strategy for new users/items
79#[derive(Debug, Clone)]
80pub enum ColdStartStrategy {
81    PopularityBased,
82    ContentBased,
83    DemographicBased,
84    RandomSampling,
85}