Spaces:
Paused
Paused
| """ | |
| 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 | |