diff --git a/core/bot/__pycache__/__init__.cpython-313.pyc b/core/bot/__pycache__/__init__.cpython-313.pyc index b80c7da2e..68417c854 100644 Binary files a/core/bot/__pycache__/__init__.cpython-313.pyc and b/core/bot/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/bot/__pycache__/admin.cpython-313.pyc b/core/bot/__pycache__/admin.cpython-313.pyc index a17837359..22a8305eb 100644 Binary files a/core/bot/__pycache__/admin.cpython-313.pyc and b/core/bot/__pycache__/admin.cpython-313.pyc differ diff --git a/core/bot/__pycache__/apps.cpython-313.pyc b/core/bot/__pycache__/apps.cpython-313.pyc index 77c992f78..83d8d31c9 100644 Binary files a/core/bot/__pycache__/apps.cpython-313.pyc and b/core/bot/__pycache__/apps.cpython-313.pyc differ diff --git a/core/bot/__pycache__/models.cpython-313.pyc b/core/bot/__pycache__/models.cpython-313.pyc index ec05dc5c4..e5f6bde8c 100644 Binary files a/core/bot/__pycache__/models.cpython-313.pyc and b/core/bot/__pycache__/models.cpython-313.pyc differ diff --git a/core/bot/migrations/__pycache__/0001_initial.cpython-313.pyc b/core/bot/migrations/__pycache__/0001_initial.cpython-313.pyc index 34271880f..02494c85f 100644 Binary files a/core/bot/migrations/__pycache__/0001_initial.cpython-313.pyc and b/core/bot/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/core/bot/migrations/__pycache__/__init__.cpython-313.pyc b/core/bot/migrations/__pycache__/__init__.cpython-313.pyc index 07023940e..275ed3d93 100644 Binary files a/core/bot/migrations/__pycache__/__init__.cpython-313.pyc and b/core/bot/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/core/__pycache__/__init__.cpython-313.pyc b/core/core/__pycache__/__init__.cpython-313.pyc index f6079b87d..1ec1f698a 100644 Binary files a/core/core/__pycache__/__init__.cpython-313.pyc and b/core/core/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/core/__pycache__/settings.cpython-313.pyc b/core/core/__pycache__/settings.cpython-313.pyc index 4d108dd3e..48368a50c 100644 Binary files a/core/core/__pycache__/settings.cpython-313.pyc and b/core/core/__pycache__/settings.cpython-313.pyc differ diff --git a/core/core/__pycache__/urls.cpython-313.pyc b/core/core/__pycache__/urls.cpython-313.pyc index 4af27e5d9..d4dfcbeb4 100644 Binary files a/core/core/__pycache__/urls.cpython-313.pyc and b/core/core/__pycache__/urls.cpython-313.pyc differ diff --git a/core/core/__pycache__/wsgi.cpython-313.pyc b/core/core/__pycache__/wsgi.cpython-313.pyc index 43e388d7d..8bac121de 100644 Binary files a/core/core/__pycache__/wsgi.cpython-313.pyc and b/core/core/__pycache__/wsgi.cpython-313.pyc differ diff --git a/core/db.sqlite3 b/core/db.sqlite3 index 1c94f2bf8..477bb03b1 100644 Binary files a/core/db.sqlite3 and b/core/db.sqlite3 differ diff --git a/core/interview/__pycache__/__init__.cpython-313.pyc b/core/interview/__pycache__/__init__.cpython-313.pyc index d369bd1ed..e41c973fb 100644 Binary files a/core/interview/__pycache__/__init__.cpython-313.pyc and b/core/interview/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/interview/__pycache__/admin.cpython-313.pyc b/core/interview/__pycache__/admin.cpython-313.pyc index 3f2f97316..583411e7e 100644 Binary files a/core/interview/__pycache__/admin.cpython-313.pyc and b/core/interview/__pycache__/admin.cpython-313.pyc differ diff --git a/core/interview/__pycache__/apps.cpython-313.pyc b/core/interview/__pycache__/apps.cpython-313.pyc index 41f2d14db..a9792276a 100644 Binary files a/core/interview/__pycache__/apps.cpython-313.pyc and b/core/interview/__pycache__/apps.cpython-313.pyc differ diff --git a/core/interview/__pycache__/models.cpython-313.pyc b/core/interview/__pycache__/models.cpython-313.pyc index 62dcc5fad..9bfd9e0a1 100644 Binary files a/core/interview/__pycache__/models.cpython-313.pyc and b/core/interview/__pycache__/models.cpython-313.pyc differ diff --git a/core/interview/__pycache__/permissions.cpython-313.pyc b/core/interview/__pycache__/permissions.cpython-313.pyc index 9f0e4de42..509557571 100644 Binary files a/core/interview/__pycache__/permissions.cpython-313.pyc and b/core/interview/__pycache__/permissions.cpython-313.pyc differ diff --git a/core/interview/__pycache__/serializers.cpython-313.pyc b/core/interview/__pycache__/serializers.cpython-313.pyc index 16daa9244..6a0b5662a 100644 Binary files a/core/interview/__pycache__/serializers.cpython-313.pyc and b/core/interview/__pycache__/serializers.cpython-313.pyc differ diff --git a/core/interview/__pycache__/urls.cpython-313.pyc b/core/interview/__pycache__/urls.cpython-313.pyc index e3cf45534..70ff500da 100644 Binary files a/core/interview/__pycache__/urls.cpython-313.pyc and b/core/interview/__pycache__/urls.cpython-313.pyc differ diff --git a/core/interview/__pycache__/views.cpython-313.pyc b/core/interview/__pycache__/views.cpython-313.pyc index faa8ea2ab..55ec3f14d 100644 Binary files a/core/interview/__pycache__/views.cpython-313.pyc and b/core/interview/__pycache__/views.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0001_initial.cpython-313.pyc b/core/interview/migrations/__pycache__/0001_initial.cpython-313.pyc index f314aeb0c..c1d6ef75d 100644 Binary files a/core/interview/migrations/__pycache__/0001_initial.cpython-313.pyc and b/core/interview/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0002_customquestion.cpython-313.pyc b/core/interview/migrations/__pycache__/0002_customquestion.cpython-313.pyc index 97a73dbf8..1e263b997 100644 Binary files a/core/interview/migrations/__pycache__/0002_customquestion.cpython-313.pyc and b/core/interview/migrations/__pycache__/0002_customquestion.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0003_remove_application_attempted_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0003_remove_application_attempted_and_more.cpython-313.pyc index 103dd1f70..2af555ee9 100644 Binary files a/core/interview/migrations/__pycache__/0003_remove_application_attempted_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0003_remove_application_attempted_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0004_interviewsession_current_question_index.cpython-313.pyc b/core/interview/migrations/__pycache__/0004_interviewsession_current_question_index.cpython-313.pyc index 344f352fc..5ede72635 100644 Binary files a/core/interview/migrations/__pycache__/0004_interviewsession_current_question_index.cpython-313.pyc and b/core/interview/migrations/__pycache__/0004_interviewsession_current_question_index.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0005_remove_application_standardized_resume_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0005_remove_application_standardized_resume_and_more.cpython-313.pyc index e6d2a5f37..336712e69 100644 Binary files a/core/interview/migrations/__pycache__/0005_remove_application_standardized_resume_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0005_remove_application_standardized_resume_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0006_alter_application_score_alter_interaction_score.cpython-313.pyc b/core/interview/migrations/__pycache__/0006_alter_application_score_alter_interaction_score.cpython-313.pyc index 410279a3c..527b8606f 100644 Binary files a/core/interview/migrations/__pycache__/0006_alter_application_score_alter_interaction_score.cpython-313.pyc and b/core/interview/migrations/__pycache__/0006_alter_application_score_alter_interaction_score.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0007_interaction_feedback.cpython-313.pyc b/core/interview/migrations/__pycache__/0007_interaction_feedback.cpython-313.pyc index d097aef79..8da53f229 100644 Binary files a/core/interview/migrations/__pycache__/0007_interaction_feedback.cpython-313.pyc and b/core/interview/migrations/__pycache__/0007_interaction_feedback.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0008_alter_interaction_score.cpython-313.pyc b/core/interview/migrations/__pycache__/0008_alter_interaction_score.cpython-313.pyc index 8e8591d44..b4860aa93 100644 Binary files a/core/interview/migrations/__pycache__/0008_alter_interaction_score.cpython-313.pyc and b/core/interview/migrations/__pycache__/0008_alter_interaction_score.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0009_alter_application_score_alter_interviewsession_score_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0009_alter_application_score_alter_interviewsession_score_and_more.cpython-313.pyc index 47ca4a2d3..152b9736a 100644 Binary files a/core/interview/migrations/__pycache__/0009_alter_application_score_alter_interviewsession_score_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0009_alter_application_score_alter_interviewsession_score_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0010_remove_interviewsession_final_feedback.cpython-313.pyc b/core/interview/migrations/__pycache__/0010_remove_interviewsession_final_feedback.cpython-313.pyc index b657f7a00..ba1815be1 100644 Binary files a/core/interview/migrations/__pycache__/0010_remove_interviewsession_final_feedback.cpython-313.pyc and b/core/interview/migrations/__pycache__/0010_remove_interviewsession_final_feedback.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0011_alter_customquestion_interview_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0011_alter_customquestion_interview_and_more.cpython-313.pyc index 6a41d4497..cd4d21b99 100644 Binary files a/core/interview/migrations/__pycache__/0011_alter_customquestion_interview_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0011_alter_customquestion_interview_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0012_alter_application_interview.cpython-313.pyc b/core/interview/migrations/__pycache__/0012_alter_application_interview.cpython-313.pyc index 99b63b90e..b0df1cea5 100644 Binary files a/core/interview/migrations/__pycache__/0012_alter_application_interview.cpython-313.pyc and b/core/interview/migrations/__pycache__/0012_alter_application_interview.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0013_alter_interviewsession_end_time.cpython-313.pyc b/core/interview/migrations/__pycache__/0013_alter_interviewsession_end_time.cpython-313.pyc index 57862b3e5..bd69b92fc 100644 Binary files a/core/interview/migrations/__pycache__/0013_alter_interviewsession_end_time.cpython-313.pyc and b/core/interview/migrations/__pycache__/0013_alter_interviewsession_end_time.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0014_customquestion_type_alter_interviewsession_status.cpython-313.pyc b/core/interview/migrations/__pycache__/0014_customquestion_type_alter_interviewsession_status.cpython-313.pyc index 541d98234..2d5ccd4f1 100644 Binary files a/core/interview/migrations/__pycache__/0014_customquestion_type_alter_interviewsession_status.cpython-313.pyc and b/core/interview/migrations/__pycache__/0014_customquestion_type_alter_interviewsession_status.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0015_alter_customquestion_type.cpython-313.pyc b/core/interview/migrations/__pycache__/0015_alter_customquestion_type.cpython-313.pyc index e6ed9508c..0f46390af 100644 Binary files a/core/interview/migrations/__pycache__/0015_alter_customquestion_type.cpython-313.pyc and b/core/interview/migrations/__pycache__/0015_alter_customquestion_type.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0016_application_feedback_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0016_application_feedback_and_more.cpython-313.pyc index c91089146..9ea6cd8d6 100644 Binary files a/core/interview/migrations/__pycache__/0016_application_feedback_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0016_application_feedback_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0017_alter_application_shortlisting_decision.cpython-313.pyc b/core/interview/migrations/__pycache__/0017_alter_application_shortlisting_decision.cpython-313.pyc index 5edc4e4f4..659002899 100644 Binary files a/core/interview/migrations/__pycache__/0017_alter_application_shortlisting_decision.cpython-313.pyc and b/core/interview/migrations/__pycache__/0017_alter_application_shortlisting_decision.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0018_alter_leaderboard_application.cpython-313.pyc b/core/interview/migrations/__pycache__/0018_alter_leaderboard_application.cpython-313.pyc index b6d77212b..db90cf441 100644 Binary files a/core/interview/migrations/__pycache__/0018_alter_leaderboard_application.cpython-313.pyc and b/core/interview/migrations/__pycache__/0018_alter_leaderboard_application.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0019_rename_application_leaderboard_application.cpython-313.pyc b/core/interview/migrations/__pycache__/0019_rename_application_leaderboard_application.cpython-313.pyc index 46e73eed7..f9dc09337 100644 Binary files a/core/interview/migrations/__pycache__/0019_rename_application_leaderboard_application.cpython-313.pyc and b/core/interview/migrations/__pycache__/0019_rename_application_leaderboard_application.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0020_alter_followupquestions_interaction_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0020_alter_followupquestions_interaction_and_more.cpython-313.pyc index 0035f2ac5..3c8f298ad 100644 Binary files a/core/interview/migrations/__pycache__/0020_alter_followupquestions_interaction_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0020_alter_followupquestions_interaction_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0021_dsainteractions.cpython-313.pyc b/core/interview/migrations/__pycache__/0021_dsainteractions.cpython-313.pyc index bc40419dc..d93fa4087 100644 Binary files a/core/interview/migrations/__pycache__/0021_dsainteractions.cpython-313.pyc and b/core/interview/migrations/__pycache__/0021_dsainteractions.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0022_dsainteractions_topic_alter_dsainteractions_question.cpython-313.pyc b/core/interview/migrations/__pycache__/0022_dsainteractions_topic_alter_dsainteractions_question.cpython-313.pyc index 116ae7109..3ab0ba57a 100644 Binary files a/core/interview/migrations/__pycache__/0022_dsainteractions_topic_alter_dsainteractions_question.cpython-313.pyc and b/core/interview/migrations/__pycache__/0022_dsainteractions_topic_alter_dsainteractions_question.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/0023_remove_dsainteractions_interaction_and_more.cpython-313.pyc b/core/interview/migrations/__pycache__/0023_remove_dsainteractions_interaction_and_more.cpython-313.pyc index 5d8690202..f648caa79 100644 Binary files a/core/interview/migrations/__pycache__/0023_remove_dsainteractions_interaction_and_more.cpython-313.pyc and b/core/interview/migrations/__pycache__/0023_remove_dsainteractions_interaction_and_more.cpython-313.pyc differ diff --git a/core/interview/migrations/__pycache__/__init__.cpython-313.pyc b/core/interview/migrations/__pycache__/__init__.cpython-313.pyc index a1597ae46..1a0a0871b 100644 Binary files a/core/interview/migrations/__pycache__/__init__.cpython-313.pyc and b/core/interview/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/organization/__pycache__/__init__.cpython-313.pyc b/core/organization/__pycache__/__init__.cpython-313.pyc index 741a500a0..e55fdca99 100644 Binary files a/core/organization/__pycache__/__init__.cpython-313.pyc and b/core/organization/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/organization/__pycache__/admin.cpython-313.pyc b/core/organization/__pycache__/admin.cpython-313.pyc index 2b14eb042..8c89b4a6d 100644 Binary files a/core/organization/__pycache__/admin.cpython-313.pyc and b/core/organization/__pycache__/admin.cpython-313.pyc differ diff --git a/core/organization/__pycache__/apps.cpython-313.pyc b/core/organization/__pycache__/apps.cpython-313.pyc index ddb837811..899ece90c 100644 Binary files a/core/organization/__pycache__/apps.cpython-313.pyc and b/core/organization/__pycache__/apps.cpython-313.pyc differ diff --git a/core/organization/__pycache__/models.cpython-313.pyc b/core/organization/__pycache__/models.cpython-313.pyc index 995b94d81..d9e76e671 100644 Binary files a/core/organization/__pycache__/models.cpython-313.pyc and b/core/organization/__pycache__/models.cpython-313.pyc differ diff --git a/core/organization/__pycache__/serializers.cpython-313.pyc b/core/organization/__pycache__/serializers.cpython-313.pyc index eb6acd87d..ff692b87d 100644 Binary files a/core/organization/__pycache__/serializers.cpython-313.pyc and b/core/organization/__pycache__/serializers.cpython-313.pyc differ diff --git a/core/organization/__pycache__/urls.cpython-313.pyc b/core/organization/__pycache__/urls.cpython-313.pyc index 566288835..7be9fc83d 100644 Binary files a/core/organization/__pycache__/urls.cpython-313.pyc and b/core/organization/__pycache__/urls.cpython-313.pyc differ diff --git a/core/organization/__pycache__/views.cpython-313.pyc b/core/organization/__pycache__/views.cpython-313.pyc index aeb73a559..86d9a714f 100644 Binary files a/core/organization/__pycache__/views.cpython-313.pyc and b/core/organization/__pycache__/views.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/0001_initial.cpython-313.pyc b/core/organization/migrations/__pycache__/0001_initial.cpython-313.pyc index 1e5d565a1..649d37fea 100644 Binary files a/core/organization/migrations/__pycache__/0001_initial.cpython-313.pyc and b/core/organization/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/0002_organization_photo.cpython-313.pyc b/core/organization/migrations/__pycache__/0002_organization_photo.cpython-313.pyc index a62339d51..149429a60 100644 Binary files a/core/organization/migrations/__pycache__/0002_organization_photo.cpython-313.pyc and b/core/organization/migrations/__pycache__/0002_organization_photo.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/0003_organization_email.cpython-313.pyc b/core/organization/migrations/__pycache__/0003_organization_email.cpython-313.pyc index a0407278c..24c0ee2fd 100644 Binary files a/core/organization/migrations/__pycache__/0003_organization_email.cpython-313.pyc and b/core/organization/migrations/__pycache__/0003_organization_email.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/0004_remove_application_interview_remove_application_user_and_more.cpython-313.pyc b/core/organization/migrations/__pycache__/0004_remove_application_interview_remove_application_user_and_more.cpython-313.pyc index ca85e796c..2e0fef08f 100644 Binary files a/core/organization/migrations/__pycache__/0004_remove_application_interview_remove_application_user_and_more.cpython-313.pyc and b/core/organization/migrations/__pycache__/0004_remove_application_interview_remove_application_user_and_more.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/0005_alter_organization_org.cpython-313.pyc b/core/organization/migrations/__pycache__/0005_alter_organization_org.cpython-313.pyc index d25727aef..084d10758 100644 Binary files a/core/organization/migrations/__pycache__/0005_alter_organization_org.cpython-313.pyc and b/core/organization/migrations/__pycache__/0005_alter_organization_org.cpython-313.pyc differ diff --git a/core/organization/migrations/__pycache__/__init__.cpython-313.pyc b/core/organization/migrations/__pycache__/__init__.cpython-313.pyc index 06a8fc2d3..7a42fd7cf 100644 Binary files a/core/organization/migrations/__pycache__/__init__.cpython-313.pyc and b/core/organization/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/users/__pycache__/__init__.cpython-313.pyc b/core/users/__pycache__/__init__.cpython-313.pyc index a45bf6fe9..1b3f17eb7 100644 Binary files a/core/users/__pycache__/__init__.cpython-313.pyc and b/core/users/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/users/__pycache__/admin.cpython-313.pyc b/core/users/__pycache__/admin.cpython-313.pyc index 93a1f83ea..1272e1f00 100644 Binary files a/core/users/__pycache__/admin.cpython-313.pyc and b/core/users/__pycache__/admin.cpython-313.pyc differ diff --git a/core/users/__pycache__/apps.cpython-313.pyc b/core/users/__pycache__/apps.cpython-313.pyc index fd9df1b72..b3dd8211e 100644 Binary files a/core/users/__pycache__/apps.cpython-313.pyc and b/core/users/__pycache__/apps.cpython-313.pyc differ diff --git a/core/users/__pycache__/models.cpython-313.pyc b/core/users/__pycache__/models.cpython-313.pyc index 3845c362e..761b562e1 100644 Binary files a/core/users/__pycache__/models.cpython-313.pyc and b/core/users/__pycache__/models.cpython-313.pyc differ diff --git a/core/users/__pycache__/serializers.cpython-313.pyc b/core/users/__pycache__/serializers.cpython-313.pyc index 81e47f4df..4bab513af 100644 Binary files a/core/users/__pycache__/serializers.cpython-313.pyc and b/core/users/__pycache__/serializers.cpython-313.pyc differ diff --git a/core/users/__pycache__/urls.cpython-313.pyc b/core/users/__pycache__/urls.cpython-313.pyc index 2ce51ba09..672847e49 100644 Binary files a/core/users/__pycache__/urls.cpython-313.pyc and b/core/users/__pycache__/urls.cpython-313.pyc differ diff --git a/core/users/__pycache__/views.cpython-313.pyc b/core/users/__pycache__/views.cpython-313.pyc index a33240fbd..93ed0f3d8 100644 Binary files a/core/users/__pycache__/views.cpython-313.pyc and b/core/users/__pycache__/views.cpython-313.pyc differ diff --git a/core/users/migrations/__pycache__/0001_initial.cpython-313.pyc b/core/users/migrations/__pycache__/0001_initial.cpython-313.pyc index f79d0d558..7a7203791 100644 Binary files a/core/users/migrations/__pycache__/0001_initial.cpython-313.pyc and b/core/users/migrations/__pycache__/0001_initial.cpython-313.pyc differ diff --git a/core/users/migrations/__pycache__/0002_verificationcode.cpython-313.pyc b/core/users/migrations/__pycache__/0002_verificationcode.cpython-313.pyc index a990fbb0e..1195a925c 100644 Binary files a/core/users/migrations/__pycache__/0002_verificationcode.cpython-313.pyc and b/core/users/migrations/__pycache__/0002_verificationcode.cpython-313.pyc differ diff --git a/core/users/migrations/__pycache__/__init__.cpython-313.pyc b/core/users/migrations/__pycache__/__init__.cpython-313.pyc index 369880c3a..0b995ba05 100644 Binary files a/core/users/migrations/__pycache__/__init__.cpython-313.pyc and b/core/users/migrations/__pycache__/__init__.cpython-313.pyc differ diff --git a/core/utils/__pycache__/BaseAgent.cpython-313.pyc b/core/utils/__pycache__/BaseAgent.cpython-313.pyc index 67e62b8a8..359df91ca 100644 Binary files a/core/utils/__pycache__/BaseAgent.cpython-313.pyc and b/core/utils/__pycache__/BaseAgent.cpython-313.pyc differ diff --git a/core/utils/__pycache__/Evaluator.cpython-313.pyc b/core/utils/__pycache__/Evaluator.cpython-313.pyc index 40b251cc3..3d5e8e224 100644 Binary files a/core/utils/__pycache__/Evaluator.cpython-313.pyc and b/core/utils/__pycache__/Evaluator.cpython-313.pyc differ diff --git a/core/utils/__pycache__/FinalEvaluator.cpython-313.pyc b/core/utils/__pycache__/FinalEvaluator.cpython-313.pyc index 7be270258..02b7b0e55 100644 Binary files a/core/utils/__pycache__/FinalEvaluator.cpython-313.pyc and b/core/utils/__pycache__/FinalEvaluator.cpython-313.pyc differ diff --git a/core/utils/__pycache__/FollowUpdecider.cpython-313.pyc b/core/utils/__pycache__/FollowUpdecider.cpython-313.pyc index cdaa0fa2c..2a6ea8ad4 100644 Binary files a/core/utils/__pycache__/FollowUpdecider.cpython-313.pyc and b/core/utils/__pycache__/FollowUpdecider.cpython-313.pyc differ diff --git a/core/utils/__pycache__/ResumeExtractor.cpython-313.pyc b/core/utils/__pycache__/ResumeExtractor.cpython-313.pyc index aa355892f..c3cd174fc 100644 Binary files a/core/utils/__pycache__/ResumeExtractor.cpython-313.pyc and b/core/utils/__pycache__/ResumeExtractor.cpython-313.pyc differ diff --git a/core/utils/__pycache__/config.cpython-313.pyc b/core/utils/__pycache__/config.cpython-313.pyc index 85b0ac426..7806535a7 100644 Binary files a/core/utils/__pycache__/config.cpython-313.pyc and b/core/utils/__pycache__/config.cpython-313.pyc differ diff --git a/core/utils/__pycache__/prompts.cpython-313.pyc b/core/utils/__pycache__/prompts.cpython-313.pyc index 1556f350c..cbfd57d45 100644 Binary files a/core/utils/__pycache__/prompts.cpython-313.pyc and b/core/utils/__pycache__/prompts.cpython-313.pyc differ diff --git a/core/utils/__pycache__/request_models.cpython-313.pyc b/core/utils/__pycache__/request_models.cpython-313.pyc index 3a2608061..ee5ad7842 100644 Binary files a/core/utils/__pycache__/request_models.cpython-313.pyc and b/core/utils/__pycache__/request_models.cpython-313.pyc differ diff --git a/core/utils/__pycache__/utils.cpython-313.pyc b/core/utils/__pycache__/utils.cpython-313.pyc index 3427ff324..7ca2d8b17 100644 Binary files a/core/utils/__pycache__/utils.cpython-313.pyc and b/core/utils/__pycache__/utils.cpython-313.pyc differ diff --git a/src/mocks/next-image.jsx b/src/mocks/next-image.jsx new file mode 100644 index 000000000..08fb7474c --- /dev/null +++ b/src/mocks/next-image.jsx @@ -0,0 +1,5 @@ +// src/mocks/next-image.js +export default function Image(props) { + return ; + } + \ No newline at end of file diff --git a/src/pages/DasInterViewPlatForm.jsx b/src/pages/DasInterViewPlatForm.jsx index 5a8218afb..a97e2c2ae 100644 --- a/src/pages/DasInterViewPlatForm.jsx +++ b/src/pages/DasInterViewPlatForm.jsx @@ -1,8 +1,1764 @@ +// import React, { useState, useEffect, useCallback } from 'react'; +// import { Clock, Play, Send, CheckCircle, XCircle, Code, AlertCircle } from 'lucide-react'; +// import { getAuthToken, fetchWithToken } from '../utils/handleToken'; +// import { useParams,useNavigate } from 'react-router-dom'; +// // Import token utilities (you'll need to add these to your project) + + +// const TIME_LIMIT = 30 * 60; // 30 minutes in seconds +// const LANGUAGES = ['Python', 'C++', 'Java']; +// const CODE_TEMPLATES = { +// Python: `# Write your solution here +// def solution(): +// # Your code here +// pass + +// # Test your solution +// if __name__ == "__main__": +// result = solution() +// print(result)`, +// 'C++': `#include +// #include +// using namespace std; + +// // Write your solution here +// int solution() { +// // Your code here +// return 0; +// } + +// int main() { +// int result = solution(); +// cout << result << endl; +// return 0; +// }`, +// Java: `public class Solution { +// // Write your solution here +// public static int solution() { +// // Your code here +// return 0; +// } + +// public static void main(String[] args) { +// int result = solution(); +// System.out.println(result); +// } +// }` +// }; + +// const DSAInterviewPlatform = ({ navigate }) => { + +// const params = useParams(); +// const nav=useNavigate(); +// const { sessionId } = params; +// const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); +// const [questions, setQuestions] = useState([]); +// const [dsaTopics, setDsaTopics] = useState([]); // Backend topics +// const [code, setCode] = useState(CODE_TEMPLATES.Python); +// const [selectedLanguage, setSelectedLanguage] = useState('Python'); +// const [loading, setLoading] = useState(true); +// const [timeLeft, setTimeLeft] = useState(TIME_LIMIT); +// const [isTestRunning, setIsTestRunning] = useState(false); +// const [testResult, setTestResult] = useState(null); +// const [submittedQuestions, setSubmittedQuestions] = useState([]); +// const [score, setScore] = useState(0); +// const [runResult, setRunResult] = useState(null); +// const [runsLeft, setRunsLeft] = useState({}); +// const [error, setError] = useState(null); + +// // Timer effect +// useEffect(() => { +// if (timeLeft > 0) { +// const timer = setTimeout(() => setTimeLeft(timeLeft - 1), 1000); +// return () => clearTimeout(timer); +// } else if (timeLeft === 0) { +// handleFinalSubmit(); // This now navigates directly +// } +// }, [timeLeft]); + +// const formatTime = (seconds) => { +// const mins = Math.floor(seconds / 60); +// const secs = seconds % 60; +// return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`; +// }; + +// // Fetch DSA topics from backend +// const fetchDSATopics = async () => { +// const token = getAuthToken(); +// if (!token) { +// setError('Authentication required'); +// return []; +// } + +// try { +// const data = await fetchWithToken( +// `http://localhost:8000/api/interview/get-dsa-questions/${sessionId}/`, +// token, +// navigate, +// ); +// console.log(data); +// if (data.length===0) { +// console.log('Fetched DSA topics:', data); +// nav('/'); +// return data; +// } +// return data; +// } catch (error) { +// nav('/'); +// console.error('Error fetching DSA topics:', error); +// setError('Failed to fetch DSA topics'); +// return []; +// } +// }; + +// const callGroqAPI = async (prompt) => { +// try { +// const response = await fetch('https://api.groq.com/openai/v1/chat/completions', { +// method: 'POST', +// headers: { +// 'Authorization': `Bearer ${import.meta.env.VITE_GROQ_API_KEY}`, +// 'Content-Type': 'application/json', +// }, +// body: JSON.stringify({ +// model: 'llama3-8b-8192', +// messages: [{ role: 'user', content: prompt }], +// temperature: 0.1, +// }), +// }); + +// if (!response.ok) { +// throw new Error(`HTTP error! status: ${response.status}`); +// } + +// const data = await response.json(); +// return data.choices[0]?.message?.content || ''; +// } catch (error) { +// console.error('Groq API Error:', error); +// setError('Failed to connect to API. Please check your connection.'); +// return null; +// } +// }; + +// const generateQuestion = async (topic, difficulty) => { +// const prompt = `Generate a DSA coding problem for topic: ${topic} with difficulty: ${difficulty}. +// Respond ONLY with a valid JSON object in this exact format, with no additional text, markdown, or explanations: +// { +// "title": "Problem Title", +// "description": "Problem description with clear constraints, examples, and what the function should do. Include input/output format.", +// "testCases": [ +// {"input": "input1", "output": "expected_output1", "description": "test case 1 description"}, +// {"input": "input2", "output": "expected_output2", "description": "test case 2 description"}, +// {"input": "input3", "output": "expected_output3", "description": "test case 3 description"} +// ], +// "sampleInput": "sample input for testing", +// "sampleOutput": "expected sample output", +// "difficulty": "${difficulty}", +// "hints": ["hint1", "hint2"] +// } + +// Make sure: +// 1. The problem is clear and has examples +// 2. Test cases cover edge cases +// 3. Input/output format is specified +// 4. Problem is language-agnostic +// 5. Difficulty level matches: ${difficulty}`; + +// const response = await callGroqAPI(prompt); +// if (response) { +// try { +// // Clean response to extract JSON +// let cleanResponse = response.trim(); +// cleanResponse = cleanResponse.replace(/```json\n?/g, '').replace(/```\n?/g, ''); +// const jsonStart = cleanResponse.indexOf('{'); +// const jsonEnd = cleanResponse.lastIndexOf('}') + 1; +// if (jsonStart === -1 || jsonEnd === 0) { +// throw new Error('No valid JSON found in response'); +// } +// cleanResponse = cleanResponse.slice(jsonStart, jsonEnd); + +// const parsedQuestion = JSON.parse(cleanResponse); +// if (!parsedQuestion.title || !parsedQuestion.description || !parsedQuestion.testCases) { +// throw new Error('Invalid question format'); +// } + +// return parsedQuestion; +// } catch (e) { +// console.error('Failed to parse question JSON:', e, 'Response:', response); +// return null; +// } +// } +// return null; +// }; + +// const initializeQuestions = useCallback(async () => { +// setLoading(true); +// setError(null); + +// // Fetch DSA topics from backend +// const backendTopics = await fetchDSATopics(); +// if (!backendTopics || backendTopics.length === 0) { +// setError('No DSA topics found for this session'); +// setLoading(false); +// return; +// } + +// setDsaTopics(backendTopics); + +// // Generate questions for each topic +// const generatedQuestions = []; + +// for (let i = 0; i < Math.min(backendTopics.length, 3); i++) { +// const dsaTopic = backendTopics[i]; +// const question = await generateQuestion(dsaTopic.topic, dsaTopic.difficulty); +// if (question) { +// generatedQuestions.push({ +// ...question, +// topic: dsaTopic.topic, +// difficulty: dsaTopic.difficulty, +// dsaTopicId: dsaTopic.id, +// id: i +// }); +// } else { +// generatedQuestions.push({ +// id: i, +// topic: dsaTopic.topic, +// difficulty: dsaTopic.difficulty, +// dsaTopicId: dsaTopic.id, +// title: `${dsaTopic.topic.charAt(0).toUpperCase() + dsaTopic.topic.slice(1)} Problem`, +// description: `Solve a ${dsaTopic.topic} related problem with ${dsaTopic.difficulty} difficulty. Implement the solution function.`, +// testCases: [ +// { input: "test1", output: "result1", description: "Basic test case" }, +// { input: "test2", output: "result2", description: "Edge case" }, +// { input: "test3", output: "result3", description: "Complex case" } +// ], +// sampleInput: "sample", +// sampleOutput: "expected", +// hints: ["Consider the problem constraints", "Think about edge cases"] +// }); +// } +// } + +// if (generatedQuestions.length === 0) { +// setError('Failed to generate questions. Please refresh the page.'); +// } else { +// setQuestions(generatedQuestions); +// setCode(CODE_TEMPLATES.Python); +// const initialRuns = {}; +// generatedQuestions.forEach((_, index) => { +// initialRuns[index] = 3; +// }); +// setRunsLeft(initialRuns); +// } + +// setLoading(false); +// }, [sessionId, navigate]); + +// useEffect(() => { +// if (sessionId) { +// initializeQuestions(); +// } else { +// setError('Session ID is required'); +// } +// }, [initializeQuestions, sessionId]); + +// const runSingleTest = async () => { +// if (!questions[currentQuestionIndex]) return; + +// const remainingRuns = runsLeft[currentQuestionIndex] || 0; +// if (remainingRuns <= 0) { +// setRunResult({ +// isOutput: false, +// message: 'No runs left for this question' +// }); +// return; +// } + +// setIsTestRunning(true); +// setRunResult(null); +// const question = questions[currentQuestionIndex]; + +// const prompt = `Execute this ${selectedLanguage} code with the given input and return ONLY the output. + +// CRITICAL INSTRUCTIONS: +// - Run the code with the provided input +// - Return ONLY the actual output that the code produces +// - Do NOT include any explanations, descriptions, or additional text +// - Do NOT say "Output:" or "Result:" - just return the raw output +// - If there's an error, return only the error message + +// Code: +// ${code} + +// Input: ${question.sampleInput} + +// Execute and return only the output:`; + +// const result = await callGroqAPI(prompt); + +// setRunsLeft(prev => ({ +// ...prev, +// [currentQuestionIndex]: remainingRuns - 1 +// })); + +// if (result) { +// setRunResult({ +// isOutput: true, +// message: result.trim(), +// expected: question.sampleOutput +// }); +// } else { +// setRunResult({ +// isOutput: false, +// message: 'Failed to execute code' +// }); +// } +// setIsTestRunning(false); +// }; + +// const submitQuestion = async () => { +// if (!questions[currentQuestionIndex]) return; + +// setIsTestRunning(true); +// setTestResult(null); +// const question = questions[currentQuestionIndex]; + +// let passedTests = 0; +// const testResults = []; + +// for (let i = 0; i < question.testCases.length; i++) { +// const testCase = question.testCases[i]; + +// const prompt = `Execute this ${selectedLanguage} code with the given test case. + +// CRITICAL: Respond ONLY with: +// - "PASS" (if code executes correctly and output matches expected) +// - "FAIL: [brief reason]" (if code fails or output is wrong) + +// Do NOT include code descriptions, explanations, or additional commentary. + +// Code: +// ${code} + +// Test Input: ${testCase.input} +// Expected Output: ${testCase.output} + +// Execute the code and compare actual output with expected output.`; + +// const result = await callGroqAPI(prompt); +// if (result) { +// const passed = result.trim().toUpperCase().startsWith('PASS'); +// if (passed) passedTests++; +// testResults.push({ +// passed, +// message: result.trim(), +// testCase: testCase.description +// }); +// } else { +// testResults.push({ +// passed: false, +// message: 'Test execution failed', +// testCase: testCase.description +// }); +// } +// } + +// const allPassed = passedTests === question.testCases.length; +// const questionScore = allPassed ? 10 : Math.floor((passedTests / question.testCases.length) * 10); + +// // Submit to backend +// await submitToBackend(question, questionScore); + +// const newSubmission = { +// questionIndex: currentQuestionIndex, +// questionId: question.id, +// dsaTopicId: question.dsaTopicId, +// code, +// testResults, +// passedTests, +// totalTests: question.testCases.length, +// score: questionScore, +// allPassed, +// title: question.title, +// topic: question.topic +// }; + +// const updatedSubmissions = submittedQuestions.filter(sub => sub.questionIndex !== currentQuestionIndex); +// updatedSubmissions.push(newSubmission); +// setSubmittedQuestions(updatedSubmissions); + +// const totalScore = updatedSubmissions.reduce((acc, sub) => acc + sub.score, 0); +// setScore(totalScore); + +// setTestResult(newSubmission); +// setIsTestRunning(false); +// }; + +// const submitToBackend = async (question, questionScore) => { +// const token = getAuthToken(); +// if (!token) { +// console.error('No auth token found'); +// return; +// } + +// try { +// const submissionData = { +// question: JSON.stringify({ +// title: question.title, +// description: question.description, +// topic: question.topic, +// difficulty: question.difficulty +// }), +// code: code, +// score: questionScore +// }; + +// const response = await fetchWithToken( +// `http://localhost:8000/api/interview/add-dsa-scores/${sessionId}/${question.dsaTopicId}/`, +// token, +// navigate, +// 'POST', +// submissionData +// ); + +// if (response) { +// console.log('Successfully submitted to backend:', response); +// } else { +// console.error('Failed to submit to backend'); +// } +// } catch (error) { +// console.error('Error submitting to backend:', error); +// } +// }; + +// const handleQuestionSelect = (index) => { +// if (index === currentQuestionIndex) return; + +// setCurrentQuestionIndex(index); +// const submitted = submittedQuestions.find(sub => sub.questionIndex === index); + +// if (submitted) { +// setCode(submitted.code); +// setTestResult(submitted); +// } else { +// setCode(CODE_TEMPLATES[selectedLanguage]); +// setTestResult(null); +// } +// setRunResult(null); +// }; + +// const handleLanguageChange = (e) => { +// const newLanguage = e.target.value; +// setSelectedLanguage(newLanguage); + +// const isSubmitted = submittedQuestions.some(sub => sub.questionIndex === currentQuestionIndex); +// if (!isSubmitted) { +// setCode(CODE_TEMPLATES[newLanguage]); +// } + +// setTestResult(null); +// setRunResult(null); +// }; + +// const handleFinalSubmit = () => { + + +// const finalResults = { +// sessionId, +// totalScore: score, +// maxScore: questions.length * 10, +// questionsAttempted: submittedQuestions.length, +// questionsTotal: questions.length, +// timeUsed: TIME_LIMIT - timeLeft, +// timeLimit: TIME_LIMIT, +// submissions: submittedQuestions.map(sub => ({ +// dsaTopicId: sub.dsaTopicId, +// questionId: sub.questionId, +// topic: sub.topic, +// title: sub.title, +// code: sub.code, +// score: sub.score, +// passed: sub.allPassed, +// testsPassed: sub.passedTests, +// totalTests: sub.totalTests +// })), +// timestamp: new Date().toISOString() +// }; + +// console.log('Final Interview Results:', finalResults); +// nav('/'); +// }; + +// if (loading) { +// return ( +//
+//
+//
+//

