From f89a7646d8f067a35caf7cf0bf11a1846663dc72 Mon Sep 17 00:00:00 2001 From: akhdanre Date: Sun, 18 May 2025 22:10:58 +0700 Subject: [PATCH] fix: answer on the session fix --- app/services/session_service.py | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/app/services/session_service.py b/app/services/session_service.py index 8effcdd..581ee57 100644 --- a/app/services/session_service.py +++ b/app/services/session_service.py @@ -202,6 +202,7 @@ class SessionService: is_correct = self._is_correct(question, answer) + print(answer) self.answer_redis_repository.save_user_answer( session_id=session_id, user_id=user_id, @@ -239,12 +240,30 @@ class SessionService: return ranked def _is_correct(self, q, ans) -> bool: - if q.type in {"multiple_choice", "true_false"}: - return str(ans).strip().lower() == str(q.target_answer).strip().lower() - if q.type == "essay": - return str(q.target_answer).lower() in str(ans).lower() + result = False - return False + if q.type == "true_false": + result = str(ans).strip().lower() == str(q.target_answer).strip().lower() + + elif q.type in ["multiple_choice", "option"]: + try: + result = int(ans) == int(q.target_answer) + except (ValueError, TypeError): + result = False + + elif q.type == "fill_the_blank": + result = str(q.target_answer).strip().lower() in str(ans).strip().lower() + + else: + result = False + + # Print informasi evaluasi + print(f"Tipe Soal: {q.type}") + print(f"Jawaban User: {ans}") + print(f"Jawaban Benar: {q.target_answer}") + print(f"Hasil: {'Benar' if result else 'Salah'}\n") + + return result def summaryAllSessionData(self, session_id: str, start_time): session = self.session_redis_repository.get_session(session_id=session_id) @@ -312,4 +331,4 @@ class SessionService: self.session_redis_repository.delete_session(session_id=session_id) self.quiz_redis_repository.delete_quiz_for_session(session_id=session_id) self.answer_redis_repository.delete_all_answers(session_id=session_id) - self.score_redis_repository.delete_scores(session_id=session_id) \ No newline at end of file + self.score_redis_repository.delete_scores(session_id=session_id)