
    ;&hE                        d dl Z d dlmZmZmZmZmZ d dlmZ d dl	Z	d dl
mZ d dlmZ  e              e	j        d          Z ee          Z ed	          Zed
efd            Zed
edefd            Zed
edefd            Zed
edefd            Zed
edefd            Zed
edefd            Zd
edefdZ edd eddgd          g          Z eddegeeeeeeg          Zd ZdS )    N)AgentRunnerfunction_toolModelSettingsFileSearchTool)OpenAI)load_dotenv)AnyOPENAI_API_KEY)api_keyrequired)tool_choiceusrEmailc           	      p    d}d| i}ddddddd	d
d}t          j        |||          }t          |          S )Nz,https://api.sistemaml.net/app/password/emailemailno-cachePostmanRuntime/7.43.4*/*gzip, deflate, br
keep-aliveuser_compratelia
1nt3l14p1$!application/x-www-form-urlencoded)Cache-Control
User-AgentAcceptAccept-Encoding
Connectionr   passwordContent-Typedataheaders)requestspoststr)r   urlpayloadr#   responses        (/var/www/FlaskApp/agent_test1_Spanish.pyreset_passwordr+      s_    
8C 	G $-."":	 	G }Sw@@@Hx==    usrPassc           
      (   t          | |          }|d         }|d         }d| }d| ddddd	d
}t          j        ||          }|                                }g }	|                    dg           D ]l}
|	                    |
                    dd          |
                    dd          |
                    dd          |
                    dd          d           mdt          |	           dt          |	          |	d}t          |          S )Naccess_tokenuser_idz,https://api.sistemaml.net/app/preAlert/list/Bearer r   r   r   r   r   Authorizationr   r   r   r   r   r#   r"   tracking descriptionpriceinstructions)r5   r7   r8   r9   Tz prealertas encontrados.)successmessagetotalr"   )get_Token_and_Idr$   getjsonappendlenr&   )r   r-   credsAccess_tokenr0   r'   r#   r)   response_data	prealertsitemoutputs               r*   prealertlist_processrH   9   sN    Xw//E(LIG
 C
B
BC .|--)* G |C000HMMOOMI!!&"--  R0088M266XXgr** HH^R88	
 
 	 	 	 	 )nn>>>Y	 F v;;r,   c           
         t          | |          }|d         }|d         }d| }d| ddddd	d
}t          j        ||          }|                                }g }	d}
|                    dg           D ]}|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dg           }|                    dg           }|r*|D ]&}|||||||d}|	                    |           |
dz  }
'|||||||d}|	                    |           |
dz  }
|
|	d}t          |          S )Nr/   r0   z'https://api.sistemaml.net/app/shs/list/r1   r   r   r   r   r   r2   r4   r   r"   idr6   fechastatuslbpago_verificar	trackingswrsshsubszSH#rK   rL   librasrN   rO   rP      SHrK   rL   rS   rN   rO   rP   total_shsubspackagesr=   r$   r>   r?   r@   r&   )r   r-   rB   rC   r0   r'   r#   r)   r"   resultrX   packagesh_idsh_fecha	sh_status	sh_librassh_pagosh_trackingssh_wrsrQ   shsubentryrG   s                          r*   shsList_processrf   g   s	    Xw//E(LIG
 >G
=
=C .|--)* G |C000H==??D F L 88FB'' $ $D"%%;;w++KK"--	++dA&&	,R00{{;33UB''Xr** 	 " " %'&%,!-!  e$$$!" !#"!() E MM%   ALL % F
 v;;r,   c           
         t          | |          }|d         }|d         }d| }d| ddddd	d
}t          j        ||          }|                                }g }	d}
|                    dg           D ]}|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dd          }|                    dg           }|                    dg           }|r*|D ]&}|||||||d}|	                    |           |
dz  }
'|||||||d}|	                    |           |
dz  }
|
|	d}t          |          S )Nr/   r0   z+https://api.sistemaml.net/app/shs/listSent/r1   r   r   r   r   r   r2   r4   r   r"   rJ   r6   rK   rL   rM   rN   rO   rP   rQ   rR   rT   rU   rW   rZ   )r   r-   rB   rC   r0   r'   r#   r)   r"   r[   rX   r\   r]   r^   r_   sh_pesora   rb   rc   rQ   rd   re   rG   s                          r*   shsListSent_processri      s
    Xw//E(LIG B
