""" Demo orchestration and presenter guidance """ from typing import Dict, List, Optional from enum import Enum from core.data_models import DemoMode, DemoStep class DemoOrchestrator: """Guide presenter through optimal demo flow""" def __init__(self, mode: DemoMode = DemoMode.INVESTOR): self.mode = mode self.current_step = 0 self.steps = self._get_steps_for_mode() def _get_steps_for_mode(self) -> List[DemoStep]: """Get demo steps based on mode""" if self.mode == DemoMode.QUICK: return [ DemoStep( title="Show Crisis", scenario="Cache Miss Storm", action="metrics", message="Highlight the critical metrics - this is happening right now", icon="📊" ), DemoStep( title="OSS Analysis", scenario="Cache Miss Storm", action="oss", message="Perfect analysis but requires manual work", icon="🤖" ), DemoStep( title="Enterprise Magic", scenario="Cache Miss Storm", action="enterprise", message="Watch ARF fix it automatically in minutes", icon="⚡" ) ] else: # INVESTOR mode return [ DemoStep( title="Problem Statement", scenario="Cache Miss Storm", action="metrics", message="This critical incident costs $8,500/hour right now", icon="💰" ), DemoStep( title="Current Solution (OSS)", scenario="Cache Miss Storm", action="oss", message="Our free edition gives perfect analysis but manual work", icon="🆓" ), DemoStep( title="ARF Solution (Enterprise)", scenario="Cache Miss Storm", action="enterprise", message="Autonomous healing with enterprise safety controls", icon="🚀" ), DemoStep( title="Business Impact", scenario=None, action="dashboard", message="Show how ARF transforms cost centers to profit engines", icon="📈" ), DemoStep( title="Custom ROI Analysis", scenario=None, action="roi_calc", message="Calculate their specific potential savings", icon="🧮" ) ] def get_next_guidance(self) -> Dict: """Get next guidance step""" if self.current_step >= len(self.steps): return self._create_completion_guidance() step = self.steps[self.current_step] self.current_step += 1 return { "title": step.title, "scenario": step.scenario, "action": step.action, "message": step.message, "icon": step.icon, "html": self._create_guidance_html(step) } def _create_guidance_html(self, step: DemoStep) -> str: """Create HTML guidance for presenter""" action_desc = self._get_action_description(step.action) return f"""
What to say: "{step.message}"
Ready for investor Q&A