Skip to content

[FIX#133] 1차 큐에이 수정사항 반영 - #139

Merged
sohee6989 merged 11 commits into
developfrom
fix/#133-qa1
Jan 22, 2026
Merged

[FIX#133] 1차 큐에이 수정사항 반영#139
sohee6989 merged 11 commits into
developfrom
fix/#133-qa1

Conversation

@sohee6989

@sohee6989 sohee6989 commented Jan 22, 2026

Copy link
Copy Markdown
Contributor

Related issue 🛠

Work Description ✏️

  • 1차 큐에이 수정사항 반영

Screenshot 📸

Uncompleted Tasks 😅

  • Task1

To Reviewers 📢

Summary by CodeRabbit

  • New Features

    • 여러 화면(절차·미션·루틴·마이페이지)에 로딩 표시가 추가되었습니다.
  • UI

    • 대시보드 게이지에서 값이 없는 항목을 숨기고 간격/정렬을 조정합니다.
    • 휴무(다운타임)가 월/일 정수로 변경되어 UI에 "X월 Y일" 형태로 표시됩니다.
    • 온보딩·홈·마이페이지 등 레이아웃, 간격, 타이포그래피, 아이콘과 색상 표현이 개선되었습니다.
    • 챌린지 섹션 텍스트 띄어쓰기 및 칩 색상이 조정되었습니다.
  • Chores

    • 홈 탭 선택 시 백스택을 초기화하도록 네비게이션 동작이 변경되었습니다.

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

@sohee6989
sohee6989 requested a review from a team as a code owner January 22, 2026 04:03
@sohee6989 sohee6989 linked an issue Jan 22, 2026 that may be closed by this pull request
@sohee6989 sohee6989 self-assigned this Jan 22, 2026
@sohee6989 sohee6989 added FIX🐛 오류 및 버그 수정 소희🍒 소희 담당 labels Jan 22, 2026
@coderabbitai

coderabbitai Bot commented Jan 22, 2026

Copy link
Copy Markdown

Walkthrough

여러 화면에서 Loading 상태를 렌더링하도록 추가하고, 사이드 이펙트 타입들을 상태 파일로 이동·재정의하며, 절차 관련 컴포넌트의 다운타임 날짜 표현을 문자열에서 월/일 정수로 변경하고, 게이지 컴포넌트에서 step == 0(LEVEL0)을 필터링·지원하도록 변경했습니다.

Changes

Cohort / File(s) 요약
부수 효과 통합
app/src/main/java/com/cherrish/android/presentation/calendar/.../CalendarUiState.kt, app/src/main/java/com/cherrish/android/presentation/challenge/mission/.../ChallengeMissionUiState.kt
기존 별도 파일에 있던 CalendarSideEffectChallengeMissionSideEffect 정의가 각각 상태 파일로 이동/재정의(이전 별도 파일 삭제 포함).
로딩 화면 추가
app/src/main/java/com/cherrish/android/presentation/calendar/.../ProcedureScreen.kt, app/src/main/java/com/cherrish/android/presentation/challenge/mission/.../ChallengeMissionSelectedScreen.kt, app/src/main/java/com/cherrish/android/presentation/challenge/routine/.../ChallengeRoutineScreen.kt, app/src/main/java/com/cherrish/android/presentation/mypage/.../MyPageScreen.kt
UiState.Loading 분기에서 LoadingScreen() 렌더링 추가(기존 no-op 대체).
게이지 컴포넌트 변경
app/src/main/java/com/cherrish/android/core/designsystem/component/gaugebar/CherrishGaugeBar.kt, app/src/main/java/com/cherrish/android/core/designsystem/component/gaugebar/CherrishGaugeColors.kt, app/src/main/java/com/cherrish/android/presentation/home/type/CherrishGaugeType.kt
step == 0 게이지(LEVEL0) 필터링해 렌더링 제외, LEVEL0 추가(이미지 nullable), LEVEL0 색상 매핑 추가, 총폭 계산을 필터된 집합 기준으로 수정.
절차 화면 날짜 리팩토링 및 하위 컴포넌트 변경
app/src/main/java/com/cherrish/android/presentation/calendar/procedure/ProcedureUiState.kt, .../ProcedureScreen.kt, .../component/DowntimeBottomSheet.kt
다운타임 날짜 표현을 문자열에서 downtimeStartMonth/Day, downtimeEndMonth/Day 정수로 변경하고 관련 시그니처·텍스트 포맷·레이아웃을 갱신.
홈 화면 UI·이미지 처리
app/src/main/java/com/cherrish/android/presentation/home/component/ChallengeSection.kt, .../UpcomingPlanSection.kt
챌린지 이미지 파라미터를 nullable로 변경 및 null 체크 추가, 텍스트 띄어쓰기/보더 색상 및 상단 패딩 조정.
네비게이션·하단바 레이아웃
app/src/main/java/com/cherrish/android/presentation/main/MainAppState.kt, app/src/main/java/com/cherrish/android/presentation/main/component/MainBottomBar.kt
HOME 탭 네비게이션 시 백스택 리셋 옵션 추가(popUpTo(0) inclusive) 및 BottomBar 정렬(SpaceBetween→SpaceAround)·패딩 조정.
온보딩 스타일/리소스 변경
app/src/main/java/com/cherrish/android/presentation/onboarding/OnboardingScreen.kt, app/src/main/res/drawable/ic_bubble_speech.xml
그라데이션 색상 소스 및 타이포그래피·폰트 크기 계산 변경, 이미지 렌더링을 painterResource로 전환하고 ic_bubble_speech.xml 삭제.
경량 UI/레이아웃 조정
여러 파일(프리뷰·Spacer·패딩 등 소규모 변경)
다양한 컴포저블의 패딩/정렬/타이포그래피/이미지 렌더링 소규모 조정.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Possibly related PRs

Suggested reviewers

  • nhyeonii
  • usuuhyn
🚥 Pre-merge checks | ✅ 2 | ❌ 3
❌ Failed checks (1 warning, 2 inconclusive)
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.
Description check ❓ Inconclusive PR 설명이 템플릿 구조를 따르고 있으나, '작업 내용'에 '1차 큐에이 수정사항 반영'이라는 매우 일반적인 설명만 있고 구체적 변경 사항의 상세 설명이 부족합니다. 스크린샷 추가 및 작업 내용을 더 구체적으로 상세히 작성하여 변경사항이 명확하게 드러나도록 개선하시기 바랍니다.
Linked Issues check ❓ Inconclusive PR의 코드 변경 사항들(GaugeBar 필터링, SideEffect 재구성, LoadingScreen 추가, 날짜 형식 변경 등)이 QA 수정사항 요구사항과 매칭되나, 링크된 이슈 #133이 구체적 체크리스트 없이 매우 일반적으로만 기술되어 검증이 불충분합니다. 이슈 #133에 구체적 QA 수정 요구사항 및 체크리스트를 추가하여 PR 변경사항과의 정렬을 명확히 하시기 바랍니다.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 QA 수정사항 반영이라는 실제 변경 사항과 관련이 있지만, 변경 내용의 구체적 범위가 광범위하여 제목만으로는 주요 변경 사항을 명확히 파악하기 어렵습니다.
Out of Scope Changes check ✅ Passed PR의 모든 변경사항(UI 컴포넌트, 상태 관리, 리소스 제거)이 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@app/src/main/java/com/cherrish/android/presentation/main/MainAppState.kt`:
- Around line 111-116: The navOptions builder for refreshNavOptions is wrong:
change the property access launchSingleTop to an assignment (launchSingleTop =
true) and, instead of duplicating behavior, reuse the existing
clearStackNavOptions defined at class level; update references to use
clearStackNavOptions or initialize refreshNavOptions by delegating to
clearStackNavOptions to remove duplication while ensuring launchSingleTop is set
to true.

In
`@app/src/main/java/com/cherrish/android/presentation/onboarding/OnboardingScreen.kt`:
- Around line 223-238: The Text composable is forcing a custom fontSize by
dividing by fontScale (see the Text using
CherrishTheme.typography.title2M16.copy(fontSize = with(density) {
CherrishTheme.typography.title2M16.fontSize / fontScale })) which disables
system font scaling and breaks accessibility; remove the manual division and use
the theme typography directly (e.g., style = CherrishTheme.typography.title2M16)
or, if a fixed scale is absolutely required, wrap the composable in a
CompositionLocalProvider(LocalDensity or LocalFontScale override) with clear
justification. Also find and remove similar patterns (e.g., the fixedFontSize
variable around the other occurrence) so system fontScale is honored throughout.
🧹 Nitpick comments (3)
app/src/main/java/com/cherrish/android/presentation/home/component/UpcomingPlanSection.kt (1)

82-85: LGTM! 디자인 QA 반영 패딩 조정

하단 여백이 5.dp에서 16.dp로 증가하여 "다가오는 일정" 텍스트와 HorizontalDivider 사이의 간격이 넓어졌습니다. 디자인 의도에 맞는 변경으로 보입니다.

♻️ (선택사항) 패딩 호출 통합

두 개의 연속 .padding() 호출을 하나로 통합할 수 있습니다:

             modifier = Modifier
-                .padding(horizontal = 4.dp)
-                .padding(bottom = 16.dp)
+                .padding(start = 4.dp, end = 4.dp, bottom = 16.dp)
app/src/main/java/com/cherrish/android/core/designsystem/component/gaugebar/CherrishGaugeBar.kt (1)

37-44: LGTM - LEVEL0 필터링 로직이 적절합니다.

step == 0인 게이지를 필터링하고 coerceAtLeast(1)로 edge case를 처리하는 방식이 좋습니다.

한 가지 선택적 개선사항: reversedGauges의 remember key를 displayGauges 대신 gauges로 통일하면 의존성 체인이 더 명확해집니다. displayGauges가 이미 gauges를 key로 remember되어 있어 현재 코드도 정상 동작하지만, 동일한 key를 사용하면 가독성이 향상됩니다.

♻️ 선택적 개선안
-        val displayGauges = remember(gauges) { gauges.filter { it.step != 0 } }
-        val reversedGauges = remember(displayGauges) { displayGauges.asReversed() }
+        val displayGauges = remember(gauges) { gauges.filter { it.step != 0 } }
+        val reversedGauges = remember(gauges) { displayGauges.asReversed() }
app/src/main/java/com/cherrish/android/presentation/calendar/procedure/component/DowntimeBottomSheet.kt (1)

3-3: DowntimeGuideBubble의 modifier 파라미터가 적용되지 않습니다.
외부에서 전달한 modifier가 무시되어 확장성이 떨어집니다.

♻️ 제안 수정
-    Box() {
+    Box(modifier = modifier) {

Also applies to: 242-263

Comment on lines +111 to +116
val refreshNavOptions = navOptions {
popUpTo(0) {
inclusive = true
}
launchSingleTop
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

launchSingleTop 할당 누락 버그

Line 115에서 launchSingleTop은 property access일 뿐, 값을 true로 설정하지 않습니다. launchSingleTop = true로 수정해야 합니다.

또한, 이 refreshNavOptions는 클래스 레벨에 정의된 clearStackNavOptions (lines 41-45)와 거의 동일합니다. 중복 코드를 제거하고 기존 property를 재사용하는 것을 권장합니다.

🐛 제안된 수정

옵션 1: 버그 수정만

        val refreshNavOptions = navOptions {
            popUpTo(0) {
                inclusive = true
            }
-           launchSingleTop
+           launchSingleTop = true
        }

옵션 2: 기존 property 재사용 (권장)

-       val refreshNavOptions = navOptions {
-           popUpTo(0) {
-               inclusive = true
-           }
-           launchSingleTop
-       }
-
        when (tab) {
-           MainTab.HOME -> navController.navigateToHome(navOptions = refreshNavOptions)
+           MainTab.HOME -> navController.navigateToHome(navOptions = clearStackNavOptions)
            MainTab.CALENDAR -> navController.navigateToCalendar(navOptions = navOptions)
            MainTab.MYPAGE -> navController.navigateToMyPage(navOptions = navOptions)
            MainTab.CHALLENGE -> {}
        }
📝 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
val refreshNavOptions = navOptions {
popUpTo(0) {
inclusive = true
}
launchSingleTop
}
val refreshNavOptions = navOptions {
popUpTo(0) {
inclusive = true
}
launchSingleTop = true
}
🤖 Prompt for AI Agents
In `@app/src/main/java/com/cherrish/android/presentation/main/MainAppState.kt`
around lines 111 - 116, The navOptions builder for refreshNavOptions is wrong:
change the property access launchSingleTop to an assignment (launchSingleTop =
true) and, instead of duplicating behavior, reuse the existing
clearStackNavOptions defined at class level; update references to use
clearStackNavOptions or initialize refreshNavOptions by delegating to
clearStackNavOptions to remove duplication while ensuring launchSingleTop is set
to true.

@nhyeonii nhyeonii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM ~~ 🚀🚀🚀🚀🚀🚀 고생햇슈

@sohee6989
sohee6989 merged commit 762914c into develop Jan 22, 2026
3 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Jan 22, 2026
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 반영

2 participants