Skip to content

Conversation

@librawish808
Copy link
Collaborator

@librawish808 librawish808 commented Oct 3, 2025

🔗 관련 이슈

📙 작업 설명

  • 홈화면과 공통으로 쓰이는 NameBar를 제외한 변경된 UI 수정사항을 반영하였습니다.

📸 스크린샷 또는 시연 영상 (선택)

스크린샷 2025-10-03 오후 10 53 50 스크린샷 2025-10-03 오후 10 54 46 스크린샷 2025-10-03 오후 10 55 24

💬 추가 설명 or 리뷰 포인트 (선택)

Summary by CodeRabbit

  • 신기능
    • 주간 이동/표시 바 추가: 중앙에 “이번주” 또는 날짜 범위(WeekRangeLabel) 표시, 이전/다음 주 내비게이션, 하단 구분선 추가.
    • 주간 카드들을 개별 컴포넌트(Glucose/Health/Meal/Medicine/Mental/Sleep/Summary)로 분리해 통계 화면 구성 단순화.
  • 스타일
    • 카드 그림자 톤 다운(shadow01), 타이포·간격·정렬 조정, 칩 모서리·글자 크기 소폭 변경.
    • 혈당 카드에 세로 구분선 추가, 빈 상태 정렬 개선.
    • 달 아이콘( drawable ) 실루엣·색상 단순화 및 업데이트.

@librawish808 librawish808 self-assigned this Oct 3, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 3, 2025

Walkthrough

주간 통계 UI 구조가 재배치되고 시각 요소가 조정되었습니다. 상단에 WeekendBarWeekRangeLabel을 도입해 주간 네비게이션·레이블을 분리했고, 통계 섹션을 Weekly…Card 컴포저블들로 분리하며 그림자·타이포·정렬·간격 등이 변경되었습니다.

Changes

