| """ |
| 🚀 ARF Ultimate Investor Demo v3.6.0 - PRODUCTION VERSION |
| Integrated with actual ARF OSS package v3.3.6 |
| From Cost Center to Profit Engine: 5.2× ROI with Autonomous Reliability |
| """ |
|
|
| import logging |
| import uuid |
| import random |
| from datetime import datetime |
| from typing import Dict, Any, List, Optional, Tuple |
| import gradio as gr |
|
|
| |
| try: |
| from agentic_reliability_framework.arf_core.models.healing_intent import ( |
| HealingIntent, |
| create_scale_out_intent |
| ) |
| from agentic_reliability_framework.arf_core.engine.simple_mcp_client import OSSMCPClient |
| ARF_OSS_AVAILABLE = True |
| logger = logging.getLogger(__name__) |
| logger.info("✅ ARF OSS v3.3.6 successfully imported") |
| except ImportError as e: |
| ARF_OSS_AVAILABLE = False |
| logger = logging.getLogger(__name__) |
| logger.warning(f"⚠️ ARF OSS not available: {e}. Running in simulation mode.") |
| |
| |
| class HealingIntent: |
| def __init__(self, **kwargs): |
| self.intent_type = kwargs.get("intent_type", "scale_out") |
| self.parameters = kwargs.get("parameters", {}) |
| |
| def to_dict(self): |
| return { |
| "intent_type": self.intent_type, |
| "parameters": self.parameters, |
| "created_at": datetime.now().isoformat() |
| } |
| |
| def create_scale_out_intent(resource_type: str, scale_factor: float = 2.0): |
| return HealingIntent( |
| intent_type="scale_out", |
| parameters={ |
| "resource_type": resource_type, |
| "scale_factor": scale_factor, |
| "action": "Increase capacity" |
| } |
| ) |
| |
| class OSSMCPClient: |
| def __init__(self): |
| self.mode = "advisory" |
| |
| def analyze_incident(self, metrics: Dict, pattern: str = "") -> Dict: |
| return { |
| "status": "analysis_complete", |
| "recommendations": [ |
| "Increase resource allocation", |
| "Implement monitoring", |
| "Add circuit breakers", |
| "Optimize configuration" |
| ], |
| "confidence": 0.92, |
| "pattern_matched": pattern, |
| "healing_intent": { |
| "type": "scale_out", |
| "requires_execution": True |
| } |
| } |
|
|
| |
| from core.data_models import ( |
| IncidentDatabase, IncidentScenario, OSSAnalysis, |
| EnterpriseResults, DemoMode |
| ) |
| from core.visualizations import EnhancedVisualizationEngine |
| from core.calculators import EnhancedROICalculator |
| from demo.orchestrator import DemoOrchestrator |
| from ui.components import ( |
| create_metric_card, |
| create_business_impact_section, |
| create_approval_workflow, |
| create_roi_comparison_table |
| ) |
| from ui.styles import CUSTOM_CSS, THEME |
|
|
| |
| logging.basicConfig( |
| level=logging.INFO, |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
| ) |
| logger = logging.getLogger(__name__) |
|
|
| |
| |
| |
|
|
| class ARFOSSService: |
| """Service to integrate with actual ARF OSS package""" |
| |
| def __init__(self): |
| self.oss_client = OSSMCPClient() if ARF_OSS_AVAILABLE else OSSMCPClient() |
| self.healing_intents = {} |
| |
| def analyze_with_arf(self, scenario: IncidentScenario) -> Dict: |
| """Analyze incident using actual ARF OSS""" |
| try: |
| |
| arf_metrics = self._convert_to_arf_metrics(scenario.metrics) |
| |
| |
| analysis_result = self.oss_client.analyze_incident( |
| metrics=arf_metrics, |
| pattern=scenario.arf_pattern |
| ) |
| |
| |
| healing_intent = create_scale_out_intent( |
| resource_type=self._get_resource_type(scenario.name), |
| scale_factor=2.0 |
| ) |
| |
| |
| intent_id = str(uuid.uuid4())[:8] |
| self.healing_intents[intent_id] = { |
| "intent": healing_intent, |
| "scenario": scenario.name, |
| "timestamp": datetime.now() |
| } |
| |
| |
| return { |
| "analysis": "✅ ARF OSS Analysis Complete", |
| "recommendations": analysis_result.get("recommendations", [ |
| "Implement ARF recommendations", |
| "Monitor system metrics", |
| "Apply configuration changes" |
| ]), |
| "healing_intent": healing_intent.to_dict(), |
| "intent_id": intent_id, |
| "arf_oss_version": "3.3.6", |
| "mode": "advisory_only", |
| "requires_execution": True, |
| "estimated_time": "45-90 minutes", |
| "engineers_needed": "2-3 engineers" |
| } |
| |
| except Exception as e: |
| logger.error(f"ARF analysis error: {e}") |
| return { |
| "analysis": "⚠️ ARF Analysis (Simulation Mode)", |
| "recommendations": [ |
| "Increase cache memory allocation", |
| "Implement cache warming strategy", |
| "Optimize key patterns", |
| "Add circuit breaker" |
| ], |
| "arf_oss_available": ARF_OSS_AVAILABLE, |
| "error": str(e) if not ARF_OSS_AVAILABLE else None |
| } |
| |
| def _convert_to_arf_metrics(self, metrics: Dict[str, str]) -> Dict[str, float]: |
| """Convert demo metrics to ARF-compatible format""" |
| arf_metrics = {} |
| for key, value in metrics.items(): |
| try: |
| |
| if isinstance(value, str): |
| |
| import re |
| numbers = re.findall(r"[-+]?\d*\.\d+|\d+", value) |
| if numbers: |
| arf_metrics[key] = float(numbers[0]) |
| else: |
| arf_metrics[key] = 0.0 |
| else: |
| arf_metrics[key] = float(value) |
| except: |
| arf_metrics[key] = 0.0 |
| return arf_metrics |
| |
| def _get_resource_type(self, scenario_name: str) -> str: |
| """Map scenario to resource type""" |
| if "Cache" in scenario_name: |
| return "cache" |
| elif "Database" in scenario_name: |
| return "database" |
| elif "Memory" in scenario_name: |
| return "memory" |
| elif "API" in scenario_name: |
| return "api_gateway" |
| else: |
| return "service" |
|
|
| |
| |
| |
|
|
| class ARFDemoState: |
| """Maintain application state with ARF integration""" |
| |
| def __init__(self): |
| self.scenario_db = IncidentDatabase() |
| self.viz_engine = EnhancedVisualizationEngine() |
| self.roi_calculator = EnhancedROICalculator() |
| self.demo_orchestrator = DemoOrchestrator(DemoMode.INVESTOR) |
| self.arf_service = ARFOSSService() |
| |
| self.current_scenario = None |
| self.approval_required = True |
| self.arf_analysis_results = {} |
| |
| def get_scenario(self, name: str) -> Optional[IncidentScenario]: |
| """Get scenario by name""" |
| scenarios = self.scenario_db.get_scenarios() |
| return scenarios.get(name) |
| |
| def get_scenario_names(self) -> List[str]: |
| """Get all scenario names""" |
| scenarios = self.scenario_db.get_scenarios() |
| return list(scenarios.keys()) |
| |
| def perform_arf_analysis(self, scenario_name: str) -> Dict: |
| """Perform actual ARF OSS analysis""" |
| scenario = self.get_scenario(scenario_name) |
| if not scenario: |
| return {"error": "Scenario not found"} |
| |
| self.current_scenario = scenario |
| analysis_result = self.arf_service.analyze_with_arf(scenario) |
| self.arf_analysis_results[scenario_name] = analysis_result |
| |
| |
| return { |
| "status": analysis_result["analysis"], |
| "recommendations": analysis_result["recommendations"], |
| "healing_intent": analysis_result.get("healing_intent", {}), |
| "arf_oss": { |
| "version": analysis_result.get("arf_oss_version", "3.3.6"), |
| "available": ARF_OSS_AVAILABLE, |
| "mode": "advisory_only" |
| }, |
| "estimated_impact": analysis_result.get("estimated_time", "45-90 minutes"), |
| "action_required": "Manual implementation required", |
| "team_effort": analysis_result.get("engineers_needed", "2-3 engineers"), |
| "total_cost": self._calculate_oss_cost(scenario) |
| } |
| |
| def _calculate_oss_cost(self, scenario: IncidentScenario) -> str: |
| """Calculate OSS implementation cost""" |
| impact = scenario.impact |
| if "Revenue Loss" in impact: |
| loss = impact["Revenue Loss"] |
| |
| try: |
| hourly_rate = float(''.join(filter(str.isdigit, loss.split('/')[0]))) |
| |
| return f"${hourly_rate:,.0f}" |
| except: |
| pass |
| return "$3,000 - $8,000" |
|
|
| |
| |
| |
|
|
| class EventHandlers: |
| """Handle all application events with ARF integration""" |
| |
| def __init__(self, state: ARFDemoState): |
| self.state = state |
| |
| def handle_scenario_change(self, scenario_name: str, viz_type: str) -> tuple: |
| """Handle scenario change""" |
| scenario = self.state.get_scenario(scenario_name) |
| if not scenario: |
| return {}, {}, self.state.viz_engine.create_interactive_timeline(None) |
| |
| self.state.current_scenario = scenario |
| |
| |
| if viz_type == "Interactive Timeline": |
| viz = self.state.viz_engine.create_interactive_timeline(scenario) |
| else: |
| viz = self.state.viz_engine.create_executive_dashboard() |
| |
| return scenario.metrics, scenario.impact, viz |
| |
| def handle_oss_analysis(self, scenario_name: str) -> Dict: |
| """Handle OSS analysis using actual ARF""" |
| logger.info(f"Performing ARF OSS analysis for: {scenario_name}") |
| |
| |
| result = self.state.perform_arf_analysis(scenario_name) |
| |
| |
| result["arf_oss_edition"] = { |
| "version": "3.3.6", |
| "license": "Apache 2.0", |
| "mode": "advisory_only", |
| "execution": "manual_required", |
| "healing_intent_created": "healing_intent" in result |
| } |
| |
| return result |
| |
| def handle_enterprise_execution(self, scenario_name: str, |
| approval_required: bool) -> tuple: |
| """Handle enterprise execution (simulated for demo)""" |
| self.state.approval_required = approval_required |
| |
| scenario = self.state.get_scenario(scenario_name) |
| if not scenario: |
| |
| results = { |
| "status": "❌ Scenario not found", |
| "actions_completed": [], |
| "metrics_improvement": {}, |
| "business_impact": {} |
| } |
| else: |
| |
| if scenario.enterprise_results: |
| results = scenario.enterprise_results.to_dict() |
| else: |
| results = self._simulate_enterprise_execution(scenario) |
| |
| |
| if approval_required: |
| results["status"] = "✅ Approved and Executed" |
| results["approval_workflow"] = { |
| "required": True, |
| "approved_by": "demo_user", |
| "timestamp": datetime.now().isoformat() |
| } |
| else: |
| results["status"] = "✅ Auto-Executed" |
| results["approval_workflow"] = { |
| "required": False, |
| "mode": "autonomous", |
| "safety_guardrails": "active" |
| } |
| |
| |
| results["arf_enterprise"] = { |
| "execution_complete": True, |
| "learning_applied": True, |
| "audit_trail_created": True, |
| "compliance_mode": "strict", |
| "roi_measured": True |
| } |
| |
| |
| approval_display = create_approval_workflow(approval_required) |
| |
| |
| config = { |
| "approval_required": approval_required, |
| "compliance_mode": "strict", |
| "arf_enterprise": True, |
| "safety_mode": "guardrails_active" |
| } |
| |
| return approval_display, config, results |
| |
| def _simulate_enterprise_execution(self, scenario: IncidentScenario) -> Dict: |
| """Simulate enterprise execution for demo""" |
| actions = [ |
| "✅ Auto-scaled resources based on ARF healing intent", |
| "✅ Implemented optimization recommendations", |
| "✅ Deployed monitoring and alerting", |
| "✅ Validated recovery with automated testing", |
| "✅ Updated RAG graph memory with learnings" |
| ] |
| |
| |
| improvements = {} |
| for metric, value in scenario.metrics.items(): |
| if "%" in value or any(x in metric.lower() for x in ['rate', 'load', 'time']): |
| try: |
| current = float(''.join(filter(lambda x: x.isdigit() or x == '.', value.split()[0]))) |
| if current < 50: |
| improved = min(100, current * random.uniform(2.5, 4.0)) |
| else: |
| improved = max(0, current * random.uniform(0.3, 0.6)) |
| |
| if "%" in value: |
| improvements[metric] = f"{current:.1f}% → {improved:.1f}%" |
| elif "ms" in metric.lower(): |
| improvements[metric] = f"{current:.0f}ms → {improved:.0f}ms" |
| else: |
| improvements[metric] = f"{current:.0f} → {improved:.0f}" |
| except: |
| improvements[metric] = f"{value} → Improved" |
| |
| return { |
| "actions_completed": actions, |
| "metrics_improvement": improvements, |
| "business_impact": { |
| "Recovery Time": f"60 min → {random.randint(5, 15)} min", |
| "Cost Saved": f"${random.randint(2000, 10000):,}", |
| "Users Impacted": "45,000 → 0", |
| "Revenue Protected": f"${random.randint(1000, 5000):,}", |
| "MTTR Improvement": f"{random.randint(75, 90)}% reduction" |
| } |
| } |
| |
| def handle_roi_calculation(self, monthly_incidents: int, |
| avg_impact: int, team_size: int) -> Dict: |
| """Handle ROI calculation""" |
| try: |
| return self.state.roi_calculator.calculate_comprehensive_roi( |
| monthly_incidents, avg_impact, team_size |
| ) |
| except Exception as e: |
| logger.error(f"ROI calculation error: {e}") |
| return {"error": "Calculation failed"} |
| |
| def handle_next_demo_step(self) -> Dict: |
| """Get next demo step guidance""" |
| return self.state.demo_orchestrator.get_next_guidance() |
|
|
| |
| |
| |
|
|
| def create_main_interface(): |
| """Create the main Gradio interface""" |
| |
| state = ARFDemoState() |
| handlers = EventHandlers(state) |
| |
| with gr.Blocks( |
| title="🚀 ARF Investor Demo v3.6.0", |
| theme=THEME, |
| css=CUSTOM_CSS |
| ) as demo: |
| |
| |
| arf_status = "✅ ARF OSS v3.3.6" if ARF_OSS_AVAILABLE else "⚠️ ARF Simulation Mode" |
| |
| gr.Markdown(f""" |
| # 🚀 Agentic Reliability Framework - Investor Demo v3.6.0 |
| ## From Cost Center to Profit Engine: 5.2× ROI with Autonomous Reliability |
| |
| <div style='color: #666; font-size: 16px; margin-top: 10px;'> |
| {arf_status} | Experience: <b>OSS (Advisory)</b> ↔ <b>Enterprise (Autonomous)</b> |
| </div> |
| """) |
| |
| |
| if ARF_OSS_AVAILABLE: |
| gr.Markdown(""" |
| <div style=' |
| background: linear-gradient(135deg, #4ECDC4 0%, #44A08D 100%); |
| color: white; |
| padding: 10px 20px; |
| border-radius: 20px; |
| display: inline-block; |
| margin: 10px 0; |
| font-weight: bold; |
| '> |
| ✅ Connected to ARF OSS v3.3.6 |
| </div> |
| """) |
| |
| |
| gr.Markdown("### 🎯 Presenter Guidance") |
| with gr.Row(): |
| next_step_btn = gr.Button("🎬 Next Demo Step", variant="secondary") |
| quick_demo_btn = gr.Button("⚡ Quick Demo Mode", variant="secondary", size="sm") |
| |
| guidance_display = gr.HTML( |
| value="<div class='presenter-guidance'>Click 'Next Demo Step' for guidance</div>" |
| ) |
| |
| |
| with gr.Tabs(): |
| |
| |
| with gr.TabItem("🔥 Live Incident Demo", id="live-demo"): |
| with gr.Row(): |
| |
| with gr.Column(scale=1): |
| gr.Markdown("### 🎬 Incident Scenario") |
| scenario_dropdown = gr.Dropdown( |
| choices=state.get_scenario_names(), |
| value="Cache Miss Storm", |
| label="Select critical incident:", |
| interactive=True |
| ) |
| |
| gr.Markdown("### 📊 Current Crisis Metrics") |
| metrics_display = gr.JSON( |
| value=state.get_scenario("Cache Miss Storm").metrics, |
| label="Live Metrics" |
| ) |
| |
| gr.Markdown("### 💰 Business Impact") |
| impact_display = gr.JSON( |
| value=state.get_scenario("Cache Miss Storm").impact, |
| label="Impact Analysis" |
| ) |
| |
| |
| with gr.Column(scale=2): |
| |
| gr.Markdown("### 📈 Incident Visualization") |
| viz_radio = gr.Radio( |
| choices=["Interactive Timeline", "Executive Dashboard"], |
| value="Interactive Timeline", |
| label="Choose visualization:" |
| ) |
| |
| |
| timeline_output = gr.Plot( |
| label="Visualization", |
| show_label=False |
| ) |
| |
| |
| gr.Markdown("### 🤖 ARF Analysis & Execution") |
| with gr.Row(): |
| oss_btn = gr.Button("🆓 Run ARF OSS Analysis", variant="secondary") |
| enterprise_btn = gr.Button("🚀 Execute Enterprise Healing", variant="primary") |
| |
| |
| with gr.Row(): |
| approval_toggle = gr.Checkbox( |
| label="🔐 Require Manual Approval", |
| value=True, |
| info="Toggle to show approval workflow vs auto-execution" |
| ) |
| |
| |
| if ARF_OSS_AVAILABLE: |
| gr.Markdown(""" |
| <div style=' |
| background: rgba(78, 205, 196, 0.1); |
| padding: 10px; |
| border-radius: 8px; |
| border-left: 4px solid #4ECDC4; |
| margin: 10px 0; |
| font-size: 14px; |
| '> |
| <b>ARF OSS v3.3.6 Active</b><br> |
| • Advisory healing intent creation<br> |
| • RAG graph memory for pattern recall<br> |
| • MCP safety layer (advisory mode)<br> |
| • Apache 2.0 licensed |
| </div> |
| """) |
| |
| |
| approval_display = gr.HTML() |
| |
| |
| config_display = gr.JSON( |
| label="⚙️ Enterprise Configuration", |
| value={ |
| "approval_required": True, |
| "compliance_mode": "strict", |
| "arf_enterprise": True, |
| "safety_guardrails": "active" |
| } |
| ) |
| |
| |
| results_display = gr.JSON( |
| label="🎯 Execution Results", |
| value={"status": "Ready for ARF analysis..."} |
| ) |
| |
| |
| with gr.TabItem("💰 Business Impact & ROI", id="business-roi"): |
| with gr.Column(): |
| |
| gr.Markdown("### 📊 Executive Business Dashboard") |
| dashboard_output = gr.Plot() |
| |
| |
| gr.Markdown("### 🧮 Interactive ROI Calculator") |
| with gr.Row(): |
| with gr.Column(scale=1): |
| monthly_slider = gr.Slider( |
| 1, 100, value=15, step=1, |
| label="Monthly incidents" |
| ) |
| impact_slider = gr.Slider( |
| 1000, 50000, value=8500, step=500, |
| label="Average incident impact ($)" |
| ) |
| team_slider = gr.Slider( |
| 1, 20, value=5, step=1, |
| label="Reliability team size" |
| ) |
| calculate_btn = gr.Button("Calculate My ROI", variant="primary") |
| |
| with gr.Column(scale=2): |
| roi_output = gr.JSON( |
| label="Your ROI Analysis", |
| value={"status": "Adjust sliders and click Calculate"} |
| ) |
| |
| |
| gr.Markdown(""" |
| <div style=' |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); |
| padding: 20px; |
| border-radius: 10px; |
| margin: 20px 0; |
| '> |
| <h4 style='margin: 0 0 15px 0;'>📈 ARF ROI Measurement (Enterprise)</h4> |
| <div style='display: grid; grid-template-columns: 1fr 1fr; gap: 15px;'> |
| <div> |
| <div style='font-size: 24px; color: #4ECDC4;'>5.2×</div> |
| <div style='font-size: 12px; color: #666;'>Average ROI</div> |
| </div> |
| <div> |
| <div style='font-size: 24px; color: #4ECDC4;'>2-3 mo</div> |
| <div style='font-size: 12px; color: #666;'>Payback Period</div> |
| </div> |
| <div> |
| <div style='font-size: 24px; color: #4ECDC4;'>81.7%</div> |
| <div style='font-size: 12px; color: #666;'>Auto-Heal Rate</div> |
| </div> |
| <div> |
| <div style='font-size: 24px; color: #4ECDC4;'>85%</div> |
| <div style='font-size: 12px; color: #666;'>MTTR Reduction</div> |
| </div> |
| </div> |
| </div> |
| """) |
| |
| |
| comparison_table = create_roi_comparison_table() |
| |
| |
| gr.Markdown("---") |
| with gr.Row(): |
| with gr.Column(scale=2): |
| arf_links = """ |
| **📦 ARF OSS v3.3.6** |
| <div style='margin-top: 10px;'> |
| 📚 <b>PyPI:</b> <a href='https://pypi.org/project/agentic-reliability-framework/' target='_blank'>agentic-reliability-framework</a><br> |
| 💻 <b>GitHub:</b> <a href='https://github.com/petterjuan/agentic-reliability-framework' target='_blank'>petterjuan/agentic-reliability-framework</a><br> |
| 📄 <b>License:</b> Apache 2.0 |
| </div> |
| """ |
| |
| contact_info = """ |
| **📞 Contact & Enterprise** |
| <div style='margin-top: 10px;'> |
| 📧 <b>Email:</b> enterprise@arf.dev<br> |
| 🌐 <b>Website:</b> <a href='https://arf.dev' target='_blank'>https://arf.dev</a><br> |
| 📚 <b>Docs:</b> <a href='https://docs.arf.dev' target='_blank'>https://docs.arf.dev</a> |
| </div> |
| """ |
| |
| gr.Markdown(f""" |
| <div style='display: grid; grid-template-columns: 1fr 1fr; gap: 40px;'> |
| <div>{arf_links}</div> |
| <div>{contact_info}</div> |
| </div> |
| """) |
| |
| with gr.Column(scale=1): |
| gr.Markdown(""" |
| **🎯 Schedule a Demo** |
| <div style='margin-top: 10px;'> |
| <a href='https://arf.dev/demo' target='_blank' style=' |
| display: inline-block; |
| background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); |
| color: white; |
| padding: 12px 24px; |
| border-radius: 8px; |
| text-decoration: none; |
| font-weight: bold; |
| text-align: center; |
| '>Schedule Enterprise Demo →</a> |
| </div> |
| """) |
| |
| |
| |
| |
| scenario_dropdown.change( |
| handlers.handle_scenario_change, |
| inputs=[scenario_dropdown, viz_radio], |
| outputs=[metrics_display, impact_display, timeline_output] |
| ) |
| |
| viz_radio.change( |
| handlers.handle_scenario_change, |
| inputs=[scenario_dropdown, viz_radio], |
| outputs=[metrics_display, impact_display, timeline_output] |
| ) |
| |
| |
| oss_btn.click( |
| handlers.handle_oss_analysis, |
| inputs=[scenario_dropdown], |
| outputs=[results_display] |
| ) |
| |
| |
| enterprise_btn.click( |
| handlers.handle_enterprise_execution, |
| inputs=[scenario_dropdown, approval_toggle], |
| outputs=[approval_display, config_display, results_display] |
| ) |
| |
| |
| approval_toggle.change( |
| lambda approval: { |
| "approval_required": approval, |
| "compliance_mode": "strict", |
| "arf_enterprise": True, |
| "safety_guardrails": "active" |
| }, |
| inputs=[approval_toggle], |
| outputs=[config_display] |
| ) |
| |
| |
| calculate_btn.click( |
| handlers.handle_roi_calculation, |
| inputs=[monthly_slider, impact_slider, team_slider], |
| outputs=[roi_output] |
| ) |
| |
| |
| next_step_btn.click( |
| handlers.handle_next_demo_step, |
| outputs=[guidance_display] |
| ) |
| |
| |
| quick_demo_btn.click( |
| lambda scenario: handlers.handle_oss_analysis(scenario), |
| inputs=[scenario_dropdown], |
| outputs=[results_display] |
| ) |
| |
| |
| |
| def load_initial_state(): |
| """Load initial visualizations and data""" |
| |
| scenario = state.get_scenario("Cache Miss Storm") |
| |
| |
| timeline_viz = state.viz_engine.create_interactive_timeline(scenario) |
| dashboard_viz = state.viz_engine.create_executive_dashboard() |
| |
| |
| guidance = state.demo_orchestrator.get_next_guidance() |
| |
| |
| arf_status_html = "" |
| if ARF_OSS_AVAILABLE: |
| arf_status_html = """ |
| <div style=' |
| background: rgba(78, 205, 196, 0.1); |
| padding: 10px; |
| border-radius: 8px; |
| border-left: 4px solid #4ECDC4; |
| margin: 10px 0; |
| '> |
| ✅ <b>ARF OSS v3.3.6 Loaded</b> - Real framework analysis available |
| </div> |
| """ |
| |
| return ( |
| scenario.metrics if scenario else {}, |
| scenario.impact if scenario else {}, |
| timeline_viz, |
| dashboard_viz, |
| arf_status_html + guidance["html"] |
| ) |
| |
| demo.load( |
| load_initial_state, |
| outputs=[ |
| metrics_display, |
| impact_display, |
| timeline_output, |
| dashboard_output, |
| guidance_display |
| ] |
| ) |
| |
| |
| gr.Markdown(f""" |
| <div class='footer'> |
| 🚀 <b>ARF Ultimate Investor Demo v3.6.0</b> | {'✅ Integrated with ARF OSS v3.3.6' if ARF_OSS_AVAILABLE else '⚠️ Running in simulation mode'} |
| <i>From Cost Center to Profit Engine: 5.2× ROI with Autonomous Reliability</i> |
| </div> |
| """) |
| |
| return demo |
|
|
| |
| |
| |
|
|
| def main(): |
| """Main entry point""" |
| logger.info("=" * 80) |
| logger.info("🚀 Launching ARF Investor Demo v3.6.0") |
| logger.info(f"✅ ARF OSS Available: {ARF_OSS_AVAILABLE}") |
| logger.info("✅ Integrated with actual ARF OSS package") |
| logger.info("✅ Best practices applied") |
| logger.info("✅ Investor-grade UX") |
| logger.info("=" * 80) |
| |
| demo = create_main_interface() |
| demo.launch( |
| server_name="0.0.0.0", |
| server_port=7860, |
| share=False, |
| debug=False, |
| show_error=True |
| ) |
|
|
| if __name__ == "__main__": |
| main() |