shape_runtime/statistics/
types.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ConfidenceInterval {
9 pub estimate: f64,
11 pub lower_bound: f64,
13 pub upper_bound: f64,
15 pub confidence: f64,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct StatisticsReport {
22 pub basic: BasicStatistics,
24
25 pub patterns: PatternStatistics,
27
28 pub temporal: TemporalStatistics,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct BasicStatistics {
35 pub total_matches: usize,
36 pub unique_patterns: usize,
37 pub match_rate: f64,
38 pub avg_confidence: f64,
39 pub median_confidence: f64,
40 pub std_dev_confidence: f64,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct PatternStatistics {
46 pub by_pattern: HashMap<String, PatternMetrics>,
48
49 pub correlations: Vec<PatternCorrelation>,
51
52 pub top_performers: Vec<PatternPerformance>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct PatternMetrics {
59 pub occurrences: usize,
60 pub success_rate: f64,
61 pub avg_value: f64,
62 pub avg_duration: f64,
63 pub reliability_score: f64,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct PatternCorrelation {
69 pub pattern_a: String,
70 pub pattern_b: String,
71 pub correlation: f64,
72 pub co_occurrence_rate: f64,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct PatternPerformance {
78 pub pattern_name: String,
79 pub score: f64,
80 pub metrics: PatternMetrics,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct TemporalStatistics {
86 pub best_hours: Vec<TimePeriodStats>,
88 pub best_days: Vec<TimePeriodStats>,
89 pub best_months: Vec<TimePeriodStats>,
90
91 pub seasonality: SeasonalityAnalysis,
93
94 pub trends: TrendAnalysis,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct TimePeriodStats {
101 pub period: String,
102 pub success_rate: f64,
103 pub avg_value: f64,
104 pub occurrence_count: usize,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct SeasonalityAnalysis {
110 pub daily_pattern: bool,
111 pub weekly_pattern: bool,
112 pub monthly_pattern: bool,
113 pub quarterly_pattern: bool,
114 pub strength: f64,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct TrendAnalysis {
120 pub pattern_frequency_trend: f64,
121 pub success_rate_trend: f64,
122 pub value_trend: f64,
123 pub trend_direction: TrendDirection,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub enum TrendDirection {
128 Increasing,
129 Decreasing,
130 Stable,
131}