Cohort / File(s) Summary
Statistics Screen 리팩터링
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt
WeekendBar 상단 배치 및 StatisticsContent 시그니처 간소화. 인라인 카드 렌더링을 Weekly…Card 컴포저블로 대체하고 프리뷰 데이터 업데이트.
상단 주간 바(WeekendBar)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt
Row→Column 구조, 중앙 WeekRangeLabel 사용, 좌/우 화살표 조건부 렌더링·콜백 유지, HorizontalDivider 추가, 프리뷰 2종 추가.
주간 범위 레이블
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt
신규 WeekRangeLabel(startDate, endDate, isThisWeek, modifier) 추가. isThisWeek에 따라 "이번주" 또는 "M월 d일 - M월 d일" 렌더링. 프리뷰 2종 포함.
주간 카드(Weekly…Card)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/*
여러 카드(WeeklyGlucoseCard, WeeklyHealthCard, WeeklyMealCard, WeeklyMedicineCard, WeeklyMentalCard, WeeklySleepCard, WeeklySummaryCard) 신규/수정. 공통: 그림자 shadow03shadow01. 개별: 타이포·정렬·간격·Divider·IntrinsicSize 등 시각 조정.
주간 혈당 상태 칩
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeeklyGlucoseStatusChip.kt
카드 모서리 radius 10dp→8dp, 텍스트 스타일 R_16→R_14로 축소.
아이콘 드로어블
app/src/main/res/drawable/ic_moon.xml
moon pathData 단순화 및 색상 #FFCC3D→#FFE59E 변경(실루엣·색상 수정).
뷰모델·상태 추가
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/viewmodel/*
StatisticsUiState, StatisticsViewModel 등 상태/뷰모델 추가(StatisticsScreen에서 사용).
사소한 레이아웃/임포트 변경
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/*
Column, HorizontalDivider, Alignment 등 레이아웃/스타일 임포트 및 프리뷰 추가/수정; 여러 함수에 트레일링 콤마·포맷 변경.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Screen as StatisticsScreen
  participant VM as StatisticsViewModel
  participant Weekend as WeekendBar
  participant Content as StatisticsContent
  participant Cards as Weekly…Card들

  User->>Screen: 진입 (요약/summary 요청)
  Screen->>VM: 상태/summary 구독
  Screen->>Weekend: currentWeek, isLatest/isEarliest 전달
  Weekend-->>Screen: onPreviousWeek / onNextWeek 트리거
  Screen->>VM: 이전/다음 주 요청 처리
  Screen->>Content: summary 전달 (Column/Scroll)
  Content->>Cards: 각 Weekly…Card 렌더 호출
  note right of Cards: Cards는 그림자·타이포·정렬 변경 적용
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • ikseong00
  • alswlekk

Poem

주간 바가 올라와 앞뒤를 재고,
카드들은 그림자 옷을 가볍게 입네,
달빛은 색을 바꿔 밤을 다독이고 🌙
날짜는 손끝에서 범위를 속삭이네,
화면은 조용히 새 호흡을 시작한다 ✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Out of Scope Changes Check ⚠️ Warning 이 PR에 ic_moon.xml 드로어블의 경로 데이터 및 색상 변경이 포함되어 있는데 이 파일은 주간 통계 UI와 직접 연관되지 않아 이슈 #131의 범위를 벗어납니다. ic_moon.xml 변경은 별도의 PR로 분리하거나 해당 수정이 주간 통계 화면에 필요하다면 구체적인 사용 맥락을 설명해 주세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed 제목이 PR의 주요 변경 사항인 주간 통계 화면 UI 수정사항을 명확히 요약하고 있으며 관련 이슈 번호도 포함되어 있어 간결하고 구체적으로 보입니다.
Linked Issues Check ✅ Passed 코드 변경이 주당 통계 화면의 레이아웃, 컴포저블 추가 및 스타일 조정 등 이슈 #131에서 요구한 사전 베타 UI 수정사항을 충실히 반영하고 있습니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/statistics-ui-#131

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

@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

🧹 Nitpick comments (6)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (2)

37-41: 수면 시간/분 null 안전성 보강 제안

모델에서 minutes가 null일 수 있다면, 현재 isUnrecorded가 hours만 보고 판단해서 NPE/“null” 문자열 노출 위험이 있어요. 둘 중 하나라도 null이면 미기록으로 처리하는 편이 안전합니다.

다음처럼 보강을 제안합니다:

-    val isUnrecorded = summary.weeklySleepHours == null
-    val hoursText = if (isUnrecorded) "--" else summary.weeklySleepHours.toString()
-    val minutesText = if (isUnrecorded) "--" else summary.weeklySleepMinutes.toString()
+    val hours = summary.weeklySleepHours
+    val minutes = summary.weeklySleepMinutes
+    val isUnrecorded = (hours == null) || (minutes == null)
+    val hoursText = if (hours == null) "--" else hours.toString()
+    val minutesText = if (minutes == null) "--" else minutes.toString()

가능하다면 WeeklySummaryUiState에서 “둘 다 null/둘 다 값”을 보장하는 불변식을 유지해도 좋습니다.

Also applies to: 98-101


71-75: 아이콘 접근성(a11y) 정리

달 아이콘이 장식용이면 스크린리더에 불필요하니 contentDescription을 null로 두는 게 좋아요.

-            Icon(
+            Icon(
                 painter = painterResource(id = R.drawable.ic_moon),
-                contentDescription = "moon",
+                contentDescription = null,
                 modifier = Modifier.size(40.dp),
                 tint = Color.Unspecified
             )
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)

119-124: 카운트 영역 폭/표기 개선 제안

  • 고정 폭 22.dp는 두 자릿수 이상에서 잘림 가능. min 폭으로 두는 게 안전합니다.
  • 미기록일 때 “-번” 보다는 “-”만 표기하는 편이 자연스러워요.
-        Text(
-            text = "${countText}번",
+        Text(
+            text = if (countText == "-") "-" else "${countText}번",
             style = MediCareCallTheme.typography.R_14,
             color = textColor,
-            modifier = Modifier.width(22.dp),
+            modifier = Modifier.widthIn(min = 22.dp),
             textAlign = TextAlign.End
         )

추가로 필요한 import:

import androidx.compose.foundation.layout.widthIn
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)

109-116: 미기록 상태의 단위 텍스트 색상 보정

현재 isUnrecorded 여부와 무관하게 unit이 검정으로 표시됩니다. 값이 ‘-’일 때는 unit도 옅은 색이 자연스러워요.

             Text(
                 text = unit,
                 modifier = Modifier.padding(start = 2.dp, bottom = 2.dp),
                 style = MediCareCallTheme.typography.M_16,
-                color = if (isUnrecorded) MediCareCallTheme.colors.black else MediCareCallTheme.colors.black,
+                color = if (isUnrecorded) MediCareCallTheme.colors.gray4 else MediCareCallTheme.colors.black,
             )
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (2)

66-69: DateTimeFormatter는 remember로 캐싱 권장

불필요한 객체 생성 줄이기 위해 recomposition 간 캐싱하세요.

-                        val formatter = DateTimeFormatter.ofPattern("M월 d일", Locale.KOREAN)
+                        val formatter = remember { DateTimeFormatter.ofPattern("M월 d일", Locale.KOREAN) }

필요 시 import:

import androidx.compose.runtime.remember

44-48: 접근성/현지화 다듬기

  • contentDescription은 stringResource로 현지화 추천(예: “이전 주”, “다음 주”).
  • 가장 이른 주일 때 왼쪽 화살표는 색도 옅게 처리하면 비활성 상태가 더 명확합니다.

예시:

// import androidx.compose.ui.res.stringResource
Icon(
  modifier = Modifier.clickable(enabled = !isEarliestWeek) { onPreviousWeek() },
  painter = painterResource(id = R.drawable.ic_arrow_big_back),
  contentDescription = stringResource(R.string.cd_prev_week),
  tint = if (isEarliestWeek) MediCareCallTheme.colors.gray2 else MediCareCallTheme.colors.gray3
)

Also applies to: 81-86, 56-60

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 28817aa and 4fede86.

⛔ Files ignored due to path filters (1)
  • icon/ic_moon.svg is excluded by !**/*.svg
