envelope_cli/audit/
mod.rs

1//! Audit logging system for EnvelopeCLI
2//!
3//! Records all create, update, delete operations with before/after values
4//! in an append-only audit log.
5//!
6//! # Architecture
7//!
8//! The audit system consists of three components:
9//!
10//! - `AuditEntry`: Represents a single audit log entry with timestamp, operation,
11//!   entity information, and optional before/after values.
12//! - `AuditLogger`: Handles writing entries to the audit log file using a
13//!   line-delimited JSON format (JSONL).
14//! - `generate_diff`: Utility function to create human-readable diffs between
15//!   entity states.
16//!
17//! # Example
18//!
19//! ```rust,ignore
20//! use envelope::audit::{AuditEntry, AuditLogger, EntityType, generate_diff};
21//! use serde_json::json;
22//!
23//! let logger = AuditLogger::new(audit_log_path);
24//!
25//! // Log a create operation
26//! let entry = AuditEntry::create(
27//!     EntityType::Account,
28//!     "acc-12345678",
29//!     Some("Checking".to_string()),
30//!     &account,
31//! );
32//! logger.log(&entry)?;
33//!
34//! // Log an update with diff
35//! let diff = generate_diff(&before_json, &after_json);
36//! let entry = AuditEntry::update(
37//!     EntityType::Account,
38//!     "acc-12345678",
39//!     Some("Checking".to_string()),
40//!     &before,
41//!     &after,
42//!     diff,
43//! );
44//! logger.log(&entry)?;
45//! ```
46
47mod diff;
48mod entry;
49mod logger;
50
51pub use diff::{generate_detailed_diff, generate_diff};
52pub use entry::{AuditEntry, EntityType, Operation};
53pub use logger::AuditLogger;