datasynth_eval/banking/
mod.rs1pub mod aml_detectability;
7pub mod kyc_completeness;
8
9pub use aml_detectability::{
10 AmlDetectabilityAnalysis, AmlDetectabilityAnalyzer, AmlTransactionData, TypologyData,
11};
12pub use kyc_completeness::{KycCompletenessAnalysis, KycCompletenessAnalyzer, KycProfileData};
13
14use serde::{Deserialize, Serialize};
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct BankingEvaluation {
19 pub kyc: Option<KycCompletenessAnalysis>,
21 pub aml: Option<AmlDetectabilityAnalysis>,
23 pub passes: bool,
25 pub issues: Vec<String>,
27}
28
29impl BankingEvaluation {
30 pub fn new() -> Self {
32 Self {
33 kyc: None,
34 aml: 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 kyc) = self.kyc {
44 if !kyc.passes {
45 self.issues.extend(kyc.issues.clone());
46 }
47 }
48 if let Some(ref aml) = self.aml {
49 if !aml.passes {
50 self.issues.extend(aml.issues.clone());
51 }
52 }
53 self.passes = self.issues.is_empty();
54 }
55}
56
57impl Default for BankingEvaluation {
58 fn default() -> Self {
59 Self::new()
60 }
61}