datasynth_eval/process_mining/
mod.rs1pub mod enrichment_quality;
7pub mod event_sequence;
8pub mod variant_analysis;
9
10pub use enrichment_quality::*;
11pub use event_sequence::{EventSequenceAnalysis, EventSequenceAnalyzer, ProcessEventData};
12pub use variant_analysis::{VariantAnalysis, VariantAnalyzer, VariantData};
13
14use serde::{Deserialize, Serialize};
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct ProcessMiningEvaluation {
19 pub event_sequence: Option<EventSequenceAnalysis>,
21 pub variants: Option<VariantAnalysis>,
23 pub passes: bool,
25 pub issues: Vec<String>,
27}
28
29impl ProcessMiningEvaluation {
30 pub fn new() -> Self {
32 Self {
33 event_sequence: None,
34 variants: None,
35 passes: true,
36 issues: Vec::new(),
37 }
38 }
39
40 pub fn check_thresholds(&mut self) {
42 self.issues.clear();
43 if let Some(ref es) = self.event_sequence {
44 if !es.passes {
45 self.issues.extend(es.issues.clone());
46 }
47 }
48 if let Some(ref va) = self.variants {
49 if !va.passes {
50 self.issues.extend(va.issues.clone());
51 }
52 }
53 self.passes = self.issues.is_empty();
54 }
55}
56
57impl Default for ProcessMiningEvaluation {
58 fn default() -> Self {
59 Self::new()
60 }
61}