+
    ^Pîiß  ã                  ó(  € R t ^ RIHt ^ RIHtHtHtHt ^ RIH	t	H
t
HtHtHtHtHt ^ RIHt ^ RIHt ]! R.R7      t]P+                  R]R	7      ]! ]4      3R
 R ll4       t]P/                  R]
R	7      ]! ]4      3R R ll4       t]P/                  R]R	7      ]! ]4      3R R ll4       t]P/                  R]R	7      ]! ]4      3R R ll4       t]P+                  R]R	7      ]! ]4      3R R ll4       t]P/                  R]R	7      R R l4       tR# )uµ  
routes/coding.py â€” CodingService API
POST /api/coding/run          â€” AI Compiler (run code, get errors/output)
POST /api/coding/submit       â€” Submit a single answer (AI evaluated)
POST /api/coding/final-submit â€” Final submission of all answers
GET  /api/coding/questions    â€” Get question list
GET  /api/coding/history      â€” Get candidate's submission history
POST /api/admin/coding/review/{id} â€” Admin: set final marks
)Úannotations)Ú	APIRouterÚDependsÚHTTPExceptionÚstatus)ÚRunCodeRequestÚRunCodeResponseÚSubmitCodeRequestÚSubmitCodeResponseÚFinalSubmitRequestÚFinalSubmitResponseÚSuccessResponse)Úcoding_service)Úget_current_candidateÚcoding)Útagsz/api/coding/questions)Úresponse_modelc               ó   € V ^8„  d   QhRR/# )é   Ú_Údict© )Úformats   "Ú2D:\Python_Codes\gen_ai\people_hub\routes\coding.pyÚ__annotate__r      s   € ÷ @ñ @�Tñ @ó    c                ó@   € \        \        P                  ! 4       R7      # )z4Return the coding question list (without solutions).©Údata)r   r   Úget_questions)r   s   &r   r   r      s   € ô ¤× <Ò <Ó >Ô?Ð?r   z/api/coding/runc               ó    € V ^8„  d   QhRRRR/# )r   Úbodyr   Ú	candidater   r   )r   s   "r   r   r   #   s   € ÷ Mñ M�>ð M¨dñ Mr   c                ó  € V P                   P                  4       '       g   \        \        P                  RR7      h\
        P                  ! V P                  V P                   V P                  R7      p\        VR,          VR,          R7      # )u�   
AI Compiler: analyze code, return compiler-style errors/output.
Does NOT provide solutions or suggestions â€” behaves like a real compiler.
zCode cannot be empty.©Ústatus_codeÚdetail)ÚlanguageÚcodeÚquestion_idÚoutputr   )r*   r   )
r(   Ústripr   r   ÚHTTP_400_BAD_REQUESTr   Úrun_coder'   r)   r   ©r!   r"   Úresults   && r   r-   r-   "   sp   € ð �9‰9�?‰?×ÒÜÜ×3Ñ3Ø*ô
ð 	
ô
 ×$Ò$Ø—‘Ø�Y‰YØ×$Ñ$ô€Fô
  &¨Õ"2¸6À(Õ;KÔLÐLr   z/api/coding/submitc               ó    € V ^8„  d   QhRRRR/# )r   r!   r	   r"   r   r   )r   s   "r   r   r   9   s   € ÷ ñ Ð'ð °Dñ r   c                ó²  € V P                   P                  4       '       g   \        \        P                  RR7      h\
        P                  ! VR,          VR,          V P                  V P                  V P                  V P                   R7      p\        VR,          VR,          VR,          VR	,          VR
