Ë
    I»j  ã                   óH   — d Z ddlmZ ddlmZmZmZ ddlmZ  G d„ d«      Z	y)uA   Talent scouting â€” rank candidates for employer discovery panel.é    )Ú	JobStatus)ÚRankedCandidateÚTalentScoutRankRequestÚTalentScoutRankResponse)Úgenerate_jsonc                   ó   — e Zd Zdedefd„Zy)ÚTalentScoutingServiceÚpayloadÚreturnc              ƒ   ó,  ‡K  — d}d‰j                   › d‰j                  › d‰j                  › d‰j                  › d‰j                  D �cg c]  }|j                  «       ‘Œ c}› d‰j                  › �}dt        fˆfd	„}t        |||¬
«      ƒ d {  –—† \  }}}g }	t        |j                  d«      xs g d¬«      D ]™  \  }
}t        |t        «      r|j                  d«      sŒ(|	j                  t        t        |d   «      |
t        |j                  d«      xs d«      |j                  d«      t!        |j                  d«      xs g «      ¬«      «       Œ› t#        ‰j$                  ‰j                   t&        j(                  |d|› �|	¬«      S c c}w 7 �Œ­w)Nz‚Rank candidates for a hiring scout panel. Return JSON: {"ranked":[{"candidate_id","scout_score","rationale","matched_skills":[]}]}zRole: z
JD: z
Required skills: z
Niche: z
Candidates: z
Top K: r   c                  ó–  •— g } ‰
j                   D �ch c]  }|j                  «       ’Œ }}‰
j                  D �]•  }|j                  D �ch c]  }|j                  «       ’Œ }}|rt	        ||z  «      nt        |j                  «      d d }d}|j                  �&|dt        dt        d|j                  «      «      z  z  }|j                  �D|dt        dt        d|j                  dkD  r|j                  dz  n|j                  «      «      z  z  }|t        d	d
|j                  z  «      z  }|r'|dt        |«      t        dt        |«      «      z  z  z  }‰
j                  rF|j                  r:‰
j                  j                  «       |j                  j                  «       k(  r|dz  }| j                  t        t        d|«      d«      ||f«       �Œ˜ | j                  d„ d¬«       g }t!        | d ‰
j"                   d¬«      D ]:  \  }\  }	}}|j                  |j$                  |	d|› d‰
j&                  › d�|dœ«       Œ< d|iS c c}w c c}w )Né   gš™™™™™Ù?g      Ð?g        g      ð?gš™™™™™É?é   g      Y@g333333Ã?g¸…ëQ¸ž?gš™™™™™©?c                 ó   — | d   S )Nr   © )Úts    ú6/var/www/html/TJ-AI/tj/app/services/talent_scouting.pyÚ<lambda>z;TalentScoutingService.rank.<locals>.local.<locals>.<lambda>0   s   €  a¨¢dó    T)ÚkeyÚreverse©ÚstartzRanked #z for z using skills/pass-rate/badges)Úcandidate_idÚscout_scoreÚ	rationaleÚmatched_skillsÚranked)Úrequired_skillsÚlowerÚ
candidatesÚskillsÚsortedÚlistÚinterview_pass_rateÚmaxÚminÚ
task_scoreÚbadge_countÚlenÚnicheÚappendÚroundÚsortÚ	enumerateÚtop_kr   Ú
role_title)ÚscoredÚsÚreqÚcÚskills_lÚmatchÚbaser   ÚiÚscorer
   s             €r   Úlocalz)TalentScoutingService.rank.<locals>.local   s  ø€ Ø<>ˆFØ&-×&=Ò&=Ó>Ñ&= �1—7‘7•9Ð&=ˆCÐ>Ø×'Õ'�Ø/0¯xªxÓ8©x¨!˜AŸG™G�I¨x�Ð8Ù25œ˜s X™~Ô.¼4ÀÇÁ»>È"È1Ð;M�Ø�Ø×(Ñ(Ð4Ø˜D¤3 s¬C°°Q×5JÑ5JÓ,KÓ#LÑLÑL�DØ—<‘<Ð+Ø˜C¤#ØÜØØ45·L±LÀ1Ò4D˜AŸL™L¨5Ò0È!Ï,É,óó#ñ ñ �Dð œ˜D $¨¯©Ñ"6Ó7Ñ7�ÙØ˜C¤3 u£:´°A´s¸3³xÓ0@Ñ#@ÑAÑA�DØ—=’= Q§W¢W°·±×1DÑ1DÓ1FÈ!Ï'É'Ï-É-Ë/Ò1YØ˜D‘L�DØ—‘œu¤S¨¨d£^°QÓ7¸¸EÐBÖCð' (ð( �K‰K™N°DˆKÔ9ØˆFÜ(1°&¸¸7¿=¹=Ð2IÐQR×(SÑ$�Ñ$�E˜1˜eØ—‘à()¯©Ø',Ø'/°¨s°%¸×8JÑ8JÐ7KÐKiÐ%jØ*/ñ	õð )Tð ˜fÐ%Ð%ùòA ?ùâ8s   ’IÁ	I)ÚsystemÚuserÚlocal_factoryr   r   r   r   r   r   r   r   )r   Úrankr   r   r   zTalent scout ranking via )Úcorrelation_idr1   ÚstatusÚstubÚmessager   )r1   Újob_descriptionr   r+   r!   Ú
model_dumpr0   Údictr   r/   ÚgetÚ
isinstancer,   r   ÚstrÚfloatr$   r   r@   r   Ú	SUCCEEDED)Úselfr
   r<   r5   r=   r;   ÚdatarB   Úproviderr   r9   Úrows    `          r   r?   zTalentScoutingService.rank   s   øè ø€ ðdð 	ð
 �W×'Ñ'Ð(¨¨w×/FÑ/FÐ.Gð H Ø '× 7Ñ 7Ð8¸	À'Ç-Á-Àð QØ4;×4FÒ4FÓGÑ4F¨q˜AŸL™L�NÐ4FÑGÐHð IØ—m‘m�_ð&ð 	ð"	&”tõ "	&ôH &3Ø °Eô&
÷  
Ñˆˆd�Hð )+ˆÜ §¡¨Ó 2Ò 8°bÀ×B‰FˆAˆsÜ˜c¤4Ô(°·±¸Ô0GØØ�M‰MÜÜ!$ S¨Ñ%8Ó!9ØÜ % c§g¡g¨mÓ&<Ò&AÀÓ BØ!Ÿg™g kÓ2Ü#'¨¯©Ð0@Ó(AÒ(GÀRÓ#Hôõð Cô 'Ø"×1Ñ1Ø×)Ñ)Ü×&Ñ&ØØ/°¨zÐ:Øô
ð 	
ùòq HðP 
ûs   ƒAFÁ	FÁ /FÂFÂDFN)Ú__name__Ú
__module__Ú__qualname__r   r   r?   r   r   r   r	   r	      s   „ ðG
Ð"8ð G
Ð=Tô G
r   r	   N)
Ú__doc__Úapp.schemas.commonr   Úapp.schemas.talent_scoutingr   r   r   Úapp.services.ai_generater   r	   r   r   r   Ú<module>rW      s&   ðÙ Gå (÷ñ õ
 3÷H
ò H
r   