
    hw@                        d dl m Z  d dlmZmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZ ded	ed
efdZ	 	 d!ded	edeeeeef   f   deeeeef   f   deeeeef   f   dee   deeeef      d
efdZdedee   d
eeeeef   f   fdZ	 d"dee   dededeeeee   f      deeeef      dee   dee   dee   dee   dededeee      d
efd Z y)#    )datetime)AnyDictListOptionalSetUnion)HTTPExceptionstatus)verbose_proxy_logger)CommonProxyErrors)PrismaClient)BreakdownMetricsDailySpendDataDailySpendMetadataKeyMetadataKeyMetricWithMetadataMetricWithMetadataSpendAnalyticsPaginatedResponseSpendMetricsexisting_metricsrecordreturnc                 N   | xj                   |j                   z  c_         | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  |j                  z   z  c_        | xj                  |j                  z  c_        | xj
                  |j
                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | xj                  |j                  z  c_        | S )z$Update metrics with new record data.)	spendprompt_tokenscompletion_tokenstotal_tokenscache_read_input_tokenscache_creation_input_tokensapi_requestssuccessful_requestsfailed_requests)r   r   s     t/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/proxy/management_endpoints/common_daily_activity.pyupdate_metricsr%      s    fll*""f&:&::"&&&*B*BB&!!V%9%9F<T<T%TT!,,0N0NN,00F4V4VV0!!V%8%88!((F,F,FF($$(>(>>$    N	breakdownmodel_metadataprovider_metadataapi_key_metadataentity_id_fieldentity_metadata_fieldc           
      j   |j                   r^|j                   | j                  vrFt        t               |j	                  |j                   i             | j                  |j                   <   |j                   rt        | j                  |j                      j                  |      | j                  |j                      _        |j                  | j                  |j                      j                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j                  |j                      j                  |j                  <   t        | j                  |j                      j                  |j                     j                  |      | j                  |j                      j                  |j                     _        |j                  r^|j                  | j                  vrFt        t               |j	                  |j                  i             | j                  |j                  <   |j                  rt        | j                  |j                     j                  |      | j                  |j                     _        |j                  | j                  |j                     j                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j                  |j                     j                  |j                  <   t        | j                  |j                     j                  |j                     j                  |      | j                  |j                     j                  |j                     _        |j                  r|j                  | j                  vr,t        t               i       | j                  |j                  <   t        | j                  |j                     j                  |      | j                  |j                     _        |j                  | j                  |j                     j                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j                  |j                     j                  |j                  <   t        | j                  |j                     j                  |j                     j                  |      | j                  |j                     j                  |j                     _        |j                  xs d}|| j                   vr2t        t               |j	                  |i             | j                   |<   t        | j                   |   j                  |      | j                   |   _        |j                  | j                   |   j                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j                   |   j                  |j                  <   t        | j                   |   j                  |j                     j                  |      | j                   |   j                  |j                     _        |j                  | j"                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j"                  |j                  <   t        | j"                  |j                     j                  |      | j"                  |j                     _        |rt%        ||d      }|r|nd}|| j&                  vr6t        t               |r|j	                  |i       ni       | j&                  |<   t        | j&                  |   j                  |      | j&                  |   _        |j                  | j&                  |   j                  vrt        t               t        |j	                  |j                  i       j	                  dd      |j	                  |j                  i       j	                  dd                  | j&                  |   j                  |j                  <   t        | j&                  |   j                  |j                     j                  |      | j&                  |   j                  |j                     _        | S )zXUpdates breakdown metrics for a single record using the existing update_metrics function)metricsmetadata	key_aliasNteam_idr0   r1   unknown
