Ë
    I»jn	  ã                   óD   — d Z ddlmZ ddlmZmZ ddlmZ  G d„ d«      Zy)zResume vs JD screening match.é    )Ú	JobStatus)ÚResumeMatchRequestÚResumeMatchResponse)Úgenerate_jsonc                   ó   — e Zd Zdedefd„Zy)ÚResumeMatchServiceÚpayloadÚreturnc              ƒ   óB  ‡K  — d}d‰j                   › d‰j                  › d‰j                  xs ‰j                  › d‰j                  › �}dt
        fˆfd„}t        |||¬«      ƒ d {  –—† \  }}}t        |j                  d	«      xs d
«      }t        ‰j                  ‰j                  ‰j                   t        j                  |d|› �||dk\  t        |j                  d«      xs g «      t        |j                  d«      xs g «      |j                  d«      ¬«      S 7 Œµ­w)NzsScore resume vs job description. Return JSON: {"match_score":0-1,"matched_skills":[],"missing_skills":[],"summary"}zRole: z
JD:
z	
Resume: z
Required skills: r
   c                  ó  •— ‰j                   xs t        ‰j                  «      j                  «       } ‰j                  xs g }|s1dD �cg c]   }|‰j
                  j                  «       v r|‘Œ" c}xs dg}|D �cg c]  }|j                  «       | v sŒ|‘Œ }}|D �cg c]	  }||vsŒ|‘Œ }}|rt        |«      t        |«      z  nd}t        |d«      ||dt        |dz  «      › d‰j                  › d�d	œS c c}w c c}w c c}w )
N)ÚpythonÚfastapiÚsqlÚawsÚreactÚjavaÚcommunicationg      à?é   zResume match éd   z% for Ú.)Úmatch_scoreÚmatched_skillsÚmissing_skillsÚsummary)	Úresume_textÚstrÚresume_structuredÚlowerÚrequired_skillsÚjob_descriptionÚlenÚroundÚ
role_title)ÚtextÚrequiredÚwÚsÚmatchedÚmissingÚscorer	   s          €ú3/var/www/html/TJ-AI/tj/app/services/resume_match.pyÚlocalz'ResumeMatchService.score.<locals>.local   s   ø€ Ø×'Ñ'ÒI¬3¨w×/HÑ/HÓ+I×PÑPÓRˆDØ×.Ñ.Ò4°"ˆHÙñ  TóÙS˜!Ø˜G×3Ñ3×9Ñ9Ó;Ñ;ò ÐSñò 'ð &Ð&ð ñ #+Ó@¡(˜Q¨a¯g©g«i¸4Ò.?’q (ˆGÐ@Ù"*Ó?¡(˜Q¨a°wÒ.>’q (ˆGÐ?Ù6>”S˜“\¤C¨£MÒ1ÀCˆEä$ U¨A›Ø")Ø")à#¤E¨%°#©+Ó$6Ð#7°v¸g×>PÑ>PÐ=QÐQRÐSñð ùòùò AùÚ?s   Á	%C5Á:C:ÂC:Â	C?Â&C?)ÚsystemÚuserÚlocal_factoryr   r   zResume match via g333333ã?r   r   r   )Úcorrelation_idÚcandidate_idr#   ÚstatusÚstubÚmessager   Úscreen_passedr   r   r   )r#   r    r   r   r   Údictr   ÚfloatÚgetr   r0   r1   r   Ú	SUCCEEDEDÚlist)	Úselfr	   r-   r.   r,   Údatar3   Úproviderr*   s	    `       r+   r*   zResumeMatchService.score	   s4  øè ø€ ð\ð 	ð
 �W×'Ñ'Ð(¨°×0GÑ0GÐ/Hð IØ×*Ñ*ÒG¨g×.GÑ.GÐHð I Ø '× 7Ñ 7Ð8ð:ð 	ð	”tõ 	ô* &3Ø °Eô&
÷  
Ñˆˆd�Hô �d—h‘h˜}Ó-Ò2°Ó3ˆÜ"Ø"×1Ñ1Ø ×-Ñ-Ø×)Ñ)Ü×&Ñ&ØØ'¨ zÐ2ØØ 3™,Ü §¡Ð)9Ó :Ò @¸bÓAÜ §¡Ð)9Ó :Ò @¸bÓAØ—H‘H˜YÓ'ô
ð 	
ð	 
ús   ƒA$DÁ'DÁ(B6DN)Ú__name__Ú
__module__Ú__qualname__r   r   r*   © ó    r+   r   r      s   „ ð0
Ð#5ð 0
Ð:Mô 0
rB   r   N)	Ú__doc__Úapp.schemas.commonr   Úapp.schemas.resume_matchr   r   Úapp.services.ai_generater   r   rA   rB   r+   Ú<module>rG      s   ðÙ #å (ß LÝ 2÷1
ò 1
rB   