,          VR,          VR,          VR,          R7      # )zk
Submit answer for a single question.
AI evaluates and scores it; result stored in coding_assessment.json.
zSubmitted code cannot be empty.r$   ÚidÚ
access_key)Úcandidate_idr3   r)   Úquestion_textr'   r(   Úsubmission_idr)   Ú	ai_resultÚai_feedbackÚai_scoreÚai_marksÚ	max_marksÚsubmitted_at)r6   r)   r7   r8   r9   r:   r;   r<   )r(   r+   r   r   r,   r   Úsubmit_coder)   r5   r'   r
   r.   s   && r   r=   r=   8   s¾   € ð �9‰9�?‰?×ÒÜÜ×3Ñ3Ø4ô
ð 	
ô
 ×'Ò'Ø˜t•_Ø˜\Õ*Ø×$Ñ$Ø×(Ñ(Ø—‘Ø�Y‰Yô€Fô Ø˜_Õ-Ø˜=Õ)Ø˜Õ%Ø˜=Õ)Ø˜
Õ#Ø˜
Õ#Ø˜Õ%Ø˜NÕ+ô	ð 	r   z/api/coding/final-submitc               ó    € V ^8„  d   QhRRRR/# )r   r!   r   r"   r   r   )r   s   "r   r   r   \   s   € ÷ 
)ñ 
)Ð)ð 
)°dñ 
)r   c                ó�   € \         P                  ! VR,          VR,          V P                  V P                  R7      p\	        R/ VB # )zD
Final submission. Records completion and returns reference number.
r2   r3   )r4   r3   ÚsubmissionsÚtime_used_secondsr   )r   Úfinal_submitr@   rA   r   r.   s   && r   rB   rB   [   sE   € ô
 ×(Ò(Ø˜t•_Ø˜\Õ*Ø×$Ñ$Ø×0Ñ0ô	€Fô Ñ( Ñ(Ð(r   z/api/coding/historyc               ó   € V ^8„  d   QhRR/# )r   r"   r   r   )r   s   "r   r   r   l   s   € ÷ -ñ -�tñ -r   c                óT   € \         P                  ! V R,          4      p\        VR7      # )z5Get all coding submissions for the current candidate.r2   r   )r   Úget_candidate_submissionsr   )r"   r@   s   & r   ÚhistoryrF   k   s#   € ô !×:Ò:¸9ÀT½?ÓK€KÜ Ô,Ð,r   z(/api/admin/coding/review/{submission_id}c               ó    € V ^8„  d   QhRRRR/# )r   r6   ÚstrÚfinal_marksÚintr   )r   s   "r   r   r   u   s    € ÷ Hñ HØðHàñHr   c                ór   € \         P                  ! W4      pV'       g   \        RRR7      h\        RVR7      # )z{
Admin endpoint: override AI marks with manually reviewed final marks.
Protect this endpoint with admin JWT in production.
i”  zSubmission not found.r$   zFinal marks updated.)Úmessager   )r   Úset_final_marksr   r   )r6   rI   r/   s   && r   Úadmin_reviewrN   t   s3   € ô ×+Ò+¨MÓG€FßÜ¨Ð4KÔLÐLÜÐ#9ÀÔGÐGr   N)Ú__doc__Ú
__future__r   Úfastapir   r   r   r   Úmodels.schemasr   r   r	   r
   r   r   r   Úservices.coding_servicer   Úmiddleware.auth_middlewarer   ÚrouterÚgetr   Úpostr-   r=   rB   rF   rN   r   r   r   Ú<module>rX      s@  ðñõ #ß =Ó =÷÷ ñ õ 3Ý <á	˜˜
Ô	#€ð
 ‡�Ð#°O€ÓDÙ#Ð$9Ó:ö @ó Eð@ð ‡�Ð¨€Ó?Ù5<Ð=RÓ5Sö Mó @ðMð* ‡�Ð!Ð2D€ÓEÙ;BÐCXÓ;Yö ó FððD ‡�Ð'Ð8K€ÓLÙ=DÐEZÓ=[ö 
)ó Mð
)ð ‡�Ð!°/€ÓBÙ%Ð&;Ó<ö -ó Cð-ð ‡�Ð7È€ÓXôHó YòHr   