
    gi@                     h    d dl Z d dlmZ  e j                  d      Zdddddd	d
dddd
ZddedefdZy)    N)get_cached_resultzsummary-metricszVentas Totales del MeszUtilidad Bruta MeszMargen de RentabilidadzCrecimiento vs Mes AnteriorzSaldo Total CarterazCartera Vencidau   RCC (Días de Rotación)zPeso del Rol sobre UBzUB Maquinariau   UB Agroquímicos)
VENTAS_TOTALES_MESVENTAS_UTILIDAD_BRUTA_MESVENTAS_MARGEN_ACTUALVENTAS_CRECIMIENTO_MOMCARTERA_SALDO_TOTAL_ACTUALAUTO_DAME_LA_CARTERA_VENCIDAAUTO_DAME_EL_RCC"AUTO_DAME_EL_PESO_DEL_ROL_SOBRE_UB VENTAS_UTILIDAD_BRUTA_MAQUINARIA"VENTAS_UTILIDAD_BRUTA_AGROQUIMICOSretry_with_livereturnc                 
  K   ddl m} ddlm} ddl} |       }|d   }|d   }|d   } |dd	d
| d| di       d{   }d}		 t        |t              rqt        |      dkD  rc|j                  |d   j                  dd            }
|
j                  di g      d   }|r%t        t        |j                               d         nd}	|	dkD  r|n|}|}||k(  r|nd}t        j                  d|j                          d|j                                 i }t        j!                         D ]  \  }}t#        |       d{   }d}d}d}|sg| rddddd| d| dfdd| d| dfdd| d| dfdd| d| d| d| d| d| dfd d!d"| d|j                          dfdd#| d| dfdd$| d| dfd%
}|j                  |      }|r|\  }} ||d	|i       d{   }	 ddl}t        |t              rt        |      dkD  r|d   j                  dd&      }|r|j                  |      }|j                  dg       }|rt|d   rot        |d   j                               d   }|Nt        |      }|}d'|v sd(|v sd)|v rt%        |      d*k  r|d+z  n|} | d,d-}nd.|v rt'        |       }nd/|d,}d0}|||d3||<    |S 7 #  d}	Y xY w7 7 # t(        $ r%}!t        j+                  d1| d2|!        Y d}!~!Id}!~!ww xY ww)4uZ   Extrae las métricas detectando el mes más reciente con datos reales (Smart Date Context)r   )safe_invoke_tool)get_current_date_contextNu   año_actual
mes_actualmes_anteriorconsultarAgrotaUbPresupuestodaxuE   EVALUATE ROW("Val", CALCULATE([Utilidad Bruta], 'Calendario'[Año] = z, 'Calendario'[Mes] = "z"))textz{}
resultadosi  febrerou   📊 Reporte: u    | Nómina/Rol: zN/Dg        F)consultarAgrotaz$EVALUATE ROW("Val", [Cartera Total]))r   z0EVALUATE ROW("Cartera Vencida", [Total Vencido])u<   EVALUATE ROW("Val", CALCULATE([Venta], 'Calendario'[Año] = uD   EVALUATE ROW("UB", CALCULATE([Utilidad Bruta], 'Calendario'[Año] = u>   EVALUATE ROW("Val", CALCULATE([Margen%], 'Calendario'[Año] = uC   EVALUATE ROW("Val", DIVIDE(CALCULATE([Venta], 'Calendario'[Año] = u-   ") - CALCULATE([Venta], 'Calendario'[Año] = u,   "), CALCULATE([Venta], 'Calendario'[Año] = z"))))r   zREVALUATE ROW("Val", ROUND(DIVIDE([Cartera Total] * 365, [Ventas 365 Dias], 0), 0))consultarAgrotaTalentoHumanouQ   EVALUATE ROW("Val", CALCULATE([%PesoEmpleado/UB-historico], 'Calendario'[Año] = u   EVALUATE ROW("Val", CALCULATE([Utilidad Bruta], MarcaLineaCategoria[Linea] IN {"AGROFORESTAL", "AGROPECUARIA", "HOGAR Y JARDIN", "MOVILIDAD", "POST-VENTA"}, 'Calendario'[Año] = u   EVALUATE ROW("Val", CALCULATE([Utilidad Bruta], MarcaLineaCategoria[Linea] IN {"NUTRICIONAL", "PLAGUICIDAS CONVENCIONALES"}, 'Calendario'[Año] = )
r   r	   r   r   r   r   r
   r   r   r    PESOMARGENCRECIMIENTOg      ?d   z,.2f%RCC$Tz$Error procesando live fallback para z: )labelvalor_texto	valor_raw)agent.utils.mcp_helperr   agent.utils.date_contextr   json
isinstancelistlenloadsgetfloatvaluesloggerinfoupperKPI_KEYSitemsr   absint	Exceptionerror)"r   r   r   r)   ctx   añor   r   check_ubub_detectadadatares_ubmes_reportemes_rolmes_previo_reportemetricskeyr$   resvalor_limpiovalor_numerico_rawsuccessfallback_mapmapping	tool_namer   live_resraw_contentdata_mcpr   valnumval_percentes"                                     =/opt/agrota/powerbi/client-mcp/agent/utils/summary_metrics.pycollect_summary_metricsrT      sK    7A #
$C}D\"J~&L &&DXY]X^^v  xB  wC  CG  HG  H Lh%#h-!*;::hqkoofd;<DXXlRD1!4F>D5fmmo!6q!9:!L
 !-t 3*KG)4
)B	
KK.!2!2!4 55EgmmoEVWXGnn& 9

U%c**  ?.k0y'E  JH  IM  HN  Nf  gr  fs  sw  Hx  'y.L  QW  X\  W]  ]u  vA  uB  BF  OG  .H)G  LL  MQ  LR  Rj  kv  jw  w{  J|  )}+I  NS  TX  SY  Yq  r}  q~  ~l  mq  lr  rJ  K]  J^  ^K  LP  KQ  Qi  j|  i}  }B  LC  +D %P7U  Zm  nr  ms  sK  LS  LY  LY  L[  K\  \`  Xa  7b5S  XX  Y]  X^  ^v  wB  vC  CG  VH  5I7U  Zt  uy  tz  zR  S^  R_  _c  Xd  7eL #&&s+G!(	3!1)eS\!JJT!(D1c(ma6G&.qkoofb&A&'+zz+'>H)1lB)GJ)jm&*:a=+?+?+A&B1&E#&?*/*C9<$6'-}C=\_K_CFs8s?cCiX[:Ed9K17M).#:=c(9:3t*~.2G
 '+
k9
t Na +0 K2 ! TLL#GuBqc!RSSTss   <LK LBK A6L=K>BLKL CK2LK
LL	L K;6L;L  L)F)	loggingagent.utils.precalc_helperr   	getLoggerr1   r4   booldictrT        rS   <module>r\      s[     8			,	- 3!54;"7$52*A(7*<]4 ]D ]r[   