Skip to main content

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    tracing::info!("Registering accounting kernels");
45
46    // CoA mapping kernel (1) — Batch
47    registry.register_ring_metadata_from(coa_mapping::ChartOfAccountsMapping::new)?;
48
49    // Journal kernel (1) — Batch
50    registry.register_ring_metadata_from(journal::JournalTransformation::new)?;
51
52    // Reconciliation kernel (1) — Batch
53    registry.register_ring_metadata_from(reconciliation::GLReconciliation::new)?;
54
55    // Network analysis kernel (1) — Batch
56    registry.register_ring_metadata_from(network::NetworkAnalysis::new)?;
57
58    // Temporal kernel (1) — Batch
59    registry.register_ring_metadata_from(temporal::TemporalCorrelation::new)?;
60
61    // Network generation batch kernel (1) — Batch
62    registry.register_batch_typed(network_generation::NetworkGeneration::new)?;
63
64    // Network generation ring kernel (1) — Ring
65    registry.register_ring_metadata_from(network_generation::NetworkGenerationRing::new)?;
66
67    // Detection kernels (2) — Batch
68    registry.register_ring_metadata_from(detection::SuspenseAccountDetection::new)?;
69    registry.register_ring_metadata_from(detection::GaapViolationDetection::new)?;
70
71    tracing::info!("Registered 9 accounting kernels");
72    Ok(())
73}
74
75#[cfg(test)]
76mod tests {
77    use super::*;
78    use rustkernel_core::registry::KernelRegistry;
79
80    #[test]
81    fn test_register_all() {
82        let registry = KernelRegistry::new();
83        register_all(&registry).expect("Failed to register accounting kernels");
84        assert_eq!(registry.total_count(), 9);
85    }
86}