rustkernel_audit/
lib.rs

1//! # RustKernel Financial Audit
2//!
3//! GPU-accelerated financial audit kernels.
4//!
5//! ## Kernels
6//! - `FeatureExtraction` - Audit feature vector extraction for ML analysis
7//! - `HypergraphConstruction` - Multi-way relationship hypergraph construction
8
9#![warn(missing_docs)]
10
11pub mod feature_extraction;
12pub mod hypergraph;
13pub mod types;
14
15pub use feature_extraction::{FeatureConfig, FeatureExtraction};
16pub use hypergraph::{HypergraphConfig, HypergraphConstruction};
17pub use types::*;
18
19/// Register all audit kernels.
20pub fn register_all(
21    registry: &rustkernel_core::registry::KernelRegistry,
22) -> rustkernel_core::error::Result<()> {
23    use rustkernel_core::traits::GpuKernel;
24
25    tracing::info!("Registering financial audit kernels");
26
27    // Feature extraction kernel (1)
28    registry.register_metadata(
29        feature_extraction::FeatureExtraction::new()
30            .metadata()
31            .clone(),
32    )?;
33
34    // Hypergraph kernel (1)
35    registry.register_metadata(hypergraph::HypergraphConstruction::new().metadata().clone())?;
36
37    tracing::info!("Registered 2 financial audit kernels");
38    Ok(())
39}
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44    use rustkernel_core::{domain::Domain, registry::KernelRegistry, traits::GpuKernel};
45
46    #[test]
47    fn test_register_all() {
48        let registry = KernelRegistry::new();
49        register_all(&registry).expect("Failed to register audit kernels");
50        assert_eq!(registry.total_count(), 2);
51    }
52
53    #[test]
54    fn test_feature_extraction_metadata() {
55        let kernel = FeatureExtraction::new();
56        let metadata = kernel.metadata();
57        assert!(metadata.id.contains("feature"));
58        assert_eq!(metadata.domain, Domain::FinancialAudit);
59    }
60
61    #[test]
62    fn test_hypergraph_construction_metadata() {
63        let kernel = HypergraphConstruction::new();
64        let metadata = kernel.metadata();
65        assert!(metadata.id.contains("hypergraph"));
66        assert_eq!(metadata.domain, Domain::FinancialAudit);
67    }
68}