Skip to main content

do_memory_mcp/server/audit/
pattern_ops.rs

1//! Audit logging operations - Pattern operations
2//!
3//! This module provides logging methods for pattern-related operations.
4
5use super::core::AuditLogger;
6use super::types::AuditLogLevel;
7use serde_json::json;
8
9impl AuditLogger {
10    /// Log pattern analysis request
11    pub async fn log_pattern_analysis(
12        &self,
13        client_id: &str,
14        task_type: &str,
15        result_count: usize,
16        success: bool,
17    ) {
18        let metadata = json!({
19            "task_type": task_type,
20            "result_count": result_count
21        });
22
23        self.log_event(
24            AuditLogLevel::Debug,
25            client_id,
26            "analyze_patterns",
27            if success { "success" } else { "failure" },
28            metadata,
29        )
30        .await;
31    }
32
33    /// Log advanced pattern analysis
34    pub async fn log_advanced_pattern_analysis(
35        &self,
36        client_id: &str,
37        analysis_type: &str,
38        success: bool,
39    ) {
40        let metadata = json!({
41            "analysis_type": analysis_type
42        });
43
44        self.log_event(
45            AuditLogLevel::Debug,
46            client_id,
47            "advanced_pattern_analysis",
48            if success { "success" } else { "failure" },
49            metadata,
50        )
51        .await;
52    }
53
54    /// Log pattern search
55    pub async fn log_pattern_search(
56        &self,
57        client_id: &str,
58        domain: &str,
59        result_count: usize,
60        success: bool,
61    ) {
62        let metadata = json!({
63            "domain": domain,
64            "result_count": result_count
65        });
66
67        self.log_event(
68            AuditLogLevel::Debug,
69            client_id,
70            "search_patterns",
71            if success { "success" } else { "failure" },
72            metadata,
73        )
74        .await;
75    }
76
77    /// Log pattern recommendation request
78    pub async fn log_recommend_patterns(
79        &self,
80        client_id: &str,
81        domain: &str,
82        recommendation_count: usize,
83        success: bool,
84    ) {
85        let metadata = json!({
86            "domain": domain,
87            "recommendation_count": recommendation_count
88        });
89
90        self.log_event(
91            AuditLogLevel::Debug,
92            client_id,
93            "recommend_patterns",
94            if success { "success" } else { "failure" },
95            metadata,
96        )
97        .await;
98    }
99
100    /// Log playbook recommendation request (ADR-044 Feature 1)
101    pub async fn log_playbook_recommendation(
102        &self,
103        client_id: &str,
104        task_description: &str,
105        playbook_count: usize,
106        success: bool,
107    ) {
108        let metadata = json!({
109            "task_description": task_description,
110            "playbook_count": playbook_count
111        });
112
113        self.log_event(
114            AuditLogLevel::Info,
115            client_id,
116            "recommend_playbook",
117            if success { "success" } else { "failure" },
118            metadata,
119        )
120        .await;
121    }
122
123    /// Log pattern explanation request (ADR-44 Feature 1)
124    pub async fn log_pattern_explanation(&self, client_id: &str, pattern_id: &str, success: bool) {
125        let metadata = json!({
126            "pattern_id": pattern_id
127        });
128
129        self.log_event(
130            AuditLogLevel::Debug,
131            client_id,
132            "explain_pattern",
133            if success { "success" } else { "failure" },
134            metadata,
135        )
136        .await;
137    }
138}