A
AC .|--)* G |C000H==??D F L 88FB'' $ $D"%%;;w++KK"--	D!$$,R00{{;33UB''Xr** 	 " " %'$%,!-!  e$$$!" !# !() E MM%   ALL % F
 v;;r,   c                    t          | |          }|d         }|d         }d| }d| ddddd	d
}t          j        ||          }|                                }g }	d}
|                    dg           D ]}|                    dd          }|                    dd          }|                    dd          }|                    dg           D ]a}||||                    dd          |                    dd          |                    dd          d}|	                    |           |
dz  }
b|
|	d}t          |          S )Nr/   r0   z'https://api.sistemaml.net/app/wrs/list/r1   r   r   r   r   r   r2   r4   r   r"   r5   r6   rJ   
verificadowrsubs	contenidotiporS   )r5   	wr_numberrk   rm   rn   rS   rT   )total_wrsubsrY   rZ   )r   r-   rB   rC   r0   r'   r#   r)   r"   r[   rp   r\   r5   WRrk   wrsubre   rG   s                     r*   wrsList_processrs     s    Xw//E(LIG
 >G
=
=C .|--)* G |C000H
 ==??D F L 88FB''  ;;z2..;;tB;;|B//
[[2.. 
	 
	E$'"YY{B77		&"--))Ha00 E MM%   ALL
	 % F v;;r,   c                 `   d}dd| |d}ddi}t          j        |||          }	 |                                }|                    d          rd	|v r|d	                             d
          }|d	         d                             d          }|d	         d                             d          }	|d	         d                             d          }
|||	|
|                    dd          dS d|                    dd          iS # t          $ r}ddt          |           icY d }~S d }~ww xY w)N#https://api.sistemaml.net/app/loginr   r   r   r   app_usernameapp_passwordr    r   r!   r:   r"   r/   userrJ   agentidRnamer;   zLogin success.)r/   r0   agent_idclient_namer;   errorAuthentication failed.Failed to parse response: r$   r%   r?   r>   	Exceptionr&   )r   r-   r'   r(   r#   r)   r"   tokenr0   r}   r|   es               r*   get_credentialsr   E  s   
/C $  	 G 	;G
 }Sw@@@H
}}88I 	6T>>L$$^44E6l6*..t44GF|G,0077Hff%))&11D !&"$"88I/?@@   )-EFF   
 
 
:#a&&::
 	
 	
 	
 	
 	
 	

s$   CD -D 
D-D("D-(D-c                    d}dd| |d}ddi}t          j        |||          }	 |                                }|                    d          rEd	|v rA|d	                             d
          }|d	         d                             d          }||dS d|                    dd          iS # t          $ r}	ddt          |	           icY d }	~	S d }	~	ww xY w)Nru   r   r   rv   r    r   r!   r:   r"   r/   ry   rJ   )r/   r0   r   r;   r   r   r   )
r   r-   r'   r(   r#   r)   r"   r   r0   r   s
             r*   r=   r=   s  s6   
/C $  	 G 	;G
 }Sw@@@H
}}88I 
	6T>>L$$^44E6l6*..t44G %"   )-EFF   
 
 
:#a&&::
 	
 	
 	
 	
 	
 	

s$   A-B, B, ,
C6C	CCcompany_agenta  Eres un agente encargado de proveer al TRIAGE AGENT con respuestas a preguntas de los clientes que tengan que ver acerca de datos de la empresa courier como direccion fisica,
    horarios de operacion, servicios y costos, asi como datos de los procedimientos aduanales en Ecuador, materiales prohibido segun la aduana de Ecuador,
    impuestos aplicados segun descripcion del producto   #vs_6824df08a0f88191b086dc004d6b1c6cT)max_num_resultsvector_store_idsinclude_search_results)r|   r9   toolszTriage agentuD  
    Eres un asistente de atención al cliente de la empresa COMPRATELIA.
    No procedas con ninguna solicitud hasta que el cliente haya sido autenticado.

    🔐 Flujo de Autenticación:
    Pide al cliente su usuario y contraseña para verificar su identidad.
    Ejemplo: "Antes de continuar, ¿podrías proporcionarme tu usuario y contraseña para verificar tu cuenta?"
    Usa la herramienta **get_credentials** con las credenciales proporcionadas.
    Si las credenciales son válidas:
    Guarda en memoria el [nombre del cliente:client_name], el [identificacion de usuario:user_id], y las credenciales [nombre de usuario:usrEmail, password:usrPass] para su uso futuro.
    Dirígete al cliente por su nombre a partir de ese momento.
    Ejemplo: "Gracias, [client_name]. Tus credenciales son válidas. ¿En qué puedo ayudarte hoy?"
    Si las credenciales son inválidas:
    Informa al cliente de manera educada.
    Permite hasta tres intentos.
    Después de 3 fallos, ofrece restablecer la contraseña por correo electrónico:
    Ejemplo: "Parece que has ingresado credenciales incorrectas varias veces. ¿Te gustaría restablecer tu contraseña y recibir una temporal por correo electrónico?"
    Si el cliente acepta, pide su correo electrónico y usa la herramienta **reset_password**.
    Dile al cliente: "Te he enviado una contraseña temporal a tu correo electrónico. Por favor, revisa tu bandeja de entrada y proporciona las nuevas credenciales aquí para verificar tu cuenta."

    ✅ Después de una Autenticación Exitosa:
    Redirige según el tipo de solicitud descrito a continuación.

    📦 Lógica de Enrutamiento y Manejo de Paquetes:
        
    Si el cliente desea:
    Consultar sobre paquetes que ya han sido enviados o el mensaje del cliente incluye palabras como "enviado", "entregado","en transito","ya estan en camino" o equivalentes, usa la herramienta **shsListSent_process** para obtener dicha lista.
    Consultar sobre paquetes que están listos para enviar desde el almacén o el mensaje del cliente incluye palabras como "listo para envio", "aun no enviados","preparados para salir" o equivalentes, usa la herramienta **shsList_process** para obtener dicha lista.
    Consultar sobre paquetes actualmente en el almacén o el mensaje del cliente incluye palabras como "en Miami", "llegados","recibidos en almacen" o equivalentes,usa la herramienta **wrsList_process** para obtener dicha lista.
    
    En el caso de los paquetes actualmente en el almacén (se obtuvieron a traves de la herramienta **wrsList_process** revisar lo siguiente:
    Si verificado es 0 → "El cliente debe proporcionar la factura del paquete."
    Si verificado es 1 → "Esperando a que el cliente solicite el envío."
    
    Si el cliente proporciona un número de seguimiento, tracking number o número WR:
    Consulta las siguientes herramientas 
    **wrsList_process**
    **shsListSent_process** 
    **shsList_process** 
    para obtener las listas de todos los paquetes y busca el número que el cliente dio dentro de cada lista.
    Si se encuentra:
    Proporciona todos los detalles disponibles.
    Solo si aparece en una lista de obtenida de los tools  **shsListSent_process**, aplica:
    status: "ABIERTO" → "El paquete está en proceso de consolidación."
    status: "PROCESADO" y pago_verificar: 0 → "El paquete está esperando pago."
    status: "PROCESADO" y pago_verificar: 1 → "El paquete está en Miami, listo para ser despachado."
    Si no se encuentra:
    Responde: "El número de información que proporcionaste no fue encontrado."
    Sé siempre amable, claro y servicial. Nunca omitas el paso de autenticación.
    
    Si el cliente pregunta por informacion acerca de datos de la empresa courier como direccion fisica,
    horarios de operacion, servicios y costos, asi como datos de los procedimientos aduanales en Ecuador, materiales prohibido segun la aduana de Ecuador,
    impuestos aplicados segun descripcion del producto debes enrutar estos requerimientos al agente  **company_agent**.
    No le digas al cliente que lo vas vas a transferir, solo hazlo y espera el resultado.
)r|   r9   handoffsr   c                    K   t          d           t          |            t          |           t          j        t          |            d {V }t          |j                   |S )Nz/Triage Agent Input Received in sub_agent_ai.py:)input)printr   runtriage_agentfinal_output)
input_dataCustomerPhone	respuestas      r*   run_triage_agentr     sn      	
;<<<	*	-J|:>>>>>>>>>I	)
 !!!r,   )r$   agentsr   r   r   r   r   openair   osdotenvr	   typingr
   getenvr   clientmodel_settingsr&   r+   rH   rf   ri   rs   r   r=   r   r   r    r,   r*   <module>r      s    L L L L L L L L L L L L L L       				              ")$
%
%		 	 	  :666C    8 +3 + + + + +Z Lc LC L L L L\ N# N N N N N` ;c ;C ; ; ; ;z +
S +
# +
 +
 +
 +
Z%
c %
3 %
 %
 %
 %
P 	: N !"G!H'+  
   u	6n _>/:Mo^r
su; ; ;z    r,   