""" 🚀 ARF Ultimate Investor Demo v3.8.0 - ENTERPRISE EDITION MODULAR VERSION - Properly integrated with all components FINAL FIXED VERSION: All imports and method calls corrected """ import logging import sys import traceback import json import datetime import asyncio import time import numpy as np from pathlib import Path from typing import Dict, List, Any, Optional, Tuple # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(sys.stdout), logging.FileHandler('arf_demo.log') ] ) logger = logging.getLogger(__name__) # Add parent directory to path sys.path.insert(0, str(Path(__file__).parent)) # =========================================== # IMPORT MODULAR COMPONENTS - FIXED IMPORTS # =========================================== try: # Import scenarios from demo.scenarios import INCIDENT_SCENARIOS # Import orchestrator from demo.orchestrator import DemoOrchestrator # Import ROI calculator - FIXED: Use EnhancedROICalculator instead of ROI_Calculator from core.calculators import EnhancedROICalculator # Import visualizations from core.visualizations import EnhancedVisualizationEngine # Import UI components from ui.components import ( create_header, create_status_bar, create_tab1_incident_demo, create_tab2_business_roi, create_tab3_enterprise_features, create_tab4_audit_trail, create_tab5_learning_engine, create_footer ) logger.info("✅ Successfully imported all modular components") except ImportError as e: logger.error(f"Failed to import components: {e}") logger.error(traceback.format_exc()) raise # =========================================== # AUDIT TRAIL MANAGER # =========================================== class AuditTrailManager: """Simple audit trail manager""" def __init__(self): self.executions = [] self.incidents = [] def add_execution(self, scenario, mode, success=True, savings=0): entry = { "time": datetime.datetime.now().strftime("%H:%M"), "scenario": scenario, "mode": mode, "status": "✅ Success" if success else "❌ Failed", "savings": f"${savings:,}", "details": f"{mode} execution" } self.executions.insert(0, entry) return entry def add_incident(self, scenario, severity="HIGH"): entry = { "time": datetime.datetime.now().strftime("%H:%M"), "scenario": scenario, "severity": severity, "component": INCIDENT_SCENARIOS.get(scenario, {}).get("component", "unknown"), "status": "Analyzed" } self.incidents.insert(0, entry) return entry def get_execution_table(self): return [ [e["time"], e["scenario"], e["mode"], e["status"], e["savings"], e["details"]] for e in self.executions[:10] ] def get_incident_table(self): return [ [e["time"], e["component"], e["scenario"], e["severity"], e["status"]] for e in self.incidents[:15] ] # =========================================== # SCENARIO IMPACT MAPPING # =========================================== def get_scenario_impact(scenario_name: str) -> float: """Get average impact for a given scenario""" impact_map = { "Cache Miss Storm": 8500, "Database Connection Pool Exhaustion": 4200, "Kubernetes Memory Leak": 5500, "API Rate Limit Storm": 3800, "Network Partition": 12000, "Storage I/O Saturation": 6800 } return impact_map.get(scenario_name, 5000) # =========================================== # ROI DATA ADAPTER # =========================================== def extract_roi_multiplier(roi_result: Dict) -> float: """Extract ROI multiplier from EnhancedROICalculator result""" try: # Try to get from summary if "summary" in roi_result and "roi_multiplier" in roi_result["summary"]: roi_str = roi_result["summary"]["roi_multiplier"] # Handle format like "5.2×" if "×" in roi_str: return float(roi_str.replace("×", "")) return float(roi_str) # Try to get from scenarios if "scenarios" in roi_result and "base_case" in roi_result["scenarios"]: roi_str = roi_result["scenarios"]["base_case"]["roi"] if "×" in roi_str: return float(roi_str.replace("×", "")) return float(roi_str) return 5.2 # Default fallback except: return 5.2 # Default fallback # =========================================== # CREATE DEMO INTERFACE - MODULAR VERSION # =========================================== def create_demo_interface(): """Create demo interface using modular components""" import gradio as gr # Initialize components - FIXED: Use EnhancedROICalculator viz_engine = EnhancedVisualizationEngine() roi_calculator = EnhancedROICalculator() audit_manager = AuditTrailManager() orchestrator = DemoOrchestrator() with gr.Blocks( title="🚀 ARF Investor Demo v3.8.0", theme=gr.themes.Soft(primary_hue="blue") ) as demo: # Header create_header("3.3.6", False) # OSS version, Mock mode # Status bar create_status_bar() # ============ 5 TABS ============ with gr.Tabs(): # TAB 1: Live Incident Demo with gr.TabItem("🔥 Live Incident Demo", id="tab1"): # Get components from UI module (scenario_dropdown, scenario_description, metrics_display, impact_display, timeline_output, oss_btn, enterprise_btn, approval_toggle, demo_btn, approval_display, oss_results_display, enterprise_results_display) = create_tab1_incident_demo( INCIDENT_SCENARIOS, "Cache Miss Storm" ) # TAB 2: Business Impact & ROI with gr.TabItem("💰 Business Impact & ROI", id="tab2"): (dashboard_output, roi_scenario_dropdown, monthly_slider, team_slider, calculate_btn, roi_output, roi_chart) = create_tab2_business_roi() # TAB 3: Enterprise Features with gr.TabItem("🏢 Enterprise Features", id="tab3"): (license_display, validate_btn, trial_btn, upgrade_btn, mcp_mode, mcp_mode_info, features_table, integrations_table) = create_tab3_enterprise_features() # TAB 4: Audit Trail & History with gr.TabItem("📜 Audit Trail & History", id="tab4"): (refresh_btn, clear_btn, export_btn, execution_table, incident_table, export_text) = create_tab4_audit_trail() # TAB 5: Learning Engine with gr.TabItem("🧠 Learning Engine", id="tab5"): (learning_graph, graph_type, show_labels, search_query, search_btn, clear_btn_search, search_results, stats_display, patterns_display, performance_display) = create_tab5_learning_engine() # Footer create_footer() # ============ EVENT HANDLERS ============ # Update scenario dropdown in ROI tab def update_roi_scenario_dropdown(): return gr.Dropdown.update( choices=list(INCIDENT_SCENARIOS.keys()), value="Cache Miss Storm" ) # Run OSS Analysis async def run_oss_analysis(scenario_name): scenario = INCIDENT_SCENARIOS.get(scenario_name, {}) # Use orchestrator analysis = await orchestrator.analyze_incident(scenario_name, scenario) # Add to audit trail audit_manager.add_incident(scenario_name, scenario.get("severity", "HIGH")) # Update incident table incident_table_data = audit_manager.get_incident_table() # Format OSS results oss_results = { "status": "✅ OSS Analysis Complete", "scenario": scenario_name, "confidence": 0.85, "recommendations": [ "Scale resources based on historical patterns", "Implement circuit breaker", "Add monitoring for key metrics" ], "healing_intent": { "action": "scale_out", "component": scenario.get("component", "unknown"), "requires_enterprise": True, "advisory_only": True } } return oss_results, incident_table_data oss_btn.click( fn=run_oss_analysis, inputs=[scenario_dropdown], outputs=[oss_results_display, incident_table] ) # Execute Enterprise Healing def execute_enterprise_healing(scenario_name, approval_required): scenario = INCIDENT_SCENARIOS.get(scenario_name, {}) # Determine mode mode = "Approval" if approval_required else "Autonomous" # Calculate savings impact = scenario.get("business_impact", {}) revenue_loss = impact.get("revenue_loss_per_hour", 5000) savings = int(revenue_loss * 0.85) # 85% savings # Add to audit trail audit_manager.add_execution(scenario_name, mode, savings=savings) # Create approval display if approval_required: approval_html = f"""
Action for {scenario_name} was approved and executed successfully.
Mode: {mode}
Cost Saved: ${savings:,}
Action for {scenario_name} was executed autonomously.
Mode: {mode}
Cost Saved: ${savings:,}