
    gi                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ  ej                  e      Zd Zy)    N)
ChatOpenAI)SystemMessageHumanMessage	AIMessage)settings)safe_invoke_tool)get_dax_cartera_promptc                   K   | d   d   j                   }| j                  dd      }| j                  dd      }| j                  dg       dd }t        t        j                  d	      }d
| }|r	|d| dz  }dj                  |dd D cg c]  }|j                   d|j                     c}      }d}		 t        j                  j                  t        j                  j                  t        j                  j                  t                    dddd      }
t        |
dd      5 }|j                         }	ddd       | d| dt#                d|	 }t        j%                  d       |j'                  t)        |      t+        |      g       d{   }|j                   j-                         }ddl}|j1                  dd||j2                        j-                         }|j1                  dd||j2                        j-                         }d|j5                         v rK|j7                  d ||j8                  |j:                  z        }|r|j=                  d!      j-                         }t        j%                  d"|        d#|v r/|j?                  d#d      j-                         }dtA        |      giS t        j%                  d$       d%|i}tC        d&|       d{   }| j                  d'g       }d(|v r|jE                  d(       tG        jH                  |d)*      g|d+d(|d,S c c}w # 1 sw Y   xY w# t        $ r#}t        j!                  d|        Y d}~$d}~ww xY w7 7 w)-u   
    Nodo de ejecución EXCLUSIVO para tableros de Gestión, Cartera y Cobranzas.
    Transforma la consulta NL a DAX y ejecuta la herramienta de consultarAgrota.
    messages	user_nameDesconocidouser_position Nr   )modeltemperaturezUsuario actual: z ()
z: z..DOCUMENTACIONzKB_Modelo_Cartera.mdrzutf-8)encodingz!No se pudo cargar KB de Cartera: z

=== HISTORIAL ===
z

u$   

=== DOCUMENTACIÓN DEL MODELO ===
u.   ⚙️ Skill activada: CARTERA (cartera_skill))contentz^```[\w]*\n?)flagsz```$EVALUATEz(EVALUATE.*)   u    📄 DAX generada (sanitizada):
zDIRECT_RESPONSE:u(   🚀 DAX enviada a TOOL: consultarAgrotadaxconsultarAgrotaintenciones_pendientesCARTERAF)ensure_asciizDatos obtenidos de CARTERA)resultados_tecnicosr   mensaje_skill	dashboard	dax_query)%r   getr   r   
MODEL_NAMEjointypeospathdirnameabspath__file__openread	Exceptionloggerwarningr	   infoainvoker   r   stripresub	MULTILINEuppersearch
IGNORECASEDOTALLgroupreplacer   r   removejsondumps)stateprompt_usuarior   r   chat_historyllmuser_contextmhistory_str
kb_contentkb_pathfefull_system_promptdax_responsedax_coder7   matchfinal_answerargs	resultado
pendientess                         </opt/agrota/powerbi/client-mcp/agent/skills/cartera_skill.pycartera_skill_noderW      sG    
 :&r*22N		+}5IIIor2M99Z,Sb1L
8..A
>C &i[1L"]O1--))|BC?PQ!xr!))5QRK J@'',,rwwrwwx/HI4QUWfh~'31 	"QJ	"
 )>)@TRhRjQk  lS  T^  S_  `
KK@A01^,&  L
 ##))+Hvvor82<<vHNNPHvvgr82<<v@FFHH X^^%%		/8R]]RYY5NO{{1~++-H
KK3H:>? X%''(:B?EEGY|<=>> KK:;8D&'8$??I 3R8JJ)$ !%

95 IJ",5 a R	" 	" @:1#>??@6 @sv   B	M0"L*-	M07A/L< &L/7L< ?AM0M+EM0 M.!AM0/L94L< <	M(M#M0#M((M0.M0)r*   rA   logginglangchain_openair   langchain_core.messagesr   r   r   config.settingsr   agent.utils.mcp_helperr   agent.prompts.dax_promptsr	   	getLogger__name__r2   rW        rV   <module>rb      s8    	   ' J J $ 3 <			8	$Gra   