from flask import session import uuid from datetime import datetime class SessionManager: def __init__(self): self.sessions = {} def create_session(self): """Crea una nueva sesión""" session_id = str(uuid.uuid4()) session['id'] = session_id self.sessions[session_id] = { 'created_at': datetime.now(), 'last_activity': datetime.now(), 'mode': 'soporte', 'model': 'gemini', 'tts': 'EDGE', 'audio_state': { 'is_playing': False, 'current_audio': None }, 'chat_history': [] } return session_id def get_session(self, session_id=None): """Obtiene una sesión existente o crea una nueva""" if not session_id: session_id = session.get('id') if not session_id or session_id not in self.sessions: return self.create_session() self.sessions[session_id]['last_activity'] = datetime.now() return session_id def update_session(self, session_id, key, value): """Actualiza un valor en la sesión""" if session_id in self.sessions: self.sessions[session_id][key] = value self.sessions[session_id]['last_activity'] = datetime.now() def get_session_data(self, session_id, key=None): """Obtiene datos de la sesión""" if session_id not in self.sessions: return None if key: return self.sessions[session_id].get(key) return self.sessions[session_id] def add_message_to_history(self, session_id, message, sender): """Agrega un mensaje al historial de la sesión""" if session_id in self.sessions: self.sessions[session_id]['chat_history'].append({ 'text': message, 'sender': sender, 'timestamp': datetime.now() }) def update_audio_state(self, session_id, is_playing=False, current_audio=None): """Actualiza el estado del audio en la sesión""" if session_id in self.sessions: self.sessions[session_id]['audio_state'] = { 'is_playing': is_playing, 'current_audio': current_audio } def clear_session(self, session_id): """Limpia una sesión""" if session_id in self.sessions: del self.sessions[session_id]