Ë
    I»jø  ã                   ót   — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ  G d„ d	«      Zy
)u1   Timed puzzle challenges â€” SOW Assessment Types.é    )Úuuid4)Ú	JobStatus)ÚPuzzleGenerateRequestÚPuzzleGenerateResponseÚPuzzleGradeRequestÚPuzzleGradeResponse)ÚQuestionType)Úgenerate_json)Ú_local_questionsÚ_parse_questionsc                   ó,   — e Zd Zdedefd„Zdedefd„Zy)ÚPuzzlesServiceÚpayloadÚreturnc           
   ƒ   ó6  ‡K  — d}d‰j                   › d‰j                  › d‰j                  j                  › d‰j                  › d‰j
                  › �
}dt        fˆfd„}t        |||¬	«      ƒ d {  –—† \  }}}t        |j                  d
«      xs |j                  d«      xs g t        j                  ‰j                  «      }t        ‰j                  t        t        «       «      ‰j                   ‰j
                  t         j"                  |d|› �|¬«      S 7 Œ¦­w)NzxGenerate timed puzzle / brain-teaser challenges. Return JSON: {"puzzles":[{"stem","answer","explanation","options":[]}]}zType: z
Role: z
Difficulty: z
Count: z
Time limit minutes: r   c                  ó„   •— dt        ‰ j                  t        j                  ‰ j                  d‰ j
                  › �¬«      iS )NÚpuzzlesz	puzzle / )ÚcountÚqtypeÚ
difficultyÚtopic)r   r   r	   ÚMCQr   Úpuzzle_type)r   s   €ú./var/www/html/TJ-AI/tj/app/services/puzzles.pyÚlocalz&PuzzlesService.generate.<locals>.local   sB   ø€ àÔ+Ø!Ÿ-™-Ü&×*Ñ*Ø&×1Ñ1Ø% g×&9Ñ&9Ð%:Ð;ô	ðð ó    ©ÚsystemÚuserÚlocal_factoryr   Ú	questionszPuzzles via )Úcorrelation_idÚpuzzle_set_idr   Útime_limit_minutesÚstatusÚstubÚmessager   )r   Ú
role_titler   Úvaluer   r$   Údictr
   r   Úgetr	   r   r   r"   Ústrr   r   Ú	SUCCEEDED)	Úselfr   r   r   r   Údatar&   Úproviderr   s	    `       r   ÚgeneratezPuzzlesService.generate   s'  øè ø€ ðSð 	ð
 �W×(Ñ(Ð)¨°'×2DÑ2DÐ1Eð FØ"×-Ñ-×3Ñ3Ð4°I¸g¿m¹m¸_ð M#Ø#*×#=Ñ#=Ð">ð@ð 	ð	”tõ 	ô &3Ø °Eô&
÷  
Ñˆˆd�Hô #Ø�H‰H�YÓÒ> 4§8¡8¨KÓ#8Ò>¸BÜ×ÑØ×Ñó
ˆô
 &Ø"×1Ñ1Üœe›g›,Ø×+Ñ+Ø&×9Ñ9Ü×&Ñ&ØØ" 8 *Ð-Øô	
ð 		
ð 
ús   ƒA-DÁ0DÁ1B'Dc              ƒ   ó
  ‡K  — d}d‰j                   › d‰j                  › d‰j                  › �}dt        fˆfd„}t	        |||¬«      ƒ d {  –—† \  }}}t        ‰j                  ‰j                   t        j                  |d|› �t        |j                  d	«      xs d
«      t        |j                  d«      xs d
«      |j                  d«      |j                  d«      t        |j                  d«      xs g «      ¬«
      S 7 Œ´­w)NzsGrade puzzle answers. Return JSON: {"total_score","max_total_score","passed","feedback_markdown","item_results":[]}zset=z	
answers=z
time=r   c            
      ó¼   •— t        ‰j                  «      } t        | «      }t        |dz  d«      }||||dz  k\  dt	        | «      D �cg c]  }|ddœ‘Œ	 c}dœS c c}w )Ng      è?é   g333333ã?z8Strong pattern recognition. Practice timed spatial sets.)ÚindexÚscore)Útotal_scoreÚmax_total_scoreÚpassedÚfeedback_markdownÚitem_results)ÚlenÚanswersÚfloatÚroundÚrange)ÚnÚ	max_totalÚtotalÚir   s       €r   r   z#PuzzlesService.grade.<locals>.localE   sk   ø€ Ü�G—O‘OÓ$ˆAÜ˜a›ˆIÜ˜) dÑ*¨AÓ.ˆEà$Ø#,Ø 9¨s¡?Ñ2Ø%_ÜFKÈAÄhÓ OÁhÀ¨1°tÓ!<ÀhÑ Oñð ùò
 !Ps   ÁAr   zPuzzles graded via r7   r   r8   r9   r:   r;   )
r"   r#   r%   r&   r'   r7   r8   r9   r:   r;   )r#   r=   Útime_taken_secondsr*   r
   r   r"   r   r-   r>   r+   Úlist)r.   r   r   r   r   r/   r&   r0   s    `      r   ÚgradezPuzzlesService.grade:   s  øè ø€ ð#ð 	ð �7×(Ñ(Ð)¨°G·O±OÐ3Dð EØ×.Ñ.Ð/ð1ð 	ð

	”tõ 
	ô &3Ø °Eô&
÷  
Ñˆˆd�Hô #Ø"×1Ñ1Ø!×/Ñ/Ü×&Ñ&ØØ)¨(¨Ð4Ü˜dŸh™h }Ó5Ò:¸Ó;Ü! $§(¡(Ð+<Ó"=Ò"BÀÓCØ—8‘8˜HÓ%Ø"Ÿh™hÐ':Ó;Ü˜dŸh™h ~Ó6Ò<¸"Ó=ô
ð 	
ð 
ús   ƒA	DÁDÁB5DN)	Ú__name__Ú
__module__Ú__qualname__r   r   r1   r   r   rG   © r   r   r   r      s-   „ ð&
Ð&;ð &
Ð@Vó &
ðP%
Ð#5ð %
Ð:Mô %
r   r   N)Ú__doc__Úuuidr   Úapp.schemas.commonr   Úapp.schemas.puzzlesr   r   r   r   Úapp.schemas.questionsr	   Úapp.services.ai_generater
   Úapp.services.questionsr   r   r   rK   r   r   Ú<module>rS      s/   ðÙ 7å å (÷ó õ /Ý 2ß E÷N
ò N
r   