
    Ii                     h    d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZ  G d d      Zy)	    )db)ChatMessageAgente)current_user)funccase)datetime	timedeltadatec                   $    e Zd Zeddefd       Zy)StatsServiceperiod_daysc                 &   	 t        j                         t        |       z
  }t        j                  j                  t        j                  t        j                              j                  t        j                  t        j                  k(  t        j                  |k\        j                         xs d}t        j                  j                  t        j                  t        j                              j!                  t        t        j"                  t        j                  k(        j                  t        j                  t        j                  k(  t        j                  |k\        j                         xs d}d}t%        t        d      rt%        t        d      rt        j                  j                  t        j&                  t        j(                              j!                  t        t        j"                  t        j                  k(        j                  t        j                  t        j                  k(  t        j                  |k\  t        j*                  dk(  t        j(                  j-                  d             j                         }|rt/        |d      nd}t        j                  j                  t        j0                  t        j2                              j!                  t        t        j"                  t        j                  k(        j                  t        j                  t        j                  k(  t        j                  |k\  t        j*                  dk(  t        j2                  j-                  d             j                         xs d}i }t%        t4        d      rt        j                  j                  t        j"                  t        j                  t        j                        j7                  d	      t        j&                  t9        t        j*                  dk(  t        j(                  fd 
            j7                  d      t        j0                  t9        t        j*                  dk(  t        j2                  fd
            j7                  d            j                  t        j                  |k\        j;                  t        j"                        j=                         }t        j                  j                  t4        j>                  j7                  d      t        j                  t        j                        j7                  d      t        j0                  |j@                  jB                        j7                  d      t        j&                  |j@                  jD                        j7                  d      t        j0                  |j@                  jF                        j7                  d            j!                  t4        t        jH                  t4        j                  k(        jK                  |t        j                  |j@                  j"                  k(        j                  t        j                  t        j                  k(  t        j                  |k\        j;                  t4        j>                        jM                         }	|	D ]z  }
|
jN                  xs d}|
jP                  xs dtS        |
jT                  xs d      tS        |
jV                  xs d      |
jX                  rt/        |
jX                  d      ndd||<   | i }t        jZ                  t        j                        }t        jZ                  t        j                        }t        j                  j                  |j7                  d      t        j                  t        j                        j7                  d            j                  t        j                  t        j                  k(  t        j                  |k\        j;                  d      j]                  d      jM                         }|D ]o  }
t_        |
j`                  t         tZ        f      r|
j`                  jc                         nte        |
j`                        }||vrddd||<   |
jf                  ||   d<   q t        j                  j                  |j7                  d      t        j                  t        j                        j7                  d            j!                  t        t        j"                  t        j                  k(        j                  t        j                  t        j                  k(  t        j                  |k\        j;                  d      j]                  d      jM                         }|D ]o  }
t_        |
j`                  t         tZ        f      r|
j`                  jc                         nte        |
j`                        }||vrddd||<   |
jh                  ||   d<   q ||||||| d}|d fS # tj        $ r.}tm        dte        |              d te        |      fcY d }~S d }~ww xY w)N)daysr   g        response_timeis_userF   nomemessage_count_for_chat)else_avg_response_time_for_chattotal_tokens_for_chat
model_nameconversationsmessagesavg_timetotal_tokensDesconhecido)r   r   tokensr   daynum_conversations)r   r   num_messages)total_conversationstotal_messagesavg_response_timer   model_usageactivity_datar   u    Erro ao calcular estatísticas: )7r
   nowr   r   sessionqueryr   countr   idfilteruser_idr   
created_atscalarr   joinchat_idhasattravgr   r   isnotroundsumr    r   labelr	   group_bysubqueryr   cr   r   r   agent_id	outerjoinallr   r   intr   r   r   r   order_by
isinstancer!   	isoformatstrr"   r#   	Exceptionprint)r   
start_dater$   r%   avg_response_time_valavg_response_time_queryr   model_usage_dictmessages_subquerymodel_usage_queryrowmodel_name_keyr(   date_func_chatdate_func_msgdaily_conversationsday_strdaily_messagesstats_resultes                       9/srv/www/ollama/chat-ollama/src/services/stats_service.pyget_dashboard_statsz StatsService.get_dashboard_stats   sS   k	 !)*EEJ"$**"2"24::dgg3F"G7J9VW#    ZZ--djj.DEdGOOtww6779K9Kz9YZ  
 %(!w0WWi5P*,***:*:488GDYDY;Z*[T$477 :;V7**j850--33D9	 VX ( Ne.Eq(Ijm%::++DHHW^^,DEdGOOtww67LLLOO3&&*4OOu,NN((.	     "vv&$&JJ$4$4OOJJwzz*001IJHHT7??e#;W=R=R"S[_`agg  iE  FHHT7??e#;W^^"LTUVW]]^uv	%
 &++z9:88GOO;TU]U]U_ " %'JJ$4$4KK%%l3JJtww'--o>HH.00GGHNNzZHH.00KKLRRS]^HH.00FFGMMn]% $vt}}		9:)-tww:K:M:M:U:U/UV&8$//Z:WX(6;;'#% " - C%(^^%E~N),):):)?a$'(9$:"%c&6&6&;!"<>AllE#,,$:PS	8$^4 M!YYt7N IIg&8&89M"$**"2"2$$U+

477#))*=># f/:- huohhuocce   + P1;CGGhPTEU1V#''++-\_`c`g`g\h-/\]klJmw1G:=:O:Og&7P
  ZZ--##E*

7::&,,^< d4DGG34f/""j0 huohhuocce  & F1;CGGhPTEU1V#''++-\_`c`g`g\h-/\]klJmw1G585E5Eg&z2F (;"0%: ,/!.*L  %% 	 4SVH=>Q<	 s   ii 	j"#jjjN)   )__name__
__module____qualname__staticmethodr@   rW        rV   r   r      s    l  l  l r^   r   N)srcr   
src.modelsr   r   r   flask_loginr   
sqlalchemyr   r	   r
   r   r   r   r]   r^   rV   <module>rc      s&     , , $ ! . .n  n r^   