📒 Files selected for processing (11)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeeklyGlucoseStatusChip.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (9 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (6 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (4 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (3 hunks)
  • app/src/main/res/drawable/ic_moon.xml (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)
  • WeekendBar (25-99)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)
  • WeeklySummaryCard (25-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (1)
  • WeeklyMealCard (31-119)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1)
  • WeeklyMedicineCard (34-130)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1)
  • WeeklyHealthCard (22-62)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (1)
  • WeeklySleepCard (32-112)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)
  • WeeklyMentalCard (31-90)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (1)
  • WeeklyGlucoseCard (31-170)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci-build
🔇 Additional comments (10)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeeklyGlucoseStatusChip.kt (1)

35-35: UI 업데이트 잘 반영되었습니다! 👍

코너 반경을 10dp → 8dp로, 텍스트 스타일을 R_16 → R_14로 조정한 것은 주간 통계 화면의 전반적인 디자인 개선 방향과 일치합니다. 시각적 일관성을 높이는 변경이네요.

Also applies to: 48-48

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1)

45-47: shadow01로의 통일 좋습니다

주간 카드 전반의 그림자 톤이 일관돼 보여요. 문제 없습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1)

36-38: shadow01 적용 LGTM

다른 카드들과의 시각적 일관성 확보 측면에서 좋습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (1)

49-51: shadow01 적용 일관성 OK

카드 그림자 톤 통일 좋습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)

39-42: shadow01 적용 LGTM

시각적 일관성 확보에 적합합니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)

34-36: shadow01 적용 OK

전반 카드들과 일관되어 좋습니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (2)

40-42: shadow01 적용 LGTM

다른 주간 카드와 톤이 맞춰져 좋아요.


93-96: 식사 타입 텍스트 색상 변경 좋습니다

가독성이 좋아졌어요. 그대로 가도 됩니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (2)

35-41: 상단 바 구조 개편/Divider 추가 좋습니다

중앙 정렬된 주차/날짜 범위와 하단 Divider로 정보 구조가 더 또렷해졌어요. 네비게이션 조건 처리도 깔끔합니다.

Also applies to: 93-97


26-33: WeekendBar 호출부 업데이트 완료
StatisticsScreen.kt와 Preview 함수들에서 isEarliestWeek, onPreviousWeek, onNextWeek가 모두 정상 전달되고 있습니다.

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: 0

🧹 Nitpick comments (6)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (2)

173-173: 에러 처리 UI 구현을 고려해보세요.

현재 에러 케이스에서 빈 화면이 표시됩니다. 사용자 경험을 위해 에러 메시지나 재시도 버튼을 추가하는 것이 좋겠습니다.

다음과 같이 간단한 에러 UI를 추가할 수 있습니다:

-            uiState.error != null -> { /* ... */ }
+            uiState.error != null -> {
+                Box(
+                    Modifier.fillMaxSize(),
+                    contentAlignment = Alignment.Center
+                ) {
+                    Text(
+                        text = "데이터를 불러올 수 없습니다",
+                        style = MediCareCallTheme.typography.R_16,
+                        color = MediCareCallTheme.colors.gray5
+                    )
+                }
+            }

177-188: 불필요한 Column을 제거할 수 있습니다.

