
    jA
                        d Z ddlmZ ddl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mZmZ ddlmZ  ed	d
g          Z ej        e          Ze                    dddde          dd            ZdS )u'  
Nom du fichier : users.py
Chemin : /gitlab-bridge/app/api/v1/users.py
Description : Endpoint de recherche d'utilisateurs GitLab compatibles OpenWebUI.
Options éventuelles :
    - POST /api/v1/users/search
Auteur : Sylvain SCATTOLINI
Date de création / modification : 2026-05-21
Version : 1.0
    )annotationsN)	APIRouterHTTPExceptionstatus)GitLabClient)GitLabApiError)UserItemUserSearchRequestUserSearchResponse)compute_similarity_scorez/api/v1/usersusers)prefixtagsz/searchsearch_usersz"Rechercher des utilisateurs GitLabuZ   Recherche des utilisateurs GitLab par nom, prénom ou username avec scoring de pertinence.)operation_idsummarydescriptionresponse_modelpayloadr
   returnr   c                   	 t                      }| j                                        }	 |                    |          }n1# t          $ r$}t          dt          |                    |d }~ww xY wg }|D ]}t          |t                    st          |	                    dd                    }t          |	                    dd                    }t          t          ||          t          ||                    }	|	dk    r|                    |	|f           |                    d 	           d
 |d | j                 D             }
t          d||
          S # t
          $ r  t           $ rI}t"                              dt          |                     t          t&          j        d          |d }~ww xY w)N)usernamei  )status_codedetailr    name(   c                    | d          S )Nr    )ts    //var/www/html/gitlab-bridge/app/api/v1/users.py<lambda>zsearch_users.<locals>.<lambda>;   s    1Q4%     )keyc                N   g | ]\  }}t          t          |d                    t          |                    dd                    t          |                    dd                    t          |                    dd                    |                    d                    S )idr   r   r   stateactive
avatar_url)r&   r   r   r'   r)   )r	   intstrget).0_us      r!   
<listcomp>z search_users.<locals>.<listcomp>=   s     	
 	
 	
 1 qw<<QUU:r2233vr**++!%%223355..  	
 	
 	
r#   T)successqueryr   z(Erreur inattendue dans search_users : %sz3Erreur interne lors de la recherche d'utilisateurs.)r   r2   stripr   r   r   r+   
isinstancedictr,   maxr   appendsortlimitr   	Exceptionlogger	exceptionr   HTTP_500_INTERNAL_SERVER_ERROR)r   clientr2   	raw_usersexcscoreduserr   r   scorer   s              r!   r   r      s   ,##%%	K++U+;;II 	K 	K 	KCCAAAsJ	K *, 
	- 
	-DdD)) 488J3344Htxx++,,D(99(55 E {{udm,,,(((	
 	
 /	
 	
 	
 "$e5IIII      CSXXNNN=H
 
 
 	s<   'E  A  E  
A/A**A//C0E   F=4AF88F=)r   r
   r   r   )__doc__
__future__r   loggingfastapir   r   r   app.clients.gitlab_clientr   app.core.exceptionsr   app.schemas.usersr	   r
   r   app.utils.helpersr   router	getLogger__name__r;   postr   r   r#   r!   <module>rP      s  	 	 # " " " " "  4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 . . . . . . M M M M M M M M M M 6 6 6 6 6 6	/		:	:	:		8	$	$ 0l%   - - - - - -r#   