
    ڵ1i                     T    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  G d d      Zy)    )QdrantClient)FilterSearchParamsPointStructFieldCondition
MatchValue)OptionalDictAnyc            	       4    e Zd Zd Zd	dZd
dedededefdZy)QdrantSearchServicec                 4    t        d      | _        d| _        y )Nzhttp://localhost:6333)urlresumes)r   client
collection)selfs    ;/var/www/html/drjob-dev/drjob-ai/services/qdrant_service.py__init__zQdrantSearchService.__init__   s    "'>?#    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!   r-   r   )idr&   r$   )r   pointsTz"Error upserting resume to Qdrant: NF)r   intr   upsertr   	Exceptionprintstr)r   r,   r&   r-   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#   r5   listr8    r   r   r   r      s.    $
2# t 3 jm r   r   N)qdrant_clientr   qdrant_client.modelsr   r   r   r   r   typingr	   r
   r   r   r?   r   r   <module>rC      s    & ^ ^ & &3 3r   