WeekendBar 아래의 Column(184-188줄)이 StatisticsContent 하나만 감싸고 있어서 불필요해 보입니다. 직접 StatisticsContent를 호출하면 더 간결합니다.

                 WeekendBar(
                     currentWeek = currentWeek,
                     isLatestWeek = isLatestWeek,
                     isEarliestWeek = isEarliestWeek,
                     onPreviousWeek = onPreviousWeek,
                     onNextWeek = onNextWeek
                 )
-                Column {
-                    StatisticsContent(
-                        summary = uiState.summary
-                    )
-                }
+                StatisticsContent(
+                    summary = uiState.summary
+                )
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (4)

45-51: 아이콘 터치 타깃 48dp 확보 및 IconButton 사용 권장

현 상태(Icon + clickable)는 터치 타깃이 24dp 수준으로 접근성이 낮습니다. IconButton에 48dp 사이즈를 주어 터치 영역을 확보하고, enabled 플래그로 비활성 시멘틱도 함께 제공하는 쪽을 추천합니다. 또한 오른쪽 아이콘이 없을 때 Spacer도 48dp로 맞춰 중앙 정렬이 흔들리지 않게 해주세요.

좌측(이전 주) 아이콘 교체 예시:

-            Icon(
-                modifier = Modifier.clickable(enabled = !isEarliestWeek) { onPreviousWeek() },
-                painter = painterResource(id = R.drawable.ic_arrow_big_back),
-                contentDescription = "previous week",
-                tint = MediCareCallTheme.colors.gray3,
-            )
+            IconButton(
+                onClick = onPreviousWeek,
+                enabled = !isEarliestWeek,
+                modifier = Modifier.size(48.dp),
+            ) {
+                Icon(
+                    painter = painterResource(id = R.drawable.ic_arrow_big_back),
+                    contentDescription = "previous week",
+                    tint = MediCareCallTheme.colors.gray3,
+                )
+            }

우측(다음 주) 아이콘/플레이스홀더 교체 예시:

-            if (!isLatestWeek) {
-                Icon(
-                    modifier = Modifier.clickable { onNextWeek() },
-                    painter = painterResource(id = R.drawable.ic_arrow_big_forward),
-                    contentDescription = "next week",
-                    tint = MediCareCallTheme.colors.gray3,
-                )
-            } else {
-                Spacer(modifier = Modifier.width(24.dp))
-            }
+            if (!isLatestWeek) {
+                IconButton(
+                    onClick = onNextWeek,
+                    modifier = Modifier.size(48.dp),
+                ) {
+                    Icon(
+                        painter = painterResource(id = R.drawable.ic_arrow_big_forward),
+                        contentDescription = "next week",
+                        tint = MediCareCallTheme.colors.gray3,
+                    )
+                }
+            } else {
+                Spacer(modifier = Modifier.width(48.dp))
+            }

추가 필요 import:

import androidx.compose.foundation.layout.size
import androidx.compose.material3.IconButton

Also applies to: 82-92


58-62: 문자열 리소스화 및 언어 일관성

"이번주", "previous week", "next week"는 string 리소스로 분리하고 stringResource로 참조해 주세요. 현재 영/한 혼재도 정리되면 좋습니다.

코드 변경 예시:

-                        text = "이번주",
+                        text = stringResource(R.string.week_this),
-                contentDescription = "previous week",
+                contentDescription = stringResource(R.string.previous_week),
-                    contentDescription = "next week",
+                    contentDescription = stringResource(R.string.next_week),

추가 필요 import:

import androidx.compose.ui.res.stringResource

strings.xml 예시:

<string name="week_this">이번주</string>
<string name="previous_week">이전 주</string>
<string name="next_week">다음 주</string>

Also applies to: 46-50, 84-88


57-71: DateTimeFormatter는 remember로 캐싱

recomposition마다 포매터가 새로 생성됩니다. remember로 한 번만 생성해 성능/GC 부담을 줄여주세요.

