
    ȃ_i                     \    d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZ d dlZ G d d      Zy)    )QdrantClient)FilterSearchParamsPointStructFieldCondition
MatchValue)OptionalDictAnyNc            	       4    e Zd Zd Zd	dZd
dedededefdZy)QdrantSearchServicec                 \    t        d      | _        t        j                  dd      | _        y )Nzhttp://localhost:6333)urlOPENSEARCH_INDEXresumes)r   clientosgetenv
collection)selfs    ;/var/www/html/drjob-dev/drjob-ai/services/qdrant_service.py__init__zQdrantSearchService.__init__   s"    "'>?))$6	B    Nc                     d}|r"t        t        dt        |            g      }| j                  j	                  | j
                  |||      }|D cg c]  }|j                  d   |j                  d  c}S c c}w )	z+Search resumes with optional country filterNcountry_header_code)value)keymatch)must)collection_namequery_vectorlimitquery_filter	resume_id)r$   vector_score)r   r   r   r   searchr   payloadscore)r   vectortop_kcountry_filtersearch_filterhitshits          r   r&   zQdrantSearchService.search   s    ""1(~>M {{!! OO&	 " 
 
 ++k2CIIN
 	
 
s   #A:jobseeker_idr)   country_namer   c                     	 t        t        |      ||||d      }| j                  j                  | j                  |g       y# t
        $ r!}t        dt        |              Y d}~yd}~ww xY w)zBStore or update resume vector with metadata including country info)r$   r0   r   )idr)   r'   )r    pointsTz"Error upserting resume to Qdrant: NF)r   intr   upsertr   	Exceptionprintstr)r   r/   r)   r0   r   pointes          r   upsert_resumez!QdrantSearchService.upsert_resume%   s{    	|$!-$0+>E KK $w  
  	6s1vh?@	s   AA 	A0A++A0)2   N) r=   )__name__
__module____qualname__r   r&   r8   listr;    r   r   r   r      s/    C
2# t 3 jm r   r   )qdrant_clientr   qdrant_client.modelsr   r   r   r   r   typingr	   r
   r   r   r   rB   r   r   <module>rF      s!    & ^ ^ & & 	3 3r   