
    iN                     \   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ d	d
lmZmZmZmZ d	dlmZ ddlmZ  ej2                  dd      Z ee        ej6                  e      Z ej2                  dd      Zej>                  re dndZ ej>                  re dndZ!ej>                  re dndZ" eddde e!e"      Z#e#jI                  edgddgdg        ee      gZ%e#jM                  ejN                  e       e#jM                  ejN                  e       e#jM                  ejN                  ee%       e#jM                  ejN                  e       e#jQ                  d      d        Z)e#jQ                  d       d!        Z*e#jW                  e,      d"        Z-y)#u}   
FastAPI service para el agente de retail de chat.
Permite interacción con múltiples clientes simultáneos (ej: WhatsApp).
    N)DependsFastAPI)CORSMiddleware)JSONResponse)status)settings)setup_logging   )healthproductssessionschat)verify_token)session_manager	LOG_LEVELINFO)	log_levelAPI_ROOT_PATH /docsz/redocz/openapi.jsonz Retail Agent Chat API (Marcimex)zBAPI REST para asistente de ventas retail con soporte multi-clientez2.0.0)titledescriptionversiondocs_url	redoc_urlopenapi_url*T)allow_originsallow_credentialsallow_methodsallow_headers)prefix)r"   dependenciesstartupc                     K   t         j                  d       ddlm}  | j	                          ddlm}  |        d{    t        j                  dd      }t         j                  d| t         d	       y7 :w)
u#   Evento de inicio de la aplicación.u#   🚀 Retail Agent Chat API iniciadar   )neo4j_client)get_tools_asyncNAPI_PORT7206u4   📊 Documentación disponible en: http://localhost:r   )
loggerinforag_service.neo4j_clientr&   ensure_product_vector_indexmcp_integration.toolsr'   osgetenv	ROOT_PATH)r&   r'   ports      //opt/lhia/marcimex/agent/app/api/api_service.pystartup_eventr4   B   si      KK56 6,,. 6

 99Z(D
KKFtfYKW\]^ s   <A;A9;A;shutdownc                     K   ddl m}   |         t        j                          d{    t        j                  d       y7 w)u#   Evento de cierre de la aplicación.r   stop_schedulerNu#   👋 Retail Agent Chat API detenida)tasks.schedulerr8   r   closer*   r+   r7   s    r3   shutdown_eventr;   W   s5      /



!!!
KK56 "s   %AAAc                    K   t         j                  dt        |              t        t        j
                  dt        |      d      S w)z Manejador global de excepciones.u   ❌ Error no manejado: zError interno del servidor)detailerror)status_codecontent)r*   r>   strr   r   HTTP_500_INTERNAL_SERVER_ERROR)requestexcs     r3   global_exception_handlerrE   b   sE      LL*3s8*56992X
 s   A	A).__doc__loggingr/   fastapir   r   fastapi.middleware.corsr   fastapi.responsesr   	starletter   config.settingsr   config.logging_configr	   routesr   r   r   r   authr   core.session_managerr   r0   
_log_level	getLogger__name__r*   r1   ENABLE_DOCS	_docs_url
_redoc_url_openapi_urlappadd_middleware_authinclude_routerrouteron_eventr4   r;   exception_handler	ExceptionrE        r3   <module>rb      s    	 $ 2 *  % / 4 4  0 RYY{F+
 
 #			8	$
 BIIor*	 /7.B.B)E"	.6.B.B)F#
.6.B.B)M*
,T   %%%   
	   6==i  8   8??i  8   8??ie  L   4;;i  8i_ _( j7 7 y!	 "	ra   