-            ) {
-                if (isLatestWeek) {
+            ) {
+                val dateFormatter = remember { DateTimeFormatter.ofPattern("M월 d일", Locale.KOREAN) }
+                if (isLatestWeek) {
                     Text(
                         text = "이번주",
                         style = MediCareCallTheme.typography.M_20,
                         color = MediCareCallTheme.colors.gray8,
                     )
                 } else {
                     Row(
                         horizontalArrangement = Arrangement.Center,
                         verticalAlignment = Alignment.CenterVertically
                     ) {
-                        val formatter = DateTimeFormatter.ofPattern("M월 d일", Locale.KOREAN)
                         val commonTextStyle = MediCareCallTheme.typography.M_20
                         val commonTextColor = MediCareCallTheme.colors.gray8
 
-                        Text(text = currentWeek.first.format(formatter), style = commonTextStyle, color = commonTextColor)
+                        Text(text = currentWeek.first.format(dateFormatter), style = commonTextStyle, color = commonTextColor)
                         Spacer(modifier = Modifier.width(8.dp))
                         Text(text = "-", style = commonTextStyle, color = commonTextColor)
                         Spacer(modifier = Modifier.width(8.dp))
-                        Text(text = currentWeek.second.format(formatter), style = commonTextStyle, color = commonTextColor)
+                        Text(text = currentWeek.second.format(dateFormatter), style = commonTextStyle, color = commonTextColor)
                     }
                 }
             }

추가 필요 import:

import androidx.compose.runtime.remember

Also applies to: 72-77


27-35: 이름 개선 제안: WeekendBar → WeekBar/WeekNavBar

Weekend는 ‘주말’로 오해 소지가 있어요. 주간 네비게이션 의미가 드러나도록 WeekBar/WeekNavBar 같은 네이밍을 검토해 주세요. 영향 범위가 크면 추후 리팩토링으로도 충분합니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4fede86 and 9e3a8db.

📒 Files selected for processing (2)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)
  • WeekendBar (27-101)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)
  • WeeklySummaryCard (25-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (1)
  • WeeklyMealCard (31-119)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1)
  • WeeklyMedicineCard (34-130)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1)
  • WeeklyHealthCard (22-62)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (1)
  • WeeklySleepCard (32-112)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)
  • WeeklyMentalCard (31-90)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (1)
  • WeeklyGlucoseCard (31-170)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci-build
🔇 Additional comments (4)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (2)

39-53: import 구문이 올바르게 수정되었습니다.

이전 리뷰에서 지적된 WeekendBar의 패키지 경로 누락 문제가 해결되었고, 모든 Weekly...Card 컴포저블들도 정확한 패키지 경로로 import되었습니다.


207-268: 주간 카드 컴포저블로의 리팩토링이 깔끔합니다.

StatisticsContent의 시그니처 단순화와 개별 Weekly...Card 컴포저블 사용으로 코드가 훨씬 읽기 쉬워졌습니다. 각 카드의 책임이 명확히 분리되어 유지보수성도 향상되었네요.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (2)

36-44: 레이아웃 구조 전반적으로 깔끔합니다

Column 래퍼 + 중앙 가변 영역(weight) + Divider로 시맨틱/정렬 안정적이에요. 이 방향 좋습니다.


47-49: 벡터 아이콘 확인됨 — tint 적용 문제 없음
ic_arrow_big_back.xmlic_arrow_big_forward.xml이 모두 <vector>로 정의되어 있어 tint가 정상 적용됩니다.

Copy link
Collaborator

@ProtossManse ProtossManse left a comment

Choose a reason for hiding this comment

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

LGTM

@librawish808 librawish808 changed the title [Feat] 주간 통계 화면 UI 수정 #131 [Feat] 주간 통계 화면 UI 수정사항 반영 #131 Oct 6, 2025
Copy link
Contributor

@ikseong00 ikseong00 left a comment

Choose a reason for hiding this comment

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

좋습니다!

./gradlew detekt 명령어로 수정된 파일들 린트 체크만 부탁드려요!

