
    Xj                        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 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ  ee          Z e            Z ee          Ze                    d           ee           ee          fde	dedeeef         fd            Ze                    d           ee           ee          fde	dedeeef         fd            Ze                    d           ee           ee          fdede	dedeeef         fd            Ze                     d           ee           ee          fdede	dedeeef         fd            Z!dS )    )Any)	APIRouterDependsHTTPException)
get_logger)Session)get_current_user)settings)get_db)KnowledgeBase)User)get_vector_storez/milvus/healthdbcurrent_userreturnc           
      J  K   t                               d|j                    	 t          |           }|                                }t                               d|                    dd           d           dt          j        t          j        t          j	        t          j
        |                    d          |                    dd          dS # t          $ rD}t                               d	|            d
t          |          t          j        dcY d }~S d }~ww xY w)NzChecking Milvus health, user=zMilvus health check passed: total_vectorsr   z vectorshealthycollection_name)statusvector_store_typemilvus_hostmilvus_portuse_milvus_liter   r   zMilvus health check failed: 	unhealthy)r   errorr   )loggerinfoidr   get_collection_statsgetr
   VECTOR_STORE_TYPEMILVUS_HOSTMILVUS_PORTUSE_MILVUS_LITE	Exceptionr   str)r   r   vector_storestatses        O/lsinfo/ai/hellotax_ai/base_platform/app/api/v1/monitoring/milvus_monitoring.pycheck_milvus_healthr,      s5      KKAAABBB
'++1133Z599_a3P3PZZZ[[[!)!;#/#/'7$yy):;;"YY::
 
 	
  
 
 
7A77888!VV!)!;
 
 	
 	
 	
 	
 	
 	

s   B-C 
D"9DD"D"z/milvus/statsc           	      h  K   	 |                      t                                                    }g }d}|D ]}	 t          | |j                  }|                                }|                    |j        |j        |                    dd          |j	        d           ||                    dd          z  }# t          $ r_}t                              d|j         d|            |                    |j        |j        t          |          d           Y d }~d }~ww xY wt          j        t!          |          ||t          j        t          j        t          j        ddS # t          $ rA}t                              d	|            t)          d
t          |                    d d }~ww xY w)Nr   r   )knowledge_base_idknowledge_base_namevector_countr   z,Failed to get statistics for knowledge base : )r.   r/   r   )hostportuse_lite)r   total_knowledge_basesr   knowledge_basesmilvus_configz!Failed to get Milvus statistics:   status_codedetail)queryr   allr   r   r    appendnamer!   r   r&   r   r   r'   r
   r"   lenr#   r$   r%   r   )	r   r   r6   kb_statsr   kbr(   r)   r*   s	            r+   get_milvus_statsrC   0   s     #F((=115577! 	 	B/BE::$99;;-/U/1w(-		/1(E(E"$)	    ?A!>!>>   XBEXXUVXXYYY*,%Z]^_Z`Z`aa        "*!;%(%9%9*' , ,$4 

 

 
	
  F F F<<<===CFF;;;EFsC   4E& A?B98E& 9
D"ADE& D""AE& &
F10<F,,F1z0/milvus/knowledge-base/{knowledge_base_id}/statsr.   c                 D  K   	 |                     t                                        t          j        | k                                              }|st          dd          t          ||           }|                                }| |j        |	                    dd          |	                    d          |j
        |j        dS # t
          $ r  t          $ rD}t                              d|  d	|            t          d
t          |                    d d }~ww xY w)N     知识库不存在r9   r   r   r   )r.   r/   r0   r   r   	doc_countz3Failed to get vector statistics for knowledge base r1   r8   )r<   r   filterr   firstr   r   r    r?   r!   r   rG   r&   r   r   r'   )r.   r   r   rB   r(   r)   r*   s          r+   get_knowledge_base_vector_statsrJ   Z   s:     FXXm$$++M,<@Q,QRRXXZZ 	NC8LMMMM',=>>1133!2#%7!IIoq99$yy):;;i
 
 	
     F F FcK\cc`accdddCFF;;;EFs   CC D?DDz2/milvus/knowledge-base/{knowledge_base_id}/reindexc                   K   	 |                     t                                        t          j        | k                                              }|st          dd          t          ||            t                              d|j	         d           dd|j	         d| d	S # t
          $ r  t          $ rD}t                              d
|  d|            t          dt          |                    d d }~ww xY w)NrE   rF   r9   zIndex for knowledge base z# is automatically managed by MilvusTu
   知识库 u!    的索引由 Milvus 自动管理)successmessager.   z+Failed to rebuild index for knowledge base r1   r8   )r<   r   rH   r   rI   r   r   r   r   r?   r&   r   r'   )r.   r   r   rB   r*   s        r+   reindex_knowledge_baserN   u   s-     FXXm$$++M,<@Q,QRRXXZZ 	NC8LMMMM.///\\\\]]]NBGNNN!2
 
 	

     F F F[CT[[XY[[\\\CFF;;;EFs   B!B& &C>:?C99C>N)"typingr   fastapir   r   r   common_loggingr   sqlalchemy.ormr   app.api.depsr	   
app.configr
   app.db.sessionr   app.models.knowledge_baser   app.models.userr   app.services.storage.milvusr   __name__r   routerr!   dictr'   r,   rC   intrJ   postrN        r+   <module>r`      s         5 5 5 5 5 5 5 5 5 5 % % % % % % " " " " " " ) ) ) ) ) )       ! ! ! ! ! ! 3 3 3 3 3 3             8 8 8 8 8 8 % % % % % %	H				H		 '&//@P8Q8Q
 

15
	#s(^
 
 
 
4 O'&//@P8Q8Q&F &F&F15&F	#s(^&F &F &F &FR >?? '&// !122F FFF F 
#s(^	F F F @?F4 ABB '&// !122F FFF F 
#s(^	F F F CBF F Fr_   