""" event_handler.py SkyOS Dashboard Event Handler Verbindet alle UI-Komponenten mit den Backend-Modulen. Autor: Sky Meilin Projekt: SkyOS """ from __future__ import annotations import logging logger = logging.getLogger("SkyOS.Dashboard") # --------------------------------------------------------- # Backend Bridge # --------------------------------------------------------- def process_message(message: str) -> str: """ Übergangspunkt zum SkyOS Router. Wird später ersetzt durch: Router.handle(message) """ return ( "Nachricht empfangen. " "Die Verarbeitung übernimmt später der SkyOS Router." ) # --------------------------------------------------------- # Chat Events # --------------------------------------------------------- def send_message(text, audio): """ Standard-Chatcallback. """ try: if text: user_input = text elif audio: user_input = "🎤 Spracheingabe empfangen." else: return [], "", None response = process_message(user_input) history = [ { "role": "user", "content": user_input, }, { "role": "assistant", "content": response, }, ] return history, "", None except Exception: logger.exception("Chat-Verarbeitung fehlgeschlagen.") return ( [ { "role": "assistant", "content": "⚠️ Fehler bei der Verarbeitung." } ], "", None, ) # --------------------------------------------------------- # Status Events # --------------------------------------------------------- def refresh_status(): """ Status-Aktualisierung. Später: StatusMonitor.get_status() """ logger.info("Status aktualisiert") return ( "🟢 Online", "🟡 Nicht verbunden", "🟢 Aktiv", "🟢 Aktiv", "🟢 Aktiv", "🟢 Aktiv", "🟢 Online", "🟢 Online", ) # --------------------------------------------------------- # Header Events # --------------------------------------------------------- def refresh_header(): """ Aktualisiert die Dashboard-Uhr. """ from .header import current_time return ( current_time(), ) # --------------------------------------------------------- # Event Registrierung # --------------------------------------------------------- def register_events( *, status: dict, stream: dict, chat: dict, navigation: dict, ): """ Registriert alle Dashboard-Events. """ logger.info("Registriere Dashboard Events...") # Chat Button if "send" in chat: chat["send"].click( fn=send_message, inputs=[ chat["message"], chat["audio"], ], outputs=[ chat["chatbot"], chat["message"], chat["audio"], ], ) # Enter Taste if "message" in chat: chat["message"].submit( fn=send_message, inputs=[ chat["message"], chat["audio"], ], outputs=[ chat["chatbot"], chat["message"], chat["audio"], ], ) logger.info( "Dashboard Events registriert." )