Ë
    I»jŠ  ã                   óH   — d Z ddlmZmZmZ ddlmZ ddlmZ  G d„ d«      Z	y)z/Badge recommendations from performance signals.é    )Ú	BadgeItemÚBadgeRecommendRequestÚBadgeRecommendResponse)Ú	JobStatus)Úgenerate_jsonc                   ó   — e Zd Zdedefd„Zy)ÚBadgesServiceÚpayloadÚreturnc              ƒ   óÌ  ‡K  — d}d‰j                   › d‰j                  › d‰j                  › d‰j                  › �}dt        fˆfd„}t        |||¬«      ƒ d {  –—† \  }}}d	t        dt        t           fd
„}t        ‰j                  ‰j                   t        j                  |d|› � ||j                  d«      xs g «       ||j                  d«      xs g «      ¬«      S 7 Œˆ­w)NzuRecommend badges from performance. Return JSON: {"earned":[{"badge_id","name","level","reason"}],"next_badges":[...]}zCandidate: z	
Tracks: z
Assessments: z
Interviews: r   c                  ó¸  •— g } ‰j                   r| j                  dddddœ«       ‰j                  D �cg c]Q  }t        |t        «      r?t        |j                  d«      t        t        f«      rt        |j                  d«      «      ‘ŒS }}|r$t        |«      dk\  r| j                  dd	d
ddœ«       dddddœg}| s| j                  dddddœ«       | |dœS c c}w )Nztrack-starterzTrack StarterÚbeginnerz.Completed at least one interview track attempt©Úbadge_idÚnameÚlevelÚreasonÚscoregš™™™™™é?zstrong-intervieweezStrong IntervieweeÚadvancedzInterview score >= 0.8zassessment-acezAssessment AceÚintermediatezPass 3 assessments above 70%zgetting-startedzGetting StartedzProfile activity detected)ÚearnedÚnext_badges)	Útrack_resultsÚappendÚinterview_scoresÚ
isinstanceÚdictÚgetÚintÚfloatÚmax)r   ÚxÚscoresr   r
   s       €ú-/var/www/html/TJ-AI/tj/app/services/badges.pyÚlocalz&BadgesService.recommend.<locals>.local   sý   ø€ ØˆFØ×$Ò$Ø—‘à$3Ø /Ø!+Ø"Rñ	ôð !×1Ò1óá1�AÜ˜a¤Ô&¬:°a·e±e¸G³nÄsÌEÀlÔ+Sô �a—e‘e˜G“nÕ%Ø1ð ð ñ
 œ#˜f›+¨Ò,Ø—‘à$8Ø 4Ø!+Ø":ñ	ôð !1Ø,Ø+Ø<ñ	ðˆKñ Ø—‘à$5Ø 1Ø!+Ø"=ñ	ôð %°[ÑAÐAùò?s   ´AC)ÚsystemÚuserÚlocal_factoryÚitemsc                 ó<  — g }t        | xs g «      D ]‡  \  }}t        |t        «      sŒ|j                  t	        t        |j                  dd|› �«      «      t        |j                  dd«      «      |j                  d«      |j                  d«      ¬«      «       Œ‰ |S )Nr   zbadge-r   ÚBadger   r   r   )Ú	enumerater   r   r   r   Ústrr   )r)   ÚoutÚiÚbs       r$   Úparsez&BadgesService.recommend.<locals>.parseD   sˆ   € ØˆCÜ! %¢+¨2Ö.‘��1Ü! !¤TÔ*ØØ—
‘
ÜÜ!$ Q§U¡U¨:¸À¸s°|Ó%DÓ!EÜ  §¡ v¨wÓ!7Ó8ØŸe™e G›nØ Ÿu™u X›ô	õð /ð ˆJó    zBadge recommendations via r   r   )Úcorrelation_idÚcandidate_idÚstatusÚstubÚmessager   r   )r4   r   Úassessment_resultsr   r   r   Úlistr   r   r3   r   Ú	SUCCEEDEDr   )	Úselfr
   r&   r'   r%   Údatar6   Úproviderr1   s	    `       r$   Ú	recommendzBadgesService.recommend	   s  øè ø€ ð%ð 	ð ˜'×.Ñ.Ð/¨z¸'×:OÑ:OÐ9Pð QØ#×6Ñ6Ð7°~Àg×F^ÑF^ÐE_ðað 	ð
*	B”tõ *	BôX &3Ø °Eô&
÷  
Ñˆˆd�Hð	œð 	¤$¤y¡/ó 	ô &Ø"×1Ñ1Ø ×-Ñ-Ü×&Ñ&ØØ0°°
Ð;Ù˜Ÿ™ (Ó+Ò1¨rÓ2Ù˜dŸh™h }Ó5Ò;¸Ó<ô
ð 	
ð' 
ús   ƒAC$ÁC"ÁB	C$N)Ú__name__Ú
__module__Ú__qualname__r   r   r>   © r2   r$   r	   r	      s   „ ðR
Ð'<ð R
ÐAWô R
r2   r	   N)
Ú__doc__Úapp.schemas.badgesr   r   r   Úapp.schemas.commonr   Úapp.services.ai_generater   r	   rB   r2   r$   Ú<module>rG      s    ðÙ 5ç WÑ WÝ (Ý 2÷S
ò S
r2   