
    i
                     h   d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	  ej                  e      Z edg      Zej                  dej                  	      d
efd       Zej%                  d      d        Zej                  dej(                  	      d        Zej%                  d      d
efd       Zy)u0   
Endpoints de gestión de sesiones e historial.
    N)	APIRouterstatus)HumanMessage	AIMessage)session_managersessions)tagsz/session/{uuid_conversation})status_codeuuid_conversationc                 z   K   t        j                  |        d{    t        j                  d|         y7 w)u7   
    Elimina la sesión de un cliente específico.
    Nu(   🗑️  Sesión eliminada manualmente: )r   remove_sessionloggerinfo)r   s    3/opt/lhia/marcimex/agent/app/api/routes/sessions.pydelete_sessionr      s8     
 
(
():
;;;
KK:;L:MNO <s   ;9;z/sessions/statsc                  n   K   t        j                          d{   } | dt         j                  dS 7 w)u8   
    Obtiene estadísticas de las sesiones activas.
    Nredis)active_sessionsbackendttl_seconds)r   get_active_sessions_countttl)active_counts    r   get_sessions_statsr      s:     
 )BBDDL (&**  Es   535z/redis/flushc                     K   t         j                  j                          d{   } t         j                  j                          d{    t        j                  d|  d       dd| dS 7 I7 %w)u   
    Limpia TODA la base de datos Redis actual (FLUSHDB).
    Elimina sesiones, contextos de flujo (redirect, balance) y cualquier otra clave.
    ⚠️ Operación destructiva e irreversible.
    Nu/   🔥 Redis FLUSHDB ejecutado — se eliminaron z clavesokzRedis limpiado correctamente)r   messagekeys_deleted)r   clientdbsizeflushdbr   warning)keys_befores    r   flush_redisr$   '   sj      (..5577K

 
 
(
(
***
NND[MQXYZ1#  8*s!   "A2A.%A2
A0$A20A2z/history/{uuid_conversation}c                 b  K   t        j                  |        d{   }|j                  j                  dg       }g }|D ][  }d}t	        |t
              rd}nt	        |t              rd}|j                  }|j                  dd      }|j                  ||d       ] | t        |      |d	S 7 w)
z5
    Obtiene el historial de chat de un cliente.
    Nmessagesunknownuser	assistantz8[CONTEXTO DEL SISTEMA - PRODUCTOS MOSTRADOS AL USUARIO]:zProductos mostrados:)rolecontent)r   history_countr&   )r   get_sessionstateget
isinstancer   r   r+   replaceappendlen)r   sessionr&   formatted_historymsgr*   r+   s          r   get_historyr7   8   s     
 $//0ABBG}}  R0H c<(DY'D ++//F"

 	  "
 	( /./% / Cs   B/B-BB/)__doc__loggingfastapir   r   langchain_core.messagesr   r   core.session_managerr   	getLogger__name__r   routerdeleteHTTP_204_NO_CONTENTstrr   r/   r   HTTP_200_OKr$   r7        r   <module>rF      s     % ; 0			8	$		% -6;U;UVPC P WP 
 
 ~6+=+=> ?  *+  ,rE   