fix: answer on the session fix

This commit is contained in:
akhdanre 2025-05-18 22:10:58 +07:00
parent a7483c3aaa
commit f89a7646d8
1 changed files with 25 additions and 6 deletions

View File

@ -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)
self.score_redis_repository.delete_scores(session_id=session_id)