
    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_ub_presupuesto_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 Ventas y Utilidad Bruta vs Presupuesto.
    Transforma la consulta NL a DAX y ejecuta la herramienta de UB/Presupuesto.
    messages	user_nameDesconocidouser_position Nr   )modeltemperaturezUsuario actual: z ()
z: z..DOCUMENTACIONzKB_Modelo_UB_Presupuesto.mdrzutf-8)encodingz(No se pudo cargar KB de UB Presupuesto: z

=== HISTORIAL ===
z

u$   

=== DOCUMENTACIÓN DEL MODELO ===
u<   ⚙️ Skill activada: UB_PRESUPUESTO (ub_presupuesto_skill))contentz^```[\w]*\n?)flagsz```$EVALUATEz(EVALUATE.*)   u    📄 DAX generada (sanitizada):
zDIRECT_RESPONSE:u5   🚀 DAX enviada a TOOL: consultarAgrotaUbPresupuestodaxconsultarAgrotaUbPresupuestointenciones_pendientesUB_PRESUPUESTOF)ensure_asciiz!Datos obtenidos de UB_PRESUPUESTO)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                         C/opt/agrota/powerbi/client-mcp/agent/skills/ub_presupuesto_skill.pyub_presupuesto_skill_noderW      sO    
 :&r*22N		+}5IIIor2M99Z,Sb1L
8..A
>C &i[1L"]O1--))|BC?PQ!xr!))5QRK JG'',,rwwrwwx/HI4QUWf  iF  G'31 	"QJ	"
 )>)@TRoRqQr  sZ  [e  Zf  g
KKNO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GH8D&'EtLLI 3R8J:%*+ !%

95 IJ",<% a R	" 	" GA!EFFG6 M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 C			8	$Gra   