File size: 1,324 Bytes
5a3b9db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
"""
Implements: 03_AI/00_AI_ARCHITECTURE.md (Detection Result Aggregation)
"""
import pandas as pd
import logging
import time
from datetime import datetime

logger = logging.getLogger(__name__)

class DetectionAggregator:
    """
    Combines rule-based, statistical, and ML anomaly signals into a unified detection assessment.
    """
    def aggregate(self, rules_df: pd.DataFrame, stat_df: pd.DataFrame, if_df: pd.DataFrame,
                  model_version: str = "1.0", rule_engine_version: str = "1.0", feature_schema_version: str = "1.0") -> pd.DataFrame:
        
        start_time = time.time()
        logger.info("Aggregating hybrid detection results...")
        
        df = rules_df.merge(stat_df, on="event_id")
        df = df.merge(if_df, on="event_id")
        
        df["detection_timestamp"] = datetime.now().isoformat()
        
        # Calculate processing duration
        duration_sec = time.time() - start_time
        
        # Add traceability metadata
        df["model_version"] = model_version
        df["rule_engine_version"] = rule_engine_version
        df["feature_schema_version"] = feature_schema_version
        df["processing_duration_sec"] = duration_sec
        
        logger.info(f"Aggregation complete. Output format contains {len(df.columns)} columns.")
        return df