petter2025's picture
Update core/data_models.py
c30c59f verified
raw
history blame
2.02 kB
"""
Pythonic data models for ARF Demo
"""
from dataclasses import dataclass, asdict
from enum import Enum
from typing import Dict, List, Optional, Any
import datetime
class IncidentSeverity(Enum):
"""Enum for incident severity levels"""
LOW = "LOW"
MEDIUM = "MEDIUM"
HIGH = "HIGH"
CRITICAL = "CRITICAL"
class DemoMode(Enum):
"""Enum for demo modes"""
QUICK = "quick"
COMPREHENSIVE = "comprehensive"
INVESTOR = "investor"
@dataclass
class OSSAnalysis:
"""Structured OSS analysis results"""
status: str
recommendations: List[str]
estimated_time: str
engineers_needed: str
manual_effort: str
confidence_score: float = 0.95
def to_dict(self) -> Dict:
return asdict(self)
@dataclass
class EnterpriseResults:
"""Structured enterprise execution results"""
actions_completed: List[str]
metrics_improvement: Dict[str, str]
business_impact: Dict[str, Any]
approval_required: bool = True
execution_time: str = ""
def to_dict(self) -> Dict:
return asdict(self)
@dataclass
class IncidentScenario:
"""Pythonic incident scenario model"""
name: str
severity: IncidentSeverity
metrics: Dict[str, str]
impact: Dict[str, str]
oss_analysis: Optional[OSSAnalysis] = None
enterprise_results: Optional[EnterpriseResults] = None
def to_dict(self) -> Dict:
"""Convert to dictionary for JSON serialization"""
data = {
"name": self.name,
"severity": self.severity.value,
"metrics": self.metrics,
"impact": self.impact
}
if self.oss_analysis:
data["oss_analysis"] = self.oss_analysis.to_dict()
if self.enterprise_results:
data["enterprise_results"] = self.enterprise_results.to_dict()
return data
@dataclass
class DemoStep:
"""Demo step for presenter guidance"""
title: str
scenario: Optional[str]
action: str
message: str
icon: str = "🎯"