
    o>i              
          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mZmZ d dlmZ d dlmZ d dlmZ d d	lZ e       Zej/                  d
ej0                         ee	       ee      fdej2                  dedefd       Zej/                  dej0                         ee	       ee      fdedej8                  dedefd       ZdededefdZejA                  de!ejD                           d d ee	       ee      fdedededefd       Z#ejA                  dej0                         ee	       ee      fdededefd       Z$y	)    )	APIRouterDependsHTTPException)Session)get_db)get_current_company)CompanySearchSearchMessage)schemas)gemini_service)external_profiler_serviceN/)response_model	search_incurrent_companydbc                 z  K   |j                   dk  rt        dd      |xj                   dz  c_         t        |j                  | j                        }|j                  |       |j                          |j                  |       t        || j                  |       d {    |j                  |       |S 7 w)Nr     z4Jetons insuffisants. Veuillez acheter un abonnement.status_codedetail   )
company_idinitial_prompt)	tokens_balancer   r
   idr   addcommitrefreshprocess_chat_message)r   r   r   searchs       4/home/www/utuvibe.miabetepe.com/app/search/router.py
start_chatr$      s      %%*4jkk""a'""%% //F FF6NIIKJJv
vy'?'?
DDDJJvM Es   BB;!B9"B;z/{search_id}/message	search_id
message_inc                 :  K   |j                   dk  rt        dd      |j                  t              j	                  t        j
                  | k(  t        j                  |j
                  k(        j                         }|st        dd      |xj                   dz  c_         t        |j
                  dd	|j                  i
      }|j                  |       |j                          t        ||j                  |       d {    |j                  |       |S 7 w)Nr   r   zJetons insuffisants.r        Session de chat non trouvéer   companytextr%   rolecontent)r   r   queryr
   filterr   r   firstr   r.   r   r   r!   r    )r%   r&   r   r   r"   msg_users         r#   continue_chatr3   '   s      %%*4JKKXXf$$VYY)%;V=N=NRaRdRd=dekkmF4RSS""a'"))++,H
 FF8IIK
vz'9'92
>>>JJvM ?s   C?DDDr"   promptc                   K   t        j                  |       d {   }|j                  d      r|j                  di       }t        j                  d	i |}t        j                  |j                                d {   }t        j                  t        |      ||      }t        | j                  dt        j                  |j                                     }|j                  |       n=|j                  dd      }	t        | j                  dd|	i      }|j                  |       |j!                          y 7 "7 w)
N	is_searchcriteria)total_resultsresultssearch_criteriasystemr,   replyzJe n'ai pas compris cela.r+    )r   analyze_promptgetsearch_schemasProfileSearchRequestr   search_profiles
model_dumpProfileSearchResponselenr   r   jsonloadsmodel_dump_jsonr   r   )
r"   r4   r   analysiscriteria_datar7   r9   response_data
msg_systemr<   s
             r#   r!   r!   D   s    #226::H||K  Z4!66GG1AA(BUBUBWXX&<<g,$
 #iiJJ}<<>?


 	z W&AB"iiUO


 	zIIK= ; Ys#   ED=A"E>E ?B?E Ez/historyd   skiplimitc                 2   |j                  t              j                  t        j                  |j                  k(        j                  t        j                  j                               j                  |       j                  |      j                         }|S )N)r/   r
   r0   r   r   order_by
created_atdescoffsetrO   all)rN   rO   r   r   searchess        r#   get_chat_historyrW   e   s     xx&&v'8'8O<N<N'NOXXY_YjYjYoYoYqryyz~  F  F  GL  M  Q  Q  SHO    z/start/{search_id}c                     |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        dd      |S )Nr(   r)   r   )r/   r
   r0   r   r   r1   r   )r%   r   r   r"   s       r#   get_chat_sessionrZ   p   sY     XXf$$VYY)%;V=N=NRaRdRd=dekkmF4RSSMrX   )%fastapir   r   r   sqlalchemy.ormr   app.core.databaser   app.auth.dependenciesr   
app.modelsr	   r
   r   
app.searchr   r@   app.search.gemini_servicer   app.search.external_api_servicer   rF   routerpostSearchResponseSearchCreater$   intChatMessageCreater3   strr!   r?   listSearchHistoryResponserW   rZ   r=   rX   r#   <module>rl      s   5 5 " $ 5 5 5 0 4 E 	 S!>!>?  '':;&/** 	 @. #N4Q4QR  '':;&/	00  		 S8v s  B JtN,P,P'QR&':;&/	
  		 S  1N1NO  '':;&/ 	 PrX   