+
    _Pîi5  ã                  ó  € R t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^ R	IHt ^ R	IHt ^ R	IHt ^ R	IHt ^ R	IHt ]P8                  ! 4        ]! ]P:                  R
]P<                  RRR7      t]PA                  ]	]PB                  RR.R.R7       ]PE                  ]4       ]PE                  ]4       ]PE                  ]4       ]PE                  ]4       ]PE                  ]4       ]! ]#4      PH                  R,          t%]PM                  R]! ]'! ]%4      R7      RR7       ]%R,          t(R R lt)]PU                  RRR7      R 4       t+]PU                  RRR7      R 4       t,]PU                  RR.R 7      R! 4       t-]PU                  R"R.R 7      R# 4       t.]/R$8X  dÕ   ]0! R24       ]0! R%]P:                   24       ]0! R14       ]0! R&]Pb                   24       ]0! R']Pb                   R24       ]0! R(]Pb                   R24       ]0! 4        ]0! R)4       ]0! R*4       ]0! R+4       ]0! R,4       ]0! R-4       ]0! R34       ]Pd                  ! R.]Pf                  ]Pb                  ]Ph                  R/R07       R# R# )4u‚  
main.py â€” People Hub Candidate Interview Platform
==================================================
FastAPI app that serves ALL HTML pages + REST API.

Run from PyCharm:   right-click â†’ Run 'main'
Run from terminal:  python main.py
                    uvicorn main:app --reload --port 8000

Candidate portal:   http://localhost:8000
API explorer:       http://localhost:8000/docs
)Úannotations)ÚPathN)ÚFastAPI)ÚCORSMiddleware)ÚFileResponseÚJSONResponse)ÚStaticFiles)Úsettings)Úrouteru©   AI-powered candidate interview platform.

**Login:** `GET /`  
**Docs:**  `GET /docs`  

Stages: 1=Assessment Â· 2=RolePlay Â· 3=Coding Â· 4=Technical Â· 5=Human Â· 6=HRz/docsz/redoc)ÚtitleÚdescriptionÚversionÚdocs_urlÚ	redoc_urlTÚ*)Úallow_originsÚallow_credentialsÚallow_methodsÚallow_headersÚstaticz/static)Ú	directory)ÚnameÚhtmlc               ó    € V ^8„  d   QhRRRR/# )é   ÚfilenameÚstrÚreturnr   © )Úformats   "Ú)D:\Python_Codes\gen_ai\people_hub\main.pyÚ__annotate__r!   E   s   € ÷ 	ñ 	�Cð 	˜Lñ 	ó    c                óŒ   € \         V ,          pVP                  4       '       g   ^ RIHp V! RV  RV  R2RR7      # \	        V4      # )é    )ÚHTMLResponsez<h2>Missing: z0</h2><p>Copy the HTML file to <code>static/html/z</code></p>i”  )Ústatus_code)ÚHTML_DIRÚexistsÚfastapi.responsesr%   r   )r   Úpathr%   s   &  r    Ú_htmlr+   E   sP   € Ü�hÕ€DØ�;‰;�=Š=Ý2ÙØ˜H˜:ð &:Ø:B¸À;ðPàô
ð 	
ô
 ˜ÓÐr"   Ú/F)Úinclude_in_schemac                 ó   € \        R4      # )u.   Login page â€” entry point for all candidates.zpeople_hub_login.html©r+   r   r"   r    Úrootr0   Q   ó   € ô Ð(Ó)Ð)r"   z/setupc                 ó   € \        R4      # )z!Interview environment setup page.zpeople_hub_setup.htmlr/   r   r"   r    Úsetupr3   W   r1   r"   z/healthÚhealth)Útagsc                 óJ   € R RR\         P                  R\         P                  /# )ÚstatusÚokÚservicer   )r	   ÚAPP_NAMEÚAPP_VERSIONr   r"   r    r4   r4   _   s!   € à�d˜I¤x×'8Ñ'8¸)ÄX×EYÑEYÐZÐZr"   z/apic            %     ó´   € \        R \        P                  R\        P                  RRRRR\        P                  RRR	R
