
    o>i3                     H   d dl mZmZmZmZ d dlmZmZmZm	Z	 d dl
m
Z
  G d de      Z G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )	BaseModelField
ConfigDictfield_validator)OptionalListDictAny)datetimec                       e Zd ZU eed<   y)
SearchBaseinitial_promptN)__name__
__module____qualname__str__annotations__     5/home/www/utuvibe.miabetepe.com/app/search/schemas.pyr   r      s    r   r   c                       e Zd Zy)SearchCreateN)r   r   r   r   r   r   r   r      s    r   r   c                   J    e Zd ZU eed<   eed<   eed<   eed<    G d d      Zy)SearchMessageResponseidrolecontent
created_atc                       e Zd ZdZy)SearchMessageResponse.ConfigTNr   r   r   from_attributesr   r   r   Configr           r   r#   N)	r   r   r   intr   r   r
   r   r#   r   r   r   r   r      s!    G
IL r   r   c                   J    e Zd ZU eed<   eed<   g Zee   ed<    G d d      Z	y)SearchResponser   r   messagesc                       e Zd ZdZy)SearchResponse.ConfigTNr!   r   r   r   r#   r*      r$   r   r#   N)
r   r   r   r%   r   r   r(   r   r   r#   r   r   r   r'   r'      s'    G,.Hd(). r   r'   c                   6    e Zd ZU eed<   eed<    G d d      Zy)SearchHistoryResponser   r   c                       e Zd ZdZy)SearchHistoryResponse.ConfigTNr!   r   r   r   r#   r.       r$   r   r#   N)r   r   r   r%   r   r   r#   r   r   r   r,   r,      s    G r   r,   c                   "    e Zd ZU eed<   eed<   y)ChatMessageCreate	search_idr   N)r   r   r   r%   r   r   r   r   r   r0   r0   #   s    NLr   r0   c                       e Zd ZU dZ edd      Zeee      e	d<    eddd      Z
ee   e	d	<    eddd
      Zee   e	d<    edd      Zeee      e	d<    edd      Zeee      e	d<    edd      Zeee      e	d<    edd      Zeee      e	d<    edd      Zeee      e	d<    edd      Zee   e	d<    edd      Zee	d<    edddd      Zee	d<    ed d!d"d#      Zee	d$<    eddd%      Zee	d&<   y)'ProfileSearchRequestu    Requête de recherche de profilsNu"   Liste de compétences recherchéesdescriptionskillsr   u   Années d'expérience minimum)ger5   min_years_experienceu   Années d'expérience maximummax_years_experienceu   Entreprises ciblées	companiesu   Postes recherchés	positionsu   Diplômes requiseducation_degreesu   Établissements d'enseignementeducation_institutionsu   Langues parlées	languagesu   Localisation géographiquelocationFu9   Exiger toutes les compétences (AND) ou au moins une (OR)match_all_skillsg        g      ?u&   Score minimum de matching (0.0 à 1.0))r7   ler5   match_threshold      d   u   Nombre de résultats maximumlimitu   Position de départoffset)r   r   r   __doc__r   r6   r   r   r   r   r8   r%   r9   r:   r;   r<   r=   r>   r?   r@   boolrB   floatrF   rG   r   r   r   r3   r3   )   sJ   * #(:^"_FHT#Y_*/Hg*h(3-h*/Hg*h(3-h%*4=S%TIxS	"T%*4=Q%RIxS	"R-24EW-XxS	*X27Jj2kHT#Y/k%*4=O%PIxS	"P#D6RSHhsmS #56qrdr"333DlmOUm raC5STE3Ta-BCFCCr   r3   c                   J    e Zd ZU dZee   ed<   dZee   ed<   dZee   ed<   y)UserBaseNemail	full_namephone_number)	r   r   r   rM   r   r   r   rN   rO   r   r   r   rL   rL   ?   s,    E8C=#Ix}#"&L(3-&r   rL   c                   :   e Zd ZU dZeed<    ee      Ze	e
ef   ed<    ee      Ze	e
ef   ed<   dZee
   ed<   dZeed	<   dZee   ed
<    eej&                        Zeed<    eej&                        Zeed<    ed      Z edd      ed               Zy)UserResponseu'   Schéma de réponse pour un utilisateurr   )default_factorycv_datalinkedin_profileNconversation_stateFregistration_completedlast_interactionr   
updated_atT)r"   before)modec                    |rt        |t              r|j                  d      }|r||d<   |j                  di       }|rt        |t              r|j                  dg       }|rnt        |t              r^g }|D ]M  }t        |t              rd|v r|j	                  |d          ,t        |t
              s=|j	                  |       O ||d<   ||d<   |S )Nurlscraped_datar6   title)
isinstancedictgetlistappendr   )clsvlinkedin_urlr]   r6   cleaned_skillsskills          r   clean_linkedin_skillsz"UserResponse.clean_linkedin_skillsQ   s     At$55<L'%554L
< >%))(B7j6%'N!' 9%eT2w%7G*11%.A's3*11%8	9 .<L*(4An%r   )r   r   r   rH   r%   r   r   r`   rS   r	   r   r
   rT   rU   r   rV   rI   rW   r   nowr   rX   r   model_configr   classmethodri   r   r   r   rQ   rQ   D   s    1G#D9GT#s(^9',T'Bd38nB(,,#(D(+/hx(/ >J> >J>d3L'h7  8r   rQ   c                       e Zd ZU dZ edd      Zeed<    edd      Zeed<    edd      Z	eed	<    edd
      Z
eed<    eed      Zee   ed<    eed      Zee   ed<    edd      Zee   ed<   y)ProfileMatchScorez Score de matching pour un profil.u   Score global (0.0 à 1.0)r4   overall_scoreu   Score des compétencesskills_scoreu   Score de l'expérienceexperience_scorezScore de la formationeducation_scoreu   Compétences correspondantes)rR   r5   matched_skillszEntreprises correspondantesmatched_companiesNu   Années d'expérience totalestotal_years_experience)r   r   r   rH   r   ro   rJ   r   rp   rq   rr   rb   rs   r   r   rt   ru   r   r%   r   r   r   rn   rn   g   s    * 2MNM5N1IJL%J#C5MNeN"34KLOUL %dHf gNDIg#(Kh#itCyi,1$Dc,dHSMdr   rn   c                   .    e Zd ZU dZeed<   eed<   ddiZy)ProfileSearchResultu-   Résultat de recherche avec score de matchingusermatch_scorer"   TN)r   r   r   rH   rQ   r   rn   rk   r   r   r   rw   rw   s   s    7
""%t,Lr   rw   c                   z    e Zd ZU dZ edd      Zeed<    edd      Ze	e
   ed<    edd      Zeed	<   d
diZy)ProfileSearchResponseu    Réponse de recherche de profils.u   Nombre total de résultatsr4   total_resultsu   Profils trouvésresultsu    Critères de recherche utiliséssearch_criteriar"   TN)r   r   r   rH   r   r|   r%   r   r}   r   rw   r~   r3   rk   r   r   r   r{   r{   {   sL    *s0LMM3M).s@R)SGT%&S,1#Ce,fO)f%t,Lr   r{   N)pydanticr   r   r   r   typingr   r   r	   r
   r   r   r   r   r'   r,   r0   r3   rL   rQ   rn   rw   r{   r   r   r   <module>r      s    B B , ,  	: 	I Z J 	 D9 D,'y '
!8 !F
e	 
e-) --I -r   