Ë
    I»j[  ã                   óL   — d Z ddlmZmZmZmZ ddlmZ ddlm	Z	  G d„ d«      Z
y)zCandidate interview scoring.é    )ÚBiasFlagÚCandidateScoringRequestÚCandidateScoringResponseÚSkillGapItem)Ú	JobStatus)Úgenerate_jsonc                   ó   — e Zd Zdedefd„Zy)ÚCandidateScoringServiceÚpayloadÚreturnc              ƒ   óÄ  ‡K  — d}d‰j                   › d‰j                  › d‰j                  › d‰j                  j                  › dt        ‰j                  «      › d‰j                  › �}dt        fˆfd	„}t        |||¬
«      ƒ d {  –—† \  }}}|j                  d«      xs g D �cg c]w  }t        |t        «      ret        t        |j                  dd«      «      |j                  d«      |j                  d«      |j                  d«      |j                  d«      ¬«      ‘Œy }	}|j                  d«      xs g D �
cg c]{  }
t        |
t        «      rit        t        |
j                  dd«      «      t        |
j                  dd«      «      t        |
j                  dd«      «      |
j                  d«      ¬«      ‘Œ} }}
t        ‰j                   ‰j"                  ‰j$                  t&        j(                  |d|› �|j                  d«      |j                  d«      |j                  d«      |	||j                  d«      |j                  d «      xs i ¬!«      S 7 �ŒÍc c}w c c}
w ­w)"Nz÷Score an interview. Return JSON: {"confidence_score":0-1,"hiring_fit_score":0-1,"hiring_fit_label","behavioral_summary","skill_gaps":[{"skill","gap","evidence"}],"bias_flags":[{"category","severity","description","recommendation"}],"scorecard":{}}zRole: z
JD: z	
Skills: z
Mode: z
Transcript turns: z

Answers: r   c                  ó˜   •— ‰j                   xs ddg} dddd‰j                  › d�| d d D �cg c]
  }|d	d
dddœ‘Œ c}g ddddœdœS c c}w )NÚcommunicationzrole expertiseg
×£p=
ç?gÃõ(\�Âå?Úmaybez&Candidate showed reasonable depth for z&; probe consistency on impact metrics.é   gš™™™™™é?gš™™™™™á?g      Ð?z0Limited concrete examples in transcript/answers.©ÚskillÚrequired_levelÚdemonstrated_levelÚgapÚevidencegffffffæ?g      è?gÍÌÌÌÌÌä?)Ú	technicalr   Úproblem_solving)Úconfidence_scoreÚhiring_fit_scoreÚhiring_fit_labelÚbehavioral_summaryÚ
skill_gapsÚ
bias_flagsÚ	scorecard)Úrequired_skillsÚ
role_title)ÚskillsÚsr   s     €ú8/var/www/html/TJ-AI/tj/app/services/candidate_scoring.pyÚlocalz/CandidateScoringService.evaluate.<locals>.local   s•   ø€ Ø×,Ñ,ÒS°ÐBRÐ0SˆFà$(Ø$(Ø$+à<¸W×=OÑ=OÐ<Pð Q;ð ;ð $ B Q™Zó	ñ (˜ð "#Ø*-Ø.2Ø#Ø$Vóð (ñ	ð !à!$Ø%)Ø'+ññ'ð ùò	s   ­A)ÚsystemÚuserÚlocal_factoryr   r   Ú r   r   r   r   r   r   ÚcategoryÚgeneralÚseverityÚlowÚdescriptionÚrecommendation)r+   r-   r/   r0   zScored interview via r   r   r   r   r    )Úcorrelation_idÚinterview_idÚcandidate_idÚstatusÚstubÚmessager   r   r   r   r   r   r    )r"   Újob_descriptionr!   ÚmodeÚvalueÚlenÚ
transcriptÚanswersÚdictr   ÚgetÚ
isinstancer   Ústrr   r   r1   r2   r3   r   Ú	SUCCEEDED)Úselfr   r'   r(   r&   Údatar5   ÚproviderÚgr   Úbr   s    `          r%   Úevaluatez CandidateScoringService.evaluate	   sY  øè ø€ ð ð 	ð �W×'Ñ'Ð(¨¨w×/FÑ/FÐ.Gð HØ×.Ñ.Ð/¨x¸¿¹×8JÑ8JÐ7Kð L!Ü!$ W×%7Ñ%7Ó!8Ð 9¸ÀWÇ_Á_ÐDUðWð 	ð	”tõ 	ô8 &3Ø °Eô&
÷  
Ñˆˆd�Hð —h‘h˜|Ó,Ò2°Ð2ó

ñ 3�Ü˜!œTÔ"ô Ü˜!Ÿ%™% ¨Ó,Ó-Ø Ÿu™uÐ%5Ó6Ø#$§5¡5Ð)=Ó#>Ø—E‘E˜%“LØŸ™˜zÓ*öð 3ð 	ð 

ð$ —h‘h˜|Ó,Ò2°Ð2ó	
ñ 3�Ü˜!œTÔ"ô Ü˜QŸU™U :¨yÓ9Ó:Ü˜QŸU™U :¨uÓ5Ó6Ü §¡ m°RÓ 8Ó9Ø Ÿu™uÐ%5Ó6ö	ð 3ð 	ð 	
ô (Ø"×1Ñ1Ø ×-Ñ-Ø ×-Ñ-Ü×&Ñ&ØØ+¨H¨:Ð6Ø!ŸX™XÐ&8Ó9Ø!ŸX™XÐ&8Ó9Ø!ŸX™XÐ&8Ó9Ø!Ø!Ø#Ÿx™xÐ(<Ó=Ø—h‘h˜{Ó+Ò1¨rô
ð 	
ð1 
ûò

ùò	
ùs3   ƒBI ÂIÂI Â&A<IÄ"I Ä;B IÆ;BI É
I N)Ú__name__Ú
__module__Ú__qualname__r   r   rG   © ó    r%   r
   r
      s   „ ðO
Ð&=ð O
ÐBZô O
rL   r
   N)Ú__doc__Úapp.schemas.candidate_scoringr   r   r   r   Úapp.schemas.commonr   Úapp.services.ai_generater   r
   rK   rL   r%   Ú<module>rQ      s    ðÙ "ç sÓ sÝ (Ý 2÷P
ò P
rL   