Loading interview session...

+//

Fetching DSA topics and generating questions

+//
+//
+// ); +// } + +// if (error) { +// return ( +//
+//
+// +//

Error

+//

{error}

+// +//
+//
+// ); +// } + +// if (!questions.length) { +// return ( +//
+//
+//

No questions available for this session.

+//
+//
+// ); +// } + +// const currentQuestion = questions[currentQuestionIndex]; +// const isSubmitted = submittedQuestions.some(sub => sub.questionIndex === currentQuestionIndex); + +// return ( +//
+// {/* Header */} +//
+//
+//
+//
+//

DSA Interview Platform

+//

Session ID: {sessionId}

+//
+//
+//
+// +// +// {formatTime(timeLeft)} +// +//
+//
+// Score: {score}/{questions.length * 10} +//
+//
+//
+//
+//
+ +//
+// {/* Question Navigation */} +//
+// {questions.map((q, index) => { +// const submission = submittedQuestions.find(sub => sub.questionIndex === index); +// return ( +// +// ); +// })} +//
+ +//
+// {/* Question Panel */} +//
+//
+//
+//
+//

{currentQuestion.title}

+//
+// +// {currentQuestion.difficulty} +// +// +// {currentQuestion.topic} +//
+//
+// {isSubmitted && ( +//
+// {testResult.allPassed ? : } +// +// {testResult.allPassed ? 'Passed' : 'Failed'} +// +//
+// )} +//
+//
+ +//
+//
+//

