rustkernel_accounting/
lib.rs

1//! # RustKernel Accounting
2//!
3//! GPU-accelerated accounting kernels.
4//!
5//! ## Kernels
6//! - `ChartOfAccountsMapping` - Entity-specific CoA mapping
7//! - `JournalTransformation` - GL mapping
8//! - `GLReconciliation` - Account matching
9//! - `NetworkAnalysis` - Intercompany analysis
10//! - `TemporalCorrelation` - Account correlations
11//! - `NetworkGeneration` - Journal entry to accounting network transformation
12//! - `NetworkGenerationRing` - Streaming network generation
13//! - `SuspenseAccountDetection` - Centrality-based suspense account detection
14//! - `GaapViolationDetection` - GAAP prohibited flow pattern detection
15
16#![warn(missing_docs)]
17
18pub mod coa_mapping;
19pub mod detection;
20pub mod journal;
21pub mod network;
22pub mod network_generation;
23pub mod reconciliation;
24pub mod temporal;
25pub mod types;
26
27pub use coa_mapping::ChartOfAccountsMapping;
28pub use detection::{
29    GaapDetectionConfig, GaapViolationDetection, SuspenseAccountDetection, SuspenseDetectionConfig,
30};
31pub use journal::JournalTransformation;
32pub use network::NetworkAnalysis;
33pub use network_generation::{
34    AccountingFlow, AccountingNetwork, FixedPoint128, NetworkGeneration, NetworkGenerationConfig,
35    NetworkGenerationRing, NetworkGenerationStats, SolvingMethod,
36};
37pub use reconciliation::GLReconciliation;
38pub use temporal::TemporalCorrelation;
39
40/// Register all accounting kernels.
41pub fn register_all(
42    registry: &rustkernel_core::registry::KernelRegistry,
43) -> rustkernel_core::error::Result<()> {
44    use rustkernel_core::traits::GpuKernel;
45
46    tracing::info!("Registering accounting kernels");
47
48    // CoA mapping kernel (1)
49    registry.register_metadata(
50        coa_mapping::ChartOfAccountsMapping::new()
51            .metadata()
52            .clone(),
53    )?;
54
55    // Journal kernel (1)
56    registry.register_metadata(journal::JournalTransformation::new().metadata().clone())?;
57
58    // Reconciliation kernel (1)
59    registry.register_metadata(reconciliation::GLReconciliation::new().metadata().clone())?;
60
61    // Network analysis kernel (1)
62    registry.register_metadata(network::NetworkAnalysis::new().metadata().clone())?;
63
64    // Temporal kernel (1)
65    registry.register_metadata(temporal::TemporalCorrelation::new().metadata().clone())?;
66
67    // Network generation batch kernel (1)
68    registry.register_metadata(
69        network_generation::NetworkGeneration::new()
70            .metadata()
71            .clone(),
72    )?;
73
74    // Network generation ring kernel (1)
75    registry.register_metadata(
76        network_generation::NetworkGenerationRing::new()
77            .metadata()
78            .clone(),
79    )?;
80
81    // Detection kernels (2)
82    registry.register_metadata(
83        detection::SuspenseAccountDetection::new()
84            .metadata()
85            .clone(),
86    )?;
87    registry.register_metadata(detection::GaapViolationDetection::new().metadata().clone())?;
88
89    tracing::info!("Registered 9 accounting kernels");
90    Ok(())
91}
92
93#[cfg(test)]
94mod tests {
95    use super::*;
96    use rustkernel_core::registry::KernelRegistry;
97
98    #[test]
99    fn test_register_all() {
100        let registry = KernelRegistry::new();
101        register_all(&registry).expect("Failed to register accounting kernels");
102        assert_eq!(registry.total_count(), 9);
103    }
104}