
    ai                     <   d dl mZmZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dlmZ d dlmZmZ  e
         ed	      Zej#                  ed
gdd
gd
g       ej$                  j'                  ej$                  j)                  e            Zej$                  j/                  ed      Z eedd      5 Z ej6                  e      Zddd        e ej:                  d            Zej?                  d      d        Z ej?                  d      de!fd       Z"ej?                  d      d        Z# G d de      Z$ej?                  d      de!fd       Z%ejM                  d      de!de$fd        Z'e(d!k(  rd dl)Z) e)jT                  ed"d#$       yy# 1 sw Y   xY w)%    )FastAPIHTTPException)CORSMiddleware)	BaseModelN)load_dotenv)OpenAI)analizar_clientechatear_sobre_clientezPerfil Usuarios API)title*T)allow_originsallow_credentialsallow_methodsallow_headersz	data.jsonrzutf-8)encodingOPENAI_API_KEY)api_key/c                  
    ddiS )Nmessagez_API activa. Pruebe /perfil/{cedula}, /recomendaciones/{cedula} o /api/crm/inteligencia/{cedula} r       /opt/ngrok/main.py	read_rootr   #   s    xyyr   z/perfil/{cedula}cedulac                 J    t         D ]  }|d   | k(  s|c S  t        dd      )Nr     Usuario no encontradostatus_codedetail)users_dbr   )r   users     r   
get_perfilr%   '   s2     >V#K C0G
HHr   z	/perfilesc                      t         S )N)r#   r   r   r   get_all_perfilesr'   .   s    Or   c                       e Zd ZU eed<   y)ChatPreguntapreguntaN)__name__
__module____qualname__str__annotations__r   r   r   r)   r)   3   s    Mr   r)   z/api/crm/inteligencia/{cedula}c                     d}t         D ]  }|d   | k(  s|} n |st        dd      t        |      }d|v rt        d|d         | |j                  d      |d	S )
z
    Endpoint para alimentar el Dashboard de un CRM. 
    Devuelve scores comerciales, riesgo y perfilamiento generado por OpenAI.
    Nr   r   r   r    error  nombre)r   r3   inteligencia_comercial)r#   r   r	   get)r   	user_datar$   resultado_ias       r   get_inteligencia_crmr8   7   s     I >V#I
 4KLL $I.L,L4IJJ --)". r   z/api/crm/chat/{cedula}payloadc                     d}t         D ]  }|d   | k(  s|} n |st        dd      t        ||j                        }d|v rt        d|d         | |j	                  d      |j                  |d	   d
S )u   
    Permite hacer preguntas libres sobre un cliente usando IA.
    Body JSON esperado: {"pregunta": "¿Por qué es riesgoso este cliente?"}
    Nr   r   r   r    r1   r2   r3   	respuesta)r   r3   r*   r;   )r#   r   r
   r*   r5   )r   r9   r6   r$   resultado_chats        r   chat_clienter=   S   s     I >V#I
 4KLL*9g6F6FGN. N74KLL --)$$#K0	 r   __main__z0.0.0.0i%  )hostport)+fastapir   r   fastapi.middleware.corsr   pydanticr   jsonosdotenvr   openair   crm_ai_servicer	   r
   appadd_middlewarepathdirnameabspath__file__BASE_DIRjoin	DATA_FILEopenfloadr#   getenvclientr5   r   r.   r%   r'   r)   r8   postr=   r+   uvicornrunr   r   r   <module>rZ      s   * 2   	   C )*   %%%   77??277??845GGLL;/		)S7+ qtyy|H 
			"23	4z z 	Is I I  9  	)*  +6 
"# |  $4 zGKK)$/ c s   5FF