Problem Description

+//
+// {currentQuestion.description} +//
+//
+ +//
+//

Sample Test Case

+//
+//
Input: {currentQuestion.sampleInput}
+//
Output: {currentQuestion.sampleOutput}
+//
+//
+ +// {currentQuestion.hints && ( +//
+//

Hints

+//
    +// {currentQuestion.hints.map((hint, index) => ( +//
  • {hint}
  • +// ))} +//
+//
+// )} + +// {runResult && ( +//
+//

+// Your Output: ({runsLeft[currentQuestionIndex] || 0} runs left) +//

+// {runResult.isOutput ? ( +//
+//
+//
Actual:
+//
{runResult.message}
+//
+//
+//
Expected:
+//
{runResult.expected}
+//
+//
+// {String(runResult.message).trim() === String(runResult.expected).trim() +// ? '✓ Output matches expected' +// : '⚠ Output differs from expected'} +//
+//
+// ) : ( +//
{runResult.message}
+// )} +//
+// )} + +// {testResult && ( +//
+//
+//
+// {testResult.allPassed ? : } +// +// {testResult.allPassed ? 'All Tests Passed!' : 'Some Tests Failed'} +// +//
+// +// {testResult.passedTests}/{testResult.totalTests} tests passed +// +//
+//
+// Score: {testResult.score}/10 points +//
+//
+// )} +//
+//
+ +// {/* Code Editor Panel */} +//
+//
+//
+//

+// +// Code Editor +//

+// +//
+//
+ +//
+//