Conversation
- 요일 표시 `AppText`를 `Box`로 감싸고 `contentAlignment = Alignment.Center`를 적용하여 텍스트 정렬 최적화
📝 WalkthroughWalkthrough통계 관련 UI와 갱신 흐름에 변경이 있습니다. PictureDayCell의 배경 카드 회전 각도(-16f→16f), 내부 테두리 조건 및 두께(1.dp→1.2.dp), 텍스트 스타일(B1→B3) 변경; StampCell의 일부 텍스트 색상(C500→C400) 조정; StatsCalendar의 요일 헤더가 Box로 감싸져 중앙 정렬 및 스타일(B2→C1) 변경. 문자열 리소스(date_year_month_day, date_year_month_day_no_padding) 추가 및 stats_complete_count 포맷 수정. PhotologCaptureViewModel에 StatsRefreshBus 의존성 추가 및 업로드 성공 시 전역 통계 갱신 브로드캐스트 추가. StatsDetail과 SummaryContent의 레이아웃·날짜 포맷 관련 패딩과 프리뷰 날짜 조정. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
feature/stats/detail/src/main/java/com/twix/stats/detail/component/SummaryContent.kt (1)
173-174: 프리뷰 날짜는 둘 다 고정해 두는 편이 더 안정적입니다.시작일만 고정하고 종료일을
LocalDate.now()로 두면 날짜가 바뀔 때마다 프리뷰 결과가 달라집니다.endDate도 고정값으로 맞추면 QA 캡처 비교가 더 쉬워질 것 같은데, 같이 맞춰보는 건 어떨까요?🧪 제안 수정
- startDate = LocalDate.of(2025, 11, 12), - endDate = LocalDate.now(), + startDate = LocalDate.of(2025, 11, 12), + endDate = LocalDate.of(2025, 11, 30),🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/stats/detail/src/main/java/com/twix/stats/detail/component/SummaryContent.kt` around lines 173 - 174, The preview uses a moving end date (LocalDate.now()) which makes snapshots unstable; in SummaryContent.kt change the endDate usage so it is a fixed LocalDate constant (instead of LocalDate.now()) to match the fixed startDate (refer to the startDate and endDate assignments in SummaryContent.kt) so previews remain deterministic for QA/capture comparison.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@core/design-system/src/main/res/values/strings.xml`:
- Around line 42-44: The string resource date_year_month_day uses non-indexed
placeholders which prevents reordering in translations; change its placeholders
to indexed form matching date_year_month_day_no_padding (e.g., use %1$s, %2$02d,
%3$02d style) so translators can reorder parts per locale while preserving
zero-padding for month/day.
---
Nitpick comments:
In
`@feature/stats/detail/src/main/java/com/twix/stats/detail/component/SummaryContent.kt`:
- Around line 173-174: The preview uses a moving end date (LocalDate.now())
which makes snapshots unstable; in SummaryContent.kt change the endDate usage so
it is a fixed LocalDate constant (instead of LocalDate.now()) to match the fixed
startDate (refer to the startDate and endDate assignments in SummaryContent.kt)
so previews remain deterministic for QA/capture comparison.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 4865cb7f-89c7-4fcb-9000-67d252394356
📒 Files selected for processing (9)
core/design-system/src/main/java/com/twix/designsystem/components/stats/PictureDayCell.ktcore/design-system/src/main/java/com/twix/designsystem/components/stats/StampCell.ktcore/design-system/src/main/java/com/twix/designsystem/components/stats/StatsCalendar.ktcore/design-system/src/main/res/values/strings.xmlcore/util/src/main/java/com/twix/util/.gitkeepfeature/main/src/main/java/com/twix/stats/component/EndStatsContent.ktfeature/photolog/capture/src/main/java/com/twix/photolog/capture/PhotologCaptureViewModel.ktfeature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.ktfeature/stats/detail/src/main/java/com/twix/stats/detail/component/SummaryContent.kt
💤 Files with no reviewable changes (1)
- core/util/src/main/java/com/twix/util/.gitkeep
- `verticalScroll` 위치를 내부 Column에서 최상위 컨테이너로 이동하여 화면 전체가 스크롤되도록 수정
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt (1)
158-163:⚠️ Potential issue | 🟡 MinorKtLint 오류 수정 필요: 후행 쉼표(trailing comma) 누락
파이프라인 실패 로그에서 확인된 것처럼, Line 162에서 후행 쉼표가 누락되어 KtLint 검사가 실패하고 있습니다. Kotlin 스타일 가이드에서 멀티라인 표현식의 마지막 요소에 후행 쉼표를 권장하는 이유는 향후 코드 변경 시 diff를 깔끔하게 유지하고, 요소 추가/삭제 시 실수를 방지하기 위함입니다.
🔧 수정 제안
Box( modifier = Modifier .fillMaxWidth() - .padding(top = 32.dp) + .padding(top = 32.dp), ) {🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt` around lines 158 - 163, The KtLint error is caused by a missing trailing comma in the multiline Box call; update the Box invocation (the argument that uses Modifier.fillMaxWidth().padding(top = 32.dp)) to include a trailing comma after the modifier argument so the call becomes a multiline argument list with a trailing comma before the closing parenthesis for Box(...,). This change should satisfy KtLint without altering behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In
`@feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt`:
- Around line 158-163: The KtLint error is caused by a missing trailing comma in
the multiline Box call; update the Box invocation (the argument that uses
Modifier.fillMaxWidth().padding(top = 32.dp)) to include a trailing comma after
the modifier argument so the call becomes a multiline argument list with a
trailing comma before the closing parenthesis for Box(...,). This change should
satisfy KtLint without altering behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 7ee4a22a-cd0e-4da2-b0b9-79a8a2346cca
📒 Files selected for processing (1)
feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
feature/main/src/main/java/com/twix/stats/StatsViewModel.kt (1)
53-59:⚠️ Potential issue | 🟠 Major월 전환 조회에
debounce를 두면 새 월과 이전 월 데이터가 함께 보일 수 있습니다.왜 문제냐면,
currentDate는 월 이동 시 바로 바뀌는데 실제 조회는 Line 57의debounce때문에 최소 300ms 뒤에 시작됩니다. 캐시 미스인 달로 이동하면 그동안 화면에는 새 월 헤더와 이전 월inProgressStats가 같이 남아서 월별 통계가 잠깐 잘못 보입니다.어떻게 개선할지로는, 여기서는 조회를 즉시 시작하는 편이 안전합니다. 연속 클릭 완화가 목적이라면 월 변경 이벤트를 발생시키는 쪽을 디바운스하거나, 월 변경 직후 loading/empty state를 먼저 반영해서 이전 월 데이터가 보이지 않게 처리하는 쪽을 권장합니다.
🔧 최소 수정안
private fun collectMonthChange() { viewModelScope.launch { monthChangeFlow .distinctUntilChanged() - .debounce(DEBOUNCE_INTERVAL) .collectLatest { yearMonth -> fetchInProgressStats(yearMonth) } } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@feature/main/src/main/java/com/twix/stats/StatsViewModel.kt` around lines 53 - 59, The debouncing in collectMonthChange causes UI to show the new month header with stale inProgressStats; remove the debounce from monthChangeFlow in collectMonthChange so fetchInProgressStats(yearMonth) runs immediately on emission (keep distinctUntilChanged), and if you need click-throttle behavior move debounce to the emitter side or ensure you set a loading/empty state (e.g., update the ViewModel's loading/inProgressStats state) immediately when monthChangeFlow emits before calling fetchInProgressStats; target the collectMonthChange function and the monthChangeFlow/debounce usage for this change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@feature/main/src/main/java/com/twix/stats/StatsViewModel.kt`:
- Around line 53-59: The debouncing in collectMonthChange causes UI to show the
new month header with stale inProgressStats; remove the debounce from
monthChangeFlow in collectMonthChange so fetchInProgressStats(yearMonth) runs
immediately on emission (keep distinctUntilChanged), and if you need
click-throttle behavior move debounce to the emitter side or ensure you set a
loading/empty state (e.g., update the ViewModel's loading/inProgressStats state)
immediately when monthChangeFlow emits before calling fetchInProgressStats;
target the collectMonthChange function and the monthChangeFlow/debounce usage
for this change.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 0ae14e61-fd76-4518-a1ed-ec66ef3edc51
📒 Files selected for processing (1)
feature/main/src/main/java/com/twix/stats/StatsViewModel.kt
이슈 번호
#126
작업내용
통계 화면에서 발견된 QA 항목들을 수정
통계 메인 화면
통계 상세페이지
Box로 감싸고contentAlignment = Alignment.Center적용하여 상단 border와의 간격 이슈 해결%1$s %2$d/%3$d→%1$s - %2$d/%3$d(하이픈 추가)rotate(-16f)→rotate(16f))03월 03일→3월 3일)<string name="date_year_month_day_no_padding">%1$d년 %2$d월 %3$d일</string>결과물
종료 탭 간격 조정
리뷰어에게 추가로 요구하는 사항 (선택)
미완료 항목은 노션 QA 해당 항목의 페이지에 의견 남겨놨으니 확인해줘 !