
    gi                     v    d dl Z d dlmZ d dl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)	AIMessageSystemMessage)settings)collect_summary_metrics)%generate_and_upload_executive_summaryc           
         K   t         j                  d       t        d       d{   }d}	 ddlm} ddlm} ddl} |       }|d	   }|d
   }g }	t        d      D ],  }
||
z
  }|}|dk  r
|dz  }|dz  }|	j                  ||d       . dj                  |	D cg c]  }d|d    d|d    d c}      }d| d} |dd|i       d{   }|rt        |t              rt        |      dkD  r|j                  |d   j                  dd            }|j                  dg       }|D ]  }|j                  dd      j!                         }|j                  dd      }|j                  dd      }d |j#                          d!|d"d#|d$| d%<   d&|j#                          d!|d"d#|d$| d'<   |d(| d)|d"d*|d"d+z  } t)        t*        j,                  d-.      }d/}|j/                         D ])  \  }}|j1                  d$      r|d(|d0    d1|d2    d+z  }+ |d3| z  }d4}|j3                  t5        |5      t5        |5      g       d{   }|j6                  j9                         }d}	 | j                  d6d7      } | j                  d8d9      }!|j;                  d:d      }"t=        ||"| |!;       d{   }t         j                  d<|        | j                  d>g       }#d?|#v r|#j?                  d?       d}$|rd@|dAdB}$|$g dCd?dDdES 7 c c}w 7 N# t$        $ r#}t         j'                  d,|        Y d}~d}~ww xY w7 7 # t$        $ r"}t         j'                  d=|        Y d}~d}~ww xY ww)FuW   
    Nodo encargado de recolectar métricas y generar el Resumen Ejecutivo en PDF.
    u,   ⚙️ Skill activada: RESUMEN_EJECUTIVO_PDFT)retry_with_liveN r   )safe_invoke_tool)get_current_date_contextmes_numu   año_actual         )num   añoz || u   ('Calendario'[Año] = r   z && 'Calendario'[MesNumero] = r   )uo   EVALUATE SUMMARIZECOLUMNS('Calendario'[Mes], 'Calendario'[MesNumero], 'Calendario'[Año], FILTER('Calendario', ui   ), "Venta", [Venta], "UB", [Utilidad Bruta]) ORDER BY 'Calendario'[Año] ASC, 'Calendario'[MesNumero] ASCconsultarAgrotaUbPresupuestodaxtextz{}
resultadoszCalendario[Mes]MESz[Venta]z[UB]zVenta $z,.2f)labelvalor_textoTRIM__VzUB _UBz- z	: Venta $z, UB $
u.   Error cargando datos trimestrales dinámicos: g333333?)modeltemperaturezKPIs Actuales:
r   z: r   z,
Tendencia Trimestral (3 meses a la fecha):
u0  Eres un experto financiero de Agrota. Redacta una conclusión ejecutiva breve (max 120 palabras) resumiendo la situación actual y destacando la tendencia de los últimos 3 meses detallados. Identifica picos de crecimiento o caídas relevantes. USA TEXTO PLANO. PROHIBIDO USAR ASTERISCOS (**) O MARKDOWN.)content	user_namezTommy Mendoza	user_rolezGerente Generalz**)requester_namerequester_roleu   ✅ PDF generado exitosamente: zError general en resumen: intenciones_pendientesRESUMEN_EJECUTIVO_PDFu.   Aquí tienes tu Resumen Ejecutivo consolidado.zResumen_Ejecutivo_Agrota.pdf)mensajedocumento_urlfilenamezPDF GeneradoGENERAL_CHAT)interactive_datar(   mensaje_skill	dashboard	intencion) loggerinfor   agent.utils.mcp_helperr   agent.utils.date_contextr   jsonrangeappendjoin
isinstancelistlenloadsgetupper
capitalize	Exceptionerrorr   r   
MODEL_NAMEitems
startswithainvoker   r#   stripreplacer   remove)%statemetricsquarterly_contextr   r   r6   ctxmes_actual_num   año_actualmeses_trimestreimait
dax_filterdax_qq_resdata_q	results_qrowmesv_valub_valellmcontexto_metricaskv
prompt_sysres_ai
conclusionr+   r$   r%   clean_conclusion
pendientesr.   s%                                        @/opt/agrota/powerbi/client-mcp/agent/skills/resumen_pdf_skill.pyresumen_pdf_skill_noderi   
   sH     KK>? ,DAAG )K;E&(Y-( q 	:A"AAAvRQ""1a#89	: [[  }L  "Mvx$:2f:,Fdeghmendoop"q  "M  N
$$.< 0yz 	
 ''Eu~VVZt,UaZZaVT :;F

<4I  Zgg/7==?	1-+7=cnn>N=O5Pcdejkodpaq+r%uB(8;CNN<L;M6Nabcijnbo_p,q%uC()!r#id|6&QUVX%YY!Z 8..C
@C* I1||G$2aj\Am4D3ER!HHI IJ[I\]]	F  ;;j)/0   F %%'J M7IIk?;	IIk+<=	 &--dB7C$$	
 
 	5m_EF
 3R8J*,12G*6
 -"$',# O B0 "M W  KEaSIJJK( 
  71!5667s   %M>LM>A,L L1L LC8L AM>
AM>M M>4AM <M=M :M>L 	M	&M>M>M		M>M 	M;M61M>6M;;M>)logginglangchain_openair   langchain_core.messagesr   r   config.settingsr   agent.utils.summary_metricsr   agent.utils.pdf_generatorr   	getLogger__name__r2   ri        rh   <module>rt      s/     ' < $ ? K			8	$trs   