pub mod aml_detectability;
pub mod kyc_completeness;
pub use aml_detectability::{
AmlDetectabilityAnalysis, AmlDetectabilityAnalyzer, AmlTransactionData, TypologyData,
};
pub use kyc_completeness::{KycCompletenessAnalysis, KycCompletenessAnalyzer, KycProfileData};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankingEvaluation {
pub kyc: Option<KycCompletenessAnalysis>,
pub aml: Option<AmlDetectabilityAnalysis>,
pub passes: bool,
pub issues: Vec<String>,
}
impl BankingEvaluation {
pub fn new() -> Self {
Self {
kyc: None,
aml: None,
passes: true,
issues: Vec::new(),
}
}
pub fn check_thresholds(&mut self) {
self.issues.clear();
if let Some(ref kyc) = self.kyc {
if !kyc.passes {
self.issues.extend(kyc.issues.clone());
}
}
if let Some(ref aml) = self.aml {
if !aml.passes {
self.issues.extend(aml.issues.clone());
}
}
self.passes = self.issues.is_empty();
}
}
impl Default for BankingEvaluation {
fn default() -> Self {
Self::new()
}
}