Skip to content

Conversation

@hyeminililo
Copy link
Contributor

@hyeminililo hyeminililo commented Jan 22, 2026

Related issue 🛠

Work Description ✏️

  • 디자인 수정 사항 반영
  • 기획 수정 사항 반영

Screenshot 📸

image

Uncompleted Tasks 😅

  • N/A

To Reviewers 📢

디자인 및 기획 수정 사항 반영 했습니다 !
마이페이지 관련 수정 사항은 디자이너님이 기기대응 이후에 다시 말씀해주신다고 하셔서 일단 반영 안 했습니다!!

Summary by CodeRabbit

변경 사항

  • 새로운 기능

    • 챌린지 로딩 화면에 루틴 이름 표시 추가
  • 버그 수정

    • 홈 화면 게이지 인덱스 계산 오류 수정
  • UX/UI 개선

    • 챌린지 시작 버튼 레이블 업데이트
    • 미션 온보딩 리스트 항목 간 간격 조정
    • 미션 진행 화면 텍스트 및 버튼 표시 개선

✏️ Tip: You can customize this high-level summary in your review settings.

@hyeminililo hyeminililo requested a review from a team as a code owner January 22, 2026 11:43
@hyeminililo hyeminililo added FIX🐛 오류 및 버그 수정 혜민🍒 혜민 담당 labels Jan 22, 2026
@hyeminililo hyeminililo self-assigned this Jan 22, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

Walkthrough

이 PR은 QA 피드백에 따라 챌린지 플로우 전체에 루틴명(routineName)을 전파하고, UI 컴포넌트들의 텍스트를 하드코딩된 문자열에서 동적 파라미터로 변경합니다. 또한 UI 간격과 버튼 레이블을 조정하고 체리 레벨 계산 로직을 수정합니다.

Changes

코호트 / 파일(들) 변경 요약
네비게이션 인프라
app/src/main/java/com/cherrish/android/presentation/challenge/navigation/ChallengeNavigator.kt, app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeSideEffect.kt, app/src/main/java/com/cherrish/android/presentation/main/MainAppState.kt
ChallengeLoading 데이터 클래스에 routineName: String 필드 추가. 네비게이션 함수 시그니처 업데이트로 routineId와 함께 routineName 파라미터 전달 필요.
Challenge Loading 화면
app/src/main/java/com/cherrish/android/presentation/challenge/loading/ChallengeLoadingScreen.kt, app/src/main/java/com/cherrish/android/presentation/challenge/loading/ChallengeLoadingViewModel.kt
routineName: String 파라미터 추가 및 뷰모델에서 공개 속성으로 노출. 화면에서 동적으로 루틴명 표시.
Challenge Mission Progress
app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressUiState.kt, app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt, app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt
UI 상태에 remainingGuideText: String, completeButtonText: String 필드 추가. toUiState() 확장 함수로 UI 상태 생성 로직 중앙화.
Mission Progress 컴포넌트
app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionProgressCherrygrowth.kt, app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionTodoSection.kt
ChallengeMissionProgressCherrygrowthremainingRoutines: Int 파라미터를 remainingGuideText: String로 변경. ChallengeMissionTodoSectioncompleteButtonText: String 파라미터 추가.
Challenge Routine
app/src/main/java/com/cherrish/android/presentation/challenge/routine/ChallengeRoutineScreen.kt, app/src/main/java/com/cherrish/android/presentation/challenge/routine/ChallengeRoutineViewModel.kt
네비게이션 콜백 시그니처 업데이트로 (Int, String) -> Unit 형태로 변경. onNextClick에서 selectedRoutineId 대신 selectedRoutine 객체 사용하여 routineIdroutineName 함께 전달.
UI 미세 조정
app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionOnboardingBody.kt, app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt, app/src/main/java/com/cherrish/android/presentation/main/MainScreen.kt
LazyColumn 간격 8dp → 10dp 변경. 버튼 레이블 "다음" → "챌린지 시작하기" 변경. 네비게이션 콜백에서 루틴명 파라미터 전달.
Home 화면 로직 수정
app/src/main/java/com/cherrish/android/presentation/home/HomeViewModel.kt
HomeUiState.selectedIndex 초기화 로직에 범위 제한 추가: (response.cherryLevel - 1).coerceIn(0, CherrishGaugeType.entries.size - 1)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

Possibly related PRs

Suggested labels

FIX🐛, 혜민🍒

Suggested reviewers

  • sohee6989
  • nhyeonii
  • usuuhyn
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 '[FIX/#135] 1차 QA 디자인 반영'으로 간결하고 이슈 참조를 포함하며 주요 변경 사항을 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명이 관련 이슈, 작업 내용, 스크린샷, 미완료 항목, 리뷰 참고사항 등 템플릿의 모든 주요 섹션을 충실히 작성하고 있습니다.
Linked Issues check ✅ Passed 코드 변경사항들이 이슈 #135의 모든 주요 요구사항(챌린지 버튼 변경, challenge_loading 폰트/텍스트 수정, 미션 선택 간격 조정, 미션 진행상황 체리 업데이트 및 버튼 텍스트 변경)을 충실히 구현하고 있습니다.
Out of Scope Changes check ✅ Passed HomeViewModel의 cherryLevel 처리 로직 변경이 #135의 명시된 요구사항과 직접적인 연관이 있으며, 모든 변경사항이 QA 개선 목표 범위 내에 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@sohee6989 sohee6989 left a comment

