
    Wh                         d dl mZ 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Z e       Zde	fd	Zd
efdZd Zd ZdefdZdefdZdefdZd Zy)    )HTTPException   )QdrantService)SearchRequestSearchResponseSearchResult)Session)	TemplatesNdbc                    	 | j                  t        j                  t        j                  t        j                  t        j
                        j                  t        j                  dk(        j                         }|st        dd      i }g }|D ]  }	 t        |j                        |j                  |j                  |j
                  rt        j                  |j
                        ni d}|j                  }||vrg ||<   ||   j                  |        |st        dd	      i }|j!                         D ]1  \  }}	d
}t        d|	       	 t"        j%                  |	||       }
|
||<   3 |D cg c]  }|j                   }}| j                  t              j                  t        j                  j'                  |            j)                  ddid       | j+                          ddt-        |       d|t-        |      t/        |j1                               dS # t        $ rM}t        d|j                   d|        |j                  |j                  t        |      d       Y d }~d }~ww xY w# t        $ r-}t        d| d|        dt        |      d||<   Y d }~pd }~ww xY wc c}w # t        $ r-}| j3                          t        ddt        |             d }~ww xY w)Nr     zNo unprocessed templates found)idtemplate_urltemplate_nametemplate_metadatazError processing template ID z: )template_iderrori  z#No valid templates found to processdesign_templateDocs)r   zError inserting to collection F)successr   data_processr   )synchronize_sessionTz
Processed z
 templates)r   messageresultsfailed_countcollections_updated  zInsert failed: )queryr
   r   r   r   r   filterr   allr   strjsonloadsappend	Exceptionprintitemsqdrantinsert_documentsin_updatecommitlenlistkeysrollback)r   templates_to_processcollection_mapfailed_templatestemplatedocumentcollection_nameer   docsresulttprocessed_idss                L/var/www/html/hubwallet-dev/src/marketing/vector_db_collection/controller.pyinsert_documents_handlerr=      s   K=!xx!!##""''	 
 &""a'

#% 	 $%EFF, 	Hh223$,$9$9%-%;%;*2*D*D *.H4N4N)O,. #+"8"8".868N?3/66x@	0 %JKK %3%9%9%; 		O!OT/O&O0020N+1(		O 1EE1EE
""9#8#8#<#<]#KLSSQU 	T 	
 			 #C(<$=#>jI 01#'(;(;(=#>
 	
?  5h6J6J5K2aSQR ''#+#7#7 V)  (  O66Gr!MN7<s1v+N(O
 F  =
C?3q6(!;<<=s{   BJ5 BH6J5 I7*J5 0J0BJ5 	I4'AI/)J5 /I44J5 7	J- "J("J5 (J--J5 5	K+>(K&&K+requestc                 T   	 t        d       t        d| j                   d       t        d| j                          t        j                  j                  | j                        sNt        j                  j                         j                  D cg c]  }|j                   }}t        dd|       t        j                  | j                        }t        d |D              rt        | j                  g d	      S t        j                  j                  | j                  || j                  | j                  d
      }g }|D ]  }|j!                  t#        t%        |j&                        |j(                  |j*                  j-                  dd      |j*                  j-                  dd      |j*                  j-                  dd      |j*                  j-                  di       |j*                  j-                  dd      t        j/                  | j                  |j*                                      t        d       t        | j                  |t1        |      	      S c c}w # t        $ r  t2        $ r2}t        dt%        |              t        dt%        |            d }~ww xY w)Nz
=== SEARCH DEBUG START ===zQuery: ''zCollection: r   z!Collection not found. Available: c              3   &   K   | ]	  }|d k(    yw)g        N ).0vs     r<   	<genexpr>z!search_handler.<locals>.<genexpr>r   s     1AqCx1s   r   )r   r   total_resultsT)r6   query_vectorlimitscore_thresholdwith_payloadr    r   r   r   searchable_text)r   scorer   r   r   r   rL   
highlightsz=== SEARCH DEBUG END ===
zSearch error: r   )detail)r&   r   r6   r(   clientcollection_existsget_collectionscollectionsnamer   _get_embeddingr    r   searchrH   rI   r$   r   r!   r   rM   payloadget_find_highlightsr-   r%   )r>   c	availablequery_embeddingr   formatted_resultsrr7   s           r<   search_handlerr_   b   s4   :0,.q)*W44567 }}..w/F/FG)/)F)F)H)T)TUAUIU'H%TUU !//> 111!mm  --&&#33(--#33 ' 
  	A$$\qtt9ggYY]]>2>IIMM-<iimmOR@"#))--0CR"H !		.? D!227==!))L	& 		 	*,--%/0
 	
Q V\   0s1vh'(CA//0s2   BI# I$AI# >EI# I# #J'5-J""J'c                    g }| D ]  }t        d|j                   d|j                          |j                  |j                  j                  d|j                        |j                  |j                  j                  di       |j                  j                  di       |j                  j                  dd      d        |S )	zFixed format_results functionzFormatting result - ID: z	, Score: original_id	json_datametadatarL   rK   )r   rM   datarc   rL   )r&   r   rM   r$   rW   rX   )r   	formattedhits      r<   format_resultsrg      s    I 	(	#))EF++//-8YYKKOOK4
B7"{{/@"E
 		     c                  *    t         j                         S Nr(   list_collectionsrB   rh   r<   list_collections_handlerrm      s    ""$$rh   rT   c                 ,    t         j                  |       S rj   )r(   collection_inforT   s    r<   collection_info_handlerrq      s    !!$''rh   c                 ,    t         j                  |       S rj   )r(   delete_collectionrp   s    r<   delete_collection_handlerrt      s    ##D))rh   c                 0    dt         j                  |       iS )Ncount)r(   count_pointsrp   s    r<   count_points_handlerrx      s    V((.//rh   c                  H    	 dt         j                         dS #  ddicY S xY w)Nhealthy)statusrS   r{   	unhealthyrk   rB   rh   r<   health_handlerr}      s2    '!224
 	
'+&&s    !)fastapir   servicer   schemar   r   r   sqlalchemy.ormr	   "src.menu_design.apps.editor.modelsr
   r"   r(   r=   r_   rg   rm   r!   rq   rt   rx   r}   rB   rh   r<   <module>r      sp    ! " > > " 8 	L= L=`;0M ;0|%(# (*C *0s 0'rh   