Skip to content

통계 화면 QA 적용#127

Open
chanho0908 wants to merge 14 commits intodevelopfrom
refacotr/#126-stats-qa
Open

통계 화면 QA 적용#127
chanho0908 wants to merge 14 commits intodevelopfrom
refacotr/#126-stats-qa

Conversation

@chanho0908
Copy link
Member

이슈 번호

#126

작업내용

통계 화면에서 발견된 QA 항목들을 수정

통계 메인 화면

  • 종료 탭 ~ 리스트 사이 간격 수정 (12dp → 20dp)
  • 카드 닉네임, 완료 횟수 텍스트 색상 변경 (C500 → C400)

통계 상세페이지

  • Calendar Navigator ~ 캘린더 사이 간격 수정
  • 날짜 텍스트 굵기 수정 (B1 → B3)
  • 달력 요일(월~일) 텍스트를 Box로 감싸고 contentAlignment = Alignment.Center 적용하여 상단 border와의 간격 이슈 해결
  • 요일 텍스트 스타일 수정 (B2 → C1)
  • 사진 하나만 있을 때 이미지에 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>
  • 사진 인증 시 통계 진행중 스탬프가 업데이트되지 않는 문제 수정

⚠️ 미완료 항목

  • "진행중 탭 CalendarNavigator ~ 리스트 사이 간격 넓음 "
  • 진행중, 종료 라인 두께랑 색상 다름

결과물

Before After
스크린샷 2026-03-09 오후 3 44 57 스크린샷 2026-03-09 오후 3 48 34
cb4-4420-83b6-023a4b0e84db" />

종료 탭 간격 조정

Before After
1Before 1After

리뷰어에게 추가로 요구하는 사항 (선택)

미완료 항목은 노션 QA 해당 항목의 페이지에 의견 남겨놨으니 확인해줘 !

@chanho0908 chanho0908 self-assigned this Mar 9, 2026
@chanho0908 chanho0908 linked an issue Mar 9, 2026 that may be closed by this pull request
13 tasks
@coderabbitai
Copy link

coderabbitai bot commented Mar 9, 2026

📝 Walkthrough

Walkthrough

통계 관련 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)

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 (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 통계 화면의 QA 항목 수정이라는 주요 변경 사항을 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명이 상세하게 작업 내용, 스크린샷, 미완료 항목을 포함하여 변경 사항과 직접적으로 관련되어 있습니다.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refacotr/#126-stats-qa

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 (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

📥 Commits

Reviewing files that changed from the base of the PR and between 7841567 and fc8e49d.

📒 Files selected for processing (9)
  • core/design-system/src/main/java/com/twix/designsystem/components/stats/PictureDayCell.kt
  • core/design-system/src/main/java/com/twix/designsystem/components/stats/StampCell.kt
  • core/design-system/src/main/java/com/twix/designsystem/components/stats/StatsCalendar.kt
  • core/design-system/src/main/res/values/strings.xml
  • core/util/src/main/java/com/twix/util/.gitkeep
  • feature/main/src/main/java/com/twix/stats/component/EndStatsContent.kt
  • feature/photolog/capture/src/main/java/com/twix/photolog/capture/PhotologCaptureViewModel.kt
  • feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt
  • feature/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

@chanho0908 chanho0908 added the Refactor Good for newcomers label Mar 9, 2026
@chanho0908 chanho0908 requested a review from dogmania March 9, 2026 09:14
- `verticalScroll` 위치를 내부 Column에서 최상위 컨테이너로 이동하여 화면 전체가 스크롤되도록 수정
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.

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 | 🟡 Minor

KtLint 오류 수정 필요: 후행 쉼표(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

📥 Commits

Reviewing files that changed from the base of the PR and between fc8e49d and cd6e395.

📒 Files selected for processing (1)
  • feature/stats/detail/src/main/java/com/twix/stats/detail/StatsDetailScreen.kt

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.

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

📥 Commits

Reviewing files that changed from the base of the PR and between dc95cbb and a7774b4.

📒 Files selected for processing (1)
  • feature/main/src/main/java/com/twix/stats/StatsViewModel.kt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Refactor Good for newcomers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

통계 화면 QA 반영

1 participant