Unassigned)modelmodelsr   r   getr%   r.   api_keyapi_key_breakdownr   r   model_groupmodel_groupsmcp_namespaced_tool_namemcp_serverscustom_llm_provider	providersapi_keysgetattrentities)	r'   r   r(   r)   r*   r+   r,   providerentity_values	            r$   update_breakdown_metricsrE   #   s    ||I,<,<<); N#''b*
	& ||1?V\\*22F2
	&.
 >>!1!1&,,!?!Q!QQ%(N("2"6"6v~~r"J"N"N'# !1 4 4V^^R H L L%t!	
 V\\*<<V^^L   .""6>>3	 	&88HP f00	8N8NN5G N#''(:(:B?6
	v112 =K""6#5#56>>>
	v112: NN))&*<*<=OOP
 &$$.226>>2FJJ#T -00DHH!4	
 ""6#5#56HH #""6#5#56v~~/W	
 	v112DDNN	

 &&**)2G2GGEW$FI!!&"A"AB JX!!&"A"ABJJFJ
	f==>F NN((//  &$$.226>>2FJJ#T -00DHH!4	
 !!&"A"ABTT  #!!&"A"ABv~~/W	
 	f==>PPNN	

 ))6YHy***(: N&**")
	H% -;H%--v-I!)
 ~~Y00:LLL!$$.226>>2FJJ#T -00DHH!4	
 	H%77G 	);;FNNKSS	
 !33FNNCK ~~Y///-B N *..v~~rBFF ),,V^^R@DDYPTU	.
	6>>* 2@6>>*22F2Iv~~&.
 v=(Ll 	 y111/A$ - *--lB?0I|, 4B|,44f4
	<(0
 >>!3!3L!A!S!SS%(N("2"6"6v~~r"J"N"N'# !1 4 4V^^R H L L%t!	
 |,>>v~~N ""<0""6>>3	 	<(::6>>JR r&   prisma_clientr@   c                    K   | j                   j                  j                  ddt        |      ii       d{   }|D ci c]&  }|j                  |j
                  |j                  d( c}S 7 6c c}w w)z,Update api key metadata for a single record.tokeninwhereNr2   )dblitellm_verificationtoken	find_manylistrH   r0   r1   )rF   r@   key_recordsks       r$   get_api_key_metadatarR     s|     
 &((BBLLtH~./ M  K LWFGq{{qyyAA s!   7A7A0A7+A2-A72A7
table_name	entity_id
start_dateend_dater5   r8   page	page_sizeexclude_entity_idsc                   K   | 't        ddt        j                  j                  i      ||t        t        j
                  ddi      	 d||di}|r||d<   |r||d	<   |t        |t              rd
|i||<   n|||<   |rd
|i|j                  |i       d<   t        | j                  |      j                  |       d{   }t        | j                  |      j                  |ddig|	dz
  |
z  |
       d{   }t               }|D ]*  }|j                  s|j                  |j                         , i }i }i }|rt!        | |       d{   }g }t#               }i }|D ]  }|j$                  }||vrt#               t'               d||<   t)        ||   d   |      ||   d<   t+        ||   d   ||||||      ||   d<   |xj,                  |j,                  z  c_        |xj.                  |j.                  z  c_        |xj0                  |j0                  z  c_        |xj2                  |j.                  |j0                  z   z  c_        |xj4                  |j4                  z  c_        |xj6                  |j6                  z  c_        |xj8                  |j8                  z  c_        |xj:                  |j:                  z  c_        |xj<                  |j<                  z  c_         |j?                         D ]J  \  }}|jA                  tC        tE        jF                  |d      j%                         |d   |d                L |jI                  d d       tK        |tM        |j,                  |j.                  |j0                  |j2                  |j8                  |j:                  |j<                  |j4                  |j6                  |	| |
z   |	|
z  |k              S 7 %7 7 # tN        $ rO}tQ        jR                  dtU        |              t        t        jV                  ddtU        |       i      d}~ww xY ww)z:Common function to get daily activity for any entity type.Ni  error)status_codedetailz&Please provide start_date and end_datedate)gtelter5   r8   rI   notrJ   desc   )rK   orderskiptake)r.   r'   r.   r'   )r+   r,   z%Y-%m-%d)r^   r.   r'   c                     | j                   S N)r^   )xs    r$   <lambda>z$get_daily_activity.<locals>.<lambda>  s    166r&   T)keyreverse)total_spendtotal_prompt_tokenstotal_completion_tokensr   total_api_requeststotal_successful_requeststotal_failed_requeststotal_cache_read_input_tokens!total_cache_creation_input_tokensrW   total_pageshas_more)resultsr/   zError fetching daily activity: zFailed to fetch analytics: ),r
   r   db_not_connected_errorvaluer   HTTP_400_BAD_REQUEST
isinstancerO   
setdefaultrA   rL   countrN   setr8   addrR   r   r^   r   r%   rE   r   r   r   r   r   r    r!   r"   r#   itemsappendr   r   strptimesortr   r   	Exceptionr   	exceptionstrHTTP_500_INTERNAL_SERVER_ERROR)rF   rS   r+   rT   r,   rU   rV   r5   r8   rW   rX   rY   where_conditionstotal_countdaily_spend_datar@   r   r*   r(   r)   rw   total_metricsgrouped_datadate_strdataes                             r$   get_daily_activityr     s      .EEKKL
 	

 X-33EF
 	

B
 !,
 (-W%*1Y' )T*5994E 14= 1(G''<UC
 $M$4$4jAGG" H 
 

 "))9)9:!F!P!P"  (i' "Q "
 
 5&F~~V^^, '
 794679%9-%RR $24&F{{H|++~!1!3*X& 1?X&y161L"9- 3KX&{3!  /&;3L";/ 6<</''6+?+??'++v/G/GG+&&$$v'?'??& 11V5S5SS155225 &&&*=*==&--1K1KK-))V-C-CC)I 'N +002NHdNN!**8Z@EEG O";/ 3 	)48.')//$1$?$?(5(G(G*77#0#=#=*7*K*K&3&C&C.;.S.S2?2[2[*li78*k9
 	
g


(  SX  
&&)HQ'QR==:3q6(CD
 	

si   AQA6O2 O)9O2 >O,?O2 4O2 O/JO2 (Q)O2 ,O2 /O2 2	Q
;A
QQ

Q)NNrh   )!r   typingr   r   r   r   r   r	   fastapir
   r   litellm._loggingr   litellm.proxy._typesr   litellm.proxy.utilsr   >litellm.types.proxy.management_endpoints.common_daily_activityr   r   r   r   r   r   r   r   r%   r   dictrE   rR   intr    r&   r$   <module>r      s    8 8 ) 1 2 ,	 	 	\ 3 < ( &*7;[[[ d38n,-[ Cc3h/0	[
 3S#X./[ c][ $DdO4[ [|

#h
 
#tCH~

2 /3^
L)^
^
 ^
 c49n-.	^

 $DdO4^
 ^
 sm^
 C=^
 c]^
 ^
 ^
 !c+^
 %^
r&   