-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 퀴즈 화면 및 기능 구현 #303
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] 퀴즈 화면 및 기능 구현 #303
Conversation
- QuizResult 도메인 엔티티 추가 - QuizRepository 인터페이스 반환 타입 변경 - QuizMapper 도메인 변환 로직 구현 - UpdateQuizGradeResponse DTO 수정
- QuizViewModel 퀴즈 시작 시간 측정 기능 추가 - QuizResultViewModel Output 패턴으로 데이터 전달 - 정답 여부와 속도 정보를 튜플로 반환
- QuizViewController 뷰모델 바인딩 완료 - QuizResultViewController 리워드 화면 구현 - QuizRewardView 컴포넌트 UI 및 설정 메서드 구현
- QuizCoordinator 사용하지 않는 메서드 주석 처리 - Xcode 프로젝트 파일 업데이트
- 퀴즈 대기 화면 UI 구성 - 남은 시간 표시 레이블 추가 - UIScrollView와 UIRefreshControl 추가 - 피드백 버튼 구현
- Quiz enum에 퀴즈 화면 텍스트 상수 정의 - 정답/오답 메시지, 로딩 에러 메시지 등 추가
- UIFont.Pricedown enum 추가 - String extension에 pricedownString 메서드 구현 - 퀴즈 시간 표시용 폰트 지원
- NextQuizInfoViewModel, QuizCoordinator 등 새 파일들 프로젝트 설정에 추가 - 폰트 및 이미지 리소스 등록
- 사용자별 퀴즈 완료 시간 저장을 위한 Date? 타입 추가
- updateUserSession에 quizCompletedAt 매개변수 추가 - fetchQuizCompletedAt, updateQuizCompletedAt 메서드 구현 - 사용자별로 퀴즈 완료 상태 관리 가능
- LoginViewModel: 기존 사용자의 퀴즈 완료 시간 보존 - AgreementViewModel: 신규 사용자는 nil로 초기화
- checkTodayQuizCompletion 메서드 추가 - fetchActiveUserSession으로 사용자별 퀴즈 완료 여부 확인 - 퀴즈 완료 시 NextQuizInfoViewController, 미완료 시 QuizViewController 표시
- updateQuizCompletedAt 메서드 구현 - 퀴즈 제출 시 현재 시간을 quizCompletedAt으로 저장 - compactMap 타입 추론 오류 수정
- FetchUserInformationUseCase에 quizCompletedAt 매개변수 추가 - NavigationView에 quiz 타입 추가
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements quiz functionality including quiz screens, quiz results, and next quiz information displays. The feature integrates a new quiz tab into the app's TabBar, tracks daily quiz completion status, and provides XP rewards for participation.
Key Changes:
- Added quiz view controllers for taking quizzes, displaying results, and showing next quiz timing
- Integrated quiz functionality into TabBar with completion tracking via UserSession
- Added new font (Pricedown) and UI assets for quiz-related screens
Reviewed Changes
Copilot reviewed 39 out of 64 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| Wable-iOS/Presentation/Quiz/ | New quiz feature implementation including ViewControllers, ViewModels, and Coordinator |
| Wable-iOS/Domain/Entity/UserSession.swift | Added quizCompletedAt field to track daily quiz completion |
| Wable-iOS/Presentation/TabBar/TabBarController.swift | Integrated quiz tab and completion checking logic |
| Wable-iOS/Data/RepositoryImpl/ | Added QuizRepositoryImpl for API communication |
| Wable-iOS/Resource/Info.plist | Reorganized Facebook SDK keys and added Pricedown font |
| Wable-iOS/Presentation/Helper/Extension/ | Added Pricedown font support with styling methods |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| quizNavigationController, | ||
| overviewNavigationController, | ||
| viewitNavigationController, | ||
| profileNavigationController |
Copilot
AI
Oct 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The commented-out ViewitNavigationController at line 142 has been removed from the viewControllers array without explanation. If this is intentional due to the quiz tab replacement, consider adding a comment explaining the change. If viewit is still needed, this could be a bug.
👻 PULL REQUEST
📄 작업 내용
💻 주요 코드 설명
설명할 코드 주제 또는 기능
해당 코드가 있는 파일명
👀 리뷰어에게 전달할 사항
✅ 이번 PR에서 이런 부분을 중점적으로 체크해주세요!
잠깐 확인하고 갈까요?
들여쓰기를 5번 이하로 준수했는지, 코드 가독성이 적절한지 확인해주세요.
한 줄당 120자 제한을 준수했는지 확인해주세요.
MARK 주석이 정해진 순서와 형식에 맞게 작성되었는지 확인해주세요.
반복되는 상수 값이 있는지, 있다면 Constant enum으로 분리되어 있는지 확인해주세요.
삼항 연산자가 길어질 경우 적절히 개행되어 있는지 확인해주세요.
조건문에서 중괄호가 올바르게 사용되었는지 확인해주세요.
라이브러리 import가 퍼스트파티와 서드파티로 구분되고 알파벳순으로 정렬되었는지 확인해주세요.
용량이 큰 리소스나 호출되지 않을 가능성이 있는 프로퍼티에 lazy var가 적절히 사용되었는지 확인해주세요.
메모리 누수 방지를 위한 weak 참조가 필요한 곳에 적용되었는지 확인해주세요.
도메인 로직과 UI 로직이 적절히 분리되어 있는지 확인해주세요.
🔗 연결된 이슈