Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat : 퀴즈 진행 API 구현 (#19) #20

Merged
merged 21 commits into from
Jan 15, 2025
Merged

Conversation

chanmin-00
Copy link
Member

#️⃣연관된 이슈

Close #19

📝작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

퀴즈 시작 기능 구현

  • 입력값 : 학습 세트 이름 및 레벨
  • 반환값 : 퀴즈 리스트(퀴즈 ID, 타입, 문제, 보기, 선지)
  • 레디스 캐시에 퀴즈 목록 저장 및 퀴즈 진행 상태 초기화 후 저장
  • 사지선다 선지는 기존의 2개 선지와 동일 레벨, 학습세트의 퀴즈에서 랜덤으로 2개의 선지를 가져와 무작위 순서로 보기 리스트 반환
  • 무작위 순서의 4지선다 선지 반환
image

퀴즈 정답 제출 기능 구현

  • 입력값 : 퀴즈 ID, 정답 인덱스(ox 타입의 경우 0-1, 객관식 문제의 경우 0-3)
  • 반환값 : 정답 여부, 퀴즈 진행 중 현재까지 맞춘 정답 개수, 해설
  • 레디스로부터 퀴즈 정보 불러와서 정답 비교 및 정답 여부 반환
  • 정답 여부에 따라 맞춘 개수 레디스에 업데이트
  • 잘못된 정답 인덱스가 들어올 경우 처리해주는 커스텀 어노테이션 설정
image

퀴즈 종료 및 퀴즈 완료 처리

  • 반환값 : 퀴즈에서 맞춘 개수 반환
  • 레디스 데이터 삭제
  • 퀴즈 완료 처리
  • 사용자가 제출한 퀴즈 문제 개수 업데이트
image

💬리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

- 푼 퀴즈 및 맟춘 퀴즈 업데이트 기능 추가
- findUserById 함수 추가
- 컨트롤러 <-> 클라이언트 DTO
- 컨트롤러 <-> 서비스 DTO
- 학습 세트 레벨과 이름으로 조회
- 퀴즈 진행 중 예외 발생시 예러 코드 추가
- 정답 인덱스 입력시 범위가 벗어날 경우 파리미터 오류 예외 추가
- 퀴즈 시작 기능 추가(Redis 캐시에 퀴즈 목록 및 퀴즈 진행 정보 저장)
- 퀴즈 정답 제출 기능 추가(정답 여부,해설 반환 및 퀴즈 정답 개수 저장)
- 퀴즈 종료(캐시에서 퀴즈 진행 정보 삭제 및 사용자 퀴즈 진행 정보 업데이트)
@chanmin-00 chanmin-00 added the ✨ Feat 새로운 기능 추가 label Dec 30, 2024
Copy link
Member

@chaen-ing chaen-ing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드양이 정말 많네요...수고하셨습니다!!!🥹 퀴즈부분에서 수정할건없어보여서 승인으로 리뷰남길게요~!

@Slf4j
public class QuizRedisService {

private final RedisTemplate<String, Object> redisTemplate;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redis는 처음사용해봐서 찾아봤는데 이점이 많은 것 같네요! 게시판이나 유저 리프레시 토큰에 사용해도 좋을 것 같아요 👍👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 혹시 설정관련해서 추가해야하는게 있을까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RedisConfig 클래스 만들어서 설정사항 추가했습니다

@Getter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class FailQuiz {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 클래스는 혹시 언제쓰이는지 알수있을까요??

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 클래스는 퀴즈를 풀고 나서 사용자별 오답문제 목록에 저장될 수 있도록 했습니다

@chanmin-00 chanmin-00 merged commit 61f8559 into develop Jan 15, 2025
@chanmin-00 chanmin-00 deleted the feat/learning-#15 branch January 16, 2025 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feat 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 퀴즈 기능을 구현한다
2 participants