Choose a reason for hiding this comment

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

스크린샷 2026-01-22 오후 8 47 29 수고했음~!!!!!!!!! ㅅㅁㅎ~~

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/src/main/java/com/cherrish/android/presentation/challenge/loading/ChallengeLoadingScreen.kt (1)

64-70: paddingValues를 먼저 적용해 인셋 겹침을 방지하세요

Scaffold의 paddingValues는 루트 컨테이너에 먼저 적용하는 것이 안전합니다. 현재 추가 패딩이 먼저 적용되어 있어 순서 변경을 권장합니다. Based on learnings, ...

🧩 제안 변경
         modifier = modifier
             .fillMaxSize()
             .background(color = CherrishTheme.colors.gray0)
-            .padding(horizontal = 10.dp)
             .padding(paddingValues)
+            .padding(horizontal = 10.dp)
             .navigationBarsPadding(),
🤖 Fix all issues with AI agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt`:
- Around line 100-103: The mapping in
ChallengeMissionProgressResponseModel.toUiState() uses CherryType.entries.first
{ it.step == cherryLevel } which will throw if no match; change to a safe lookup
(e.g., CherryType.entries.find/firstOrNull { it.step == cherryLevel } ?:
<safeFallback>) and use that result for cherryType and isMaxLevel; choose a
sensible fallback (for example CherryType.KKUKKU or CherryType.entries.last()/an
explicit UNKNOWN/default enum value) so the UI doesn't crash when the server
returns an unknown cherryLevel.
🧹 Nitpick comments (1)
app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt (1)

77-83: Scaffold paddingValues 적용 순서 정렬 권장
인셋 우선 반영을 위해 root modifier에서 paddingValues를 먼저 적용하는 패턴으로 맞춰 주세요.

♻️ 제안 변경
-        modifier = modifier
-            .fillMaxSize()
-            .background(CherrishTheme.colors.gray100)
-            .padding(paddingValues),
+        modifier = modifier
+            .padding(paddingValues)
+            .fillMaxSize()
+            .background(CherrishTheme.colors.gray100),

Based on learnings, 패딩 적용 순서를 맞춰 주세요.

Comment on lines +100 to +103
private fun ChallengeMissionProgressResponseModel.toUiState(): ChallengeMissionProgressUiState {
val cherryType = CherryType.entries.first { it.step == cherryLevel }
val isMaxLevel = cherryType == CherryType.KKUKKU
val remainingText = if (isMaxLevel) {
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

cherryLevel 매핑 실패 시 크래시 가능성

CherryType.entries.first { ... }는 매칭 실패 시 예외를 던집니다. 서버가 신규 레벨을 내려보내면 즉시 크래시하므로 안전한 fallback을 두는 편이 좋습니다.

🛠️ 제안 변경
-    val cherryType = CherryType.entries.first { it.step == cherryLevel }
+    val cherryType = CherryType.entries
+        .firstOrNull { it.step == cherryLevel }
+        ?: CherryType.entries.first()
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
private fun ChallengeMissionProgressResponseModel.toUiState(): ChallengeMissionProgressUiState {
val cherryType = CherryType.entries.first { it.step == cherryLevel }
val isMaxLevel = cherryType == CherryType.KKUKKU
val remainingText = if (isMaxLevel) {
private fun ChallengeMissionProgressResponseModel.toUiState(): ChallengeMissionProgressUiState {
val cherryType = CherryType.entries
.firstOrNull { it.step == cherryLevel }
?: CherryType.entries.first()
val isMaxLevel = cherryType == CherryType.KKUKKU
val remainingText = if (isMaxLevel) {
🤖 Prompt for AI Agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt`
around lines 100 - 103, The mapping in
ChallengeMissionProgressResponseModel.toUiState() uses CherryType.entries.first
{ it.step == cherryLevel } which will throw if no match; change to a safe lookup
(e.g., CherryType.entries.find/firstOrNull { it.step == cherryLevel } ?:
<safeFallback>) and use that result for cherryType and isMaxLevel; choose a
sensible fallback (for example CherryType.KKUKKU or CherryType.entries.last()/an
explicit UNKNOWN/default enum value) so the UI doesn't crash when the server
returns an unknown cherryLevel.

Copy link
Contributor

@usuuhyn usuuhyn left a comment

Choose a reason for hiding this comment

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

수고햇옹 혜미니 ~!!!!
0405e1edd3f4f7b68a5db334322fcc31

@nhyeonii nhyeonii merged commit 198b143 into develop Jan 22, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FIX🐛 오류 및 버그 수정 혜민🍒 혜민 담당

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIX] 1차 QA 수정사항 반영

5 participants