Comment on lines 64 to 77
Row(
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically
) {
val formatter = DateTimeFormatter.ofPattern("M월 d일", Locale.KOREAN)
val commonTextStyle = MediCareCallTheme.typography.M_20
val commonTextColor = MediCareCallTheme.colors.gray8

Text(text = currentWeek.first.format(formatter), style = commonTextStyle, color = commonTextColor)
Spacer(modifier = Modifier.width(8.dp))
Text(text = "-", style = commonTextStyle, color = commonTextColor)
Spacer(modifier = Modifier.width(8.dp))
Text(text = currentWeek.second.format(formatter), style = commonTextStyle, color = commonTextColor)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

해당 부분 컴포넌트화 하는게 어떨까요 ??
어떤 코드인지 한눈에 확실히 와닿지가 않아,
컴포넌트명, 파라미터명으로 추상화하면 좋을 것 같습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

피드백 감사합니다
린트 검사와 해당 컴포넌트 분리하였습니다

# Conflicts:
#	app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt
#	icon/ic_moon.svg
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: 0

🧹 Nitpick comments (2)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (2)

174-174: 에러 처리 로직을 추가하면 더 좋을 것 같아요

현재 에러 상태일 때 빈 블록으로 처리되고 있는데, 사용자에게 에러 메시지를 보여주거나 재시도 옵션을 제공하는 것을 고려해보세요. 급하지 않다면 나중에 추가해도 괜찮습니다.


185-189: Column 래퍼가 필요한지 확인해보세요

StatisticsContent가 이미 Column을 반환하는데, 한 번 더 Column으로 감싸고 있습니다. 레이아웃 의도가 있다면 괜찮지만, 불필요하다면 제거하는 것도 고려해보세요.

// 만약 불필요하다면:
WeekendBar(
    currentWeek = currentWeek,
    isLatestWeek = isLatestWeek,
    isEarliestWeek = isEarliestWeek,
    onPreviousWeek = onPreviousWeek,
    onNextWeek = onNextWeek
)
StatisticsContent(
    summary = uiState.summary
)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e3a8db and 4d77f89.

📒 Files selected for processing (3)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/theme/Theme.kt (1)
  • MediCareCallTheme (38-60)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt (1)
  • WeekRangeLabel (20-49)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)
  • WeekendBar (23-74)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)
  • WeeklySummaryCard (25-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (1)
  • WeeklyMealCard (31-119)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1)
  • WeeklyMedicineCard (34-130)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1)
  • WeeklyHealthCard (22-62)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (1)
  • WeeklySleepCard (32-112)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)
  • WeeklyMentalCard (31-90)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (1)
  • WeeklyGlucoseCard (31-170)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci-build
🔇 Additional comments (3)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt (1)

20-49: 깔끔한 컴포넌트 구현입니다!

날짜 범위 표시 로직이 명확하고, remember를 사용한 formatter 최적화도 적절합니다. 조건부 렌더링도 잘 구현되어 있네요.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)

32-73: WeekRangeLabel 분리로 가독성이 좋아졌네요!

이전 리뷰 피드백을 잘 반영하여 날짜 표시 부분을 별도 컴포넌트로 추출했습니다. 네비게이션 로직도 명확하고, weight(1f)를 사용한 중앙 정렬 처리도 적절합니다.

app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (1)

219-267: 카드 컴포넌트로의 리팩토링이 깔끔합니다!

주간 통계 데이터를 개별 카드 컴포넌트로 분리하여 코드 가독성과 재사용성이 높아졌네요. UI 구조가 명확해졌습니다.

- detekt 스타일 수정 (trailing comma, import 정리, 코드 포맷팅)
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: 0

🧹 Nitpick comments (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (1)

182-190: Chip 호출을 명시적 import로 정리해 주세요.

_root_ide_package_ 접두가 남아 있으면 IDE 생성 코드처럼 보이고 유지보수성이 떨어집니다. 상단에 import com.konkuk.medicarecall.ui.feature.statistics.component.WeeklyGlucoseStatusChip을 추가하고, 여기서는 WeeklyGlucoseStatusChip(...)으로 호출해 주시면 좋겠습니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4d77f89 and 95a104d.

📒 Files selected for processing (11)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt (1 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (2 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeeklyGlucoseStatusChip.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (15 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (6 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (3 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (6 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (7 hunks)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (4 hunks)
✅ Files skipped from review due to trivial changes (2)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt
🚧 Files skipped from review as they are similar to previous changes (6)
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekRangeLabel.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt
  • app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt
🧰 Additional context used
🧬 Code graph analysis (1)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/screen/StatisticsScreen.kt (8)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/component/WeekendBar.kt (1)
  • WeekendBar (23-74)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySummaryCard.kt (1)
  • WeeklySummaryCard (25-77)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMealCard.kt (1)
  • WeeklyMealCard (31-119)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMedicineCard.kt (1)
  • WeeklyMedicineCard (34-130)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyHealthCard.kt (1)
  • WeeklyHealthCard (22-62)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklySleepCard.kt (1)
  • WeeklySleepCard (32-112)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyMentalCard.kt (1)
  • WeeklyMentalCard (31-90)
app/src/main/java/com/konkuk/medicarecall/ui/feature/statistics/weeklycard/WeeklyGlucoseCard.kt (1)
  • WeeklyGlucoseCard (31-170)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: ci-build

@librawish808 librawish808 merged commit b8bcc99 into develop Oct 8, 2025
2 checks passed
@librawish808 librawish808 deleted the feat/statistics-ui-#131 branch October 8, 2025 04:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 주간통계화면 UI 수정사항 반영

5 participants