RRRRRRRRRRRRRRRRRRRRR//4      # )r9   r   ÚloginzGET /Údocsz	GET /docsÚstagesÚ	endpointsÚcaptcha_challengez POST /api/auth/captcha/challengeÚcaptcha_verifyzPOST /api/auth/captcha/verifyzPOST /api/auth/loginÚmezGET  /api/auth/meÚphoto_uploadzPOST /api/setup/photoÚsetup_completezPOST /api/setup/completeÚcoding_questionszGET  /api/coding/questionsÚrun_codezPOST /api/coding/runÚsubmit_codezPOST /api/coding/submitÚfinal_submitzPOST /api/coding/final-submitÚ	log_fraudzPOST /api/fraud/eventÚfraud_reportzGET  /api/fraud/report)r   r	   r:   r;   ÚSTAGE_ROUTESr   r"   r    Úapi_inforM   d   s�   € äØ”H×%Ñ%Ø”H×(Ñ(Ø�GØ�KØ”(×'Ñ'ØØÐ"DØÐ"AØÐ"8ØÐ"5ØÐ"9ØÐ"<ØÐ">ØÐ"8ØÐ";ØÐ"AØÐ"9ØÐ":ð
ðó ð r"   Ú__main__z  u      Login    â†’ http://localhost:u      API Docs â†’ http://localhost:u      Health   â†’ http://localhost:z*  Test Credentials (from data/users.json):u&       Stage 1 (Assessment)  â†’ DEMO0001u&       Stage 2 (Role Play)   â†’ DEMO0002u&       Stage 3 (Coding)      â†’ DEMO0003u&       Stage 4 (Technical)   â†’ DEMO0004zmain:appÚinfo)ÚhostÚportÚreloadÚ	log_leveluÀ   â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�uÁ   
â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�uÁ   â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�â•�
)5Ú__doc__Ú
__future__r   Úpathlibr   ÚuvicornÚfastapir   Úfastapi.middleware.corsr   r)   r   r   Úfastapi.staticfilesr   Úconfigr	   Úroutes.authr
   Úauth_routerÚroutes.codingÚcoding_routerÚroutes.fraudÚfraud_routerÚroutes.setupÚsetup_routerÚroutes.interviewÚinterview_routerÚensure_dirsr:   r;   ÚappÚadd_middlewareÚALLOWED_ORIGINSÚinclude_routerÚ__file__ÚparentÚ
STATIC_DIRÚmountr   r'   r+   Úgetr0   r3   r4   rM   Ú__name__ÚprintÚAPP_PORTÚrunÚAPP_HOSTÚ	APP_DEBUGr   r"   r    Ú<module>rv      s—  ðñõ #Ý Û Ý Ý 2ß 8Ý +å Ý -Ý 1Ý /Ý /Ý 7ð 	× Ò Ô ñ Ø
×
Ñ
ð	[ð
 × Ñ ØØô€ð × Ñ ØØ×*Ñ*ØØ�%Ø�%ð ô ð × Ñ �;Ô Ø × Ñ �=Ô !Ø × Ñ �<Ô  Ø × Ñ �<Ô  Ø × Ñ Ð#Ô $ñ �(‹^×"Ñ" XÕ-€
Ø ‡	�	ˆ)‘[©3¨z«?Ô;À(€	Ô Kð ˜Õ€õ	ð ‡�ˆ €Ó&ñ*ó 'ð*ð
 ‡�ˆ U€Ó+ñ*ó ,ð*ð ‡�ˆ˜(˜€Ó$ñ[ó %ð[ð ‡�ˆ�x�j€Ó!ñó "ðð2 ˆzÔÙ	Ð
ÔÙ	ˆBˆx× Ñ Ð!Ð
"Ô#Ù	ˆ*ÔÙ	Ð,¨X×->Ñ->Ð,?Ð
@ÔAÙ	Ð,¨X×->Ñ->Ð,?¸uÐ
EÔFÙ	Ð,¨X×->Ñ->Ð,?¸wÐ
GÔHÙ	„GÙ	Ð
6Ô7Ù	Ð
2Ô3Ù	Ð
2Ô3Ù	Ð
2Ô3Ù	Ð
2Ô3Ù	Ð
Ôà‡K‚KØØ×ÑØ×ÑØ×!Ñ!Ø÷ñ r"   