[FIX] 2차 QA 수정사항 반영 (약관/탈퇴/설정/홈) - #224
Hidden character warning
Conversation
2차 QA 2건 대응. - 약관 동의 후 '자세히 보기' 진입 후 복귀 시 동의 상태가 유지되지 않음 - 약관 동의 후 온보딩 진입 → 뒤로가기로 복귀 시 동의 상태가 유지되지 않음 두 건 모두 원인이 같다. 체크 상태가 OnboardingTermsScreen의 컴포저블 로컬 remember에 있어서, 화면을 벗어나면 컴포지션이 해제되며 초기화됐다. ViewModel의 agreedTermsIds는 동의하기를 누른 시점에만 채워져 복원에 쓸 수 없었다. 상태를 OnboardingTermsUiState로 올려 onboarding nav graph에 스코프된 OnboardingViewModel이 들고 있게 했다. 인덱스 대신 약관 id를 키로 써 목록 순서가 바뀌어도 안전하다. - checkedTermIds / expandedTermIds 를 Set<String> 으로 보관 - 전이 로직(toggleChecked/toggleAllChecked/toggleExpanded)과 파생값(canProceed/isAllChecked/agreedIds)을 상태 클래스의 순수 함수로 분리 - 화면은 상태를 주입받아 렌더링만 담당 TermRow의 체크박스/펼침 아이콘에 contentDescription 추가. 기존에 null이라 스크린리더가 체크 상태를 읽지 못했다. 검증 - TermsAgreementStateTest 12개 (상태 전이) - OnboardingTermsNavigationTest 4개 (실제 NavHost 이동/복귀) - 버그를 되살린 대조 실험에서 상태 유지 테스트 3개가 실패하는 것까지 확인 - 에뮬레이터 실기로 QA 시나리오 2건 재현 및 통과 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
- 항목 사이 간격이 없어 문장 내 줄간격과 구분되지 않던 문제. Arrangement.spacedBy(24.dp) 를 넣어 항목 단위가 드러나게 했다. Type.kt 의 FigmaLineHeightStyle 이 trim = None 이라 Text 높이가 Figma 텍스트 노드와 같은 방식(lineHeight x 줄 수)으로 계산되므로, 이 값은 Figma 오토레이아웃 gap 과 1:1로 대응한다. - 번호와 본문의 y 위치가 미세하게 어긋나던 문제. 둘을 별도 Text 로 두면 baseline 이 맞아도 숫자 글리프와 한글 글리프의 시각 중심이 달라 어긋나 보인다. 기존에는 본문에 offset(y = -3.dp) 를 걸어 보정했는데, offset 은 레이아웃이 아니라 그리기만 옮기므로 여러 줄 항목에서 블록 전체가 밀려 오히려 더 어긋났다. 번호와 본문을 하나의 Text 로 합치고 들여쓰기는 TextIndent(restLine) 으로 처리했다. 같은 줄 박스를 쓰므로 y 어긋남이 구조적으로 발생할 수 없고, 들여쓰기 폭은 TextMeasurer 로 번호의 실제 렌더 너비를 재서 쓰기 때문에 폰트 배율이 바뀌어도 둘째 줄이 본문 시작선에 맞는다. 하드코딩 상수 없음. 에뮬레이터에서 설정 > 탈퇴하기 경로로 진입해 확인. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
디자인 QA 반영. ColorOutline 상태의 기본 테두리는 2dp 이고, Outline / Error 도 같은 2dp 라 상태값 자체는 의도된 기본값으로 보인다. 공용 상태를 바꾸면 이 상태를 쓰는 모든 버튼이 함께 바뀌므로, 화면 단위로 굵기만 덮어쓸 수 있는 경로를 열었다. - FlintBasicButton 에 borderWidth: Dp? = null 추가. null 이면 상태 기본값을 그대로 쓰므로 기존 사용처는 영향이 없다. 색은 상태에서 가져오고 굵기만 교체한다. - FlintMediumButton 이 값을 그대로 전달. - SettingScreen 의 프로필 수정 버튼만 borderWidth = 1.dp. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
계정 행에 쓰이는 ic_kakao_full.png 를 새 에셋으로 교체. 기존 파일이 16x16 이라 16dp 로 그릴 때 xxhdpi(48px 필요)에서 3배 업스케일돼 뭉개졌다. 새 에셋은 64x64 라 다운스케일이 되어 모든 밀도에서 선명하다. 로그인 버튼이 쓰는 ic_kakao.png 는 별도 리소스라 그대로 둔다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
"현재 구독 중인 OTT에서 볼 수 있는 작품들이에요" -> "관심이 가는 작품들을 다시 만나보세요" SavedContentsSection 은 ProfileScreen 도 쓰지만 거기서는 별도 문구를 넘기므로 홈 화면에만 적용된다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
로그아웃 후 시작 화면에서 뒤로가기를 누르면 설정 화면으로 돌아갔다. navigateToLogin 만 popUpTo(startDestination) 을 쓰고 있었는데, 시작 목적지인 Splash 는 홈 진입 시 navigateToHome(clearStackNavOptions) 가 popUpTo(0) 으로 이미 제거한 뒤다. 따라서 로그아웃 시점의 스택 [Home, Setting] 에는 매칭 대상이 없어 아무것도 pop 되지 않았고, [Home, Setting, Login] 이 되어 뒤로가기가 설정으로 향했다. 형제 메서드(navigateToHome / navigateToOnBoarding / navigateToWithdrawComplete)와 동일하게 clearStackNavOptions 를 쓰도록 통일했다. navigateToLogin 은 스플래시, 로그아웃, 회원탈퇴 완료 세 경로에서 호출되는데 탈퇴 완료 경로도 같은 증상이 있었고 함께 해결된다. 미사용이 된 findStartDestination import 제거. 에뮬레이터에서 로그아웃 후 뒤로가기가 앱을 종료하는 것을 확인. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuxSwiSeddHi5XodSpFyFo
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (11)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough온보딩 약관 상태를 Changes온보딩 약관 상태
로그인 네비게이션
화면 표현 조정
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: ⚪ Minimal · up to The PR updates onboarding state retention, navigation behavior, and localized UI details. No actionable merge-blocking risk remains beyond normal checks and review. Sequence Diagram(s)sequenceDiagram
participant OnboardingTermsScreen
participant OnboardingViewModel
participant OnboardingTermsUiState
participant NavHost
OnboardingTermsScreen->>OnboardingViewModel: 약관 체크 및 펼침 콜백 호출
OnboardingViewModel->>OnboardingTermsUiState: 약관 상태 토글
OnboardingTermsUiState-->>OnboardingTermsScreen: 체크 및 진행 가능 상태 제공
OnboardingTermsScreen->>OnboardingViewModel: agreeToTerms() 호출
OnboardingViewModel->>NavHost: 다음 온보딩 화면으로 이동
NavHost-->>OnboardingTermsScreen: 뒤로가기 후 약관 화면 복귀
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 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 |
📮 관련 이슈
📌 작업 내용
🐛 약관 동의 상태가 화면 이동 후 초기화되는 문제 (QA 2건)
자세히 보기진입 후 복귀 시 동의 상태 유실두 건 모두 원인이 같습니다. 체크 상태가
OnboardingTermsScreen의 컴포저블 로컬remember에 있어서, 화면을 벗어나면 컴포지션이 해제되며 초기화됐습니다.agreedTermsIds는 동의하기를 누른 시점에만 채워져 복원에 쓸 수 없었고요.상태를
OnboardingTermsUiState로 올려 onboarding nav graph에 스코프된OnboardingViewModel이 들고 있게 했습니다. 인덱스 대신 약관 id를 키로 써서 목록 순서가 바뀌어도 안전합니다.🐛 로그인 화면에서 뒤로가기 시 이전 화면으로 되돌아가는 문제
navigateToLogin만popUpTo(startDestination)을 쓰고 있었는데, 시작 목적지인 Splash는 홈 진입 시navigateToHome(clearStackNavOptions)가 이미 제거한 뒤라 아무것도 pop되지 않았습니다.형제 메서드들과 동일하게
clearStackNavOptions를 쓰도록 통일했고,navigateToLogin을 호출하는 세 경로가 함께 정리됩니다.🎨 탈퇴 화면 유의사항 목록 간격 / 번호 정렬
Arrangement.spacedBy(24.dp)offset(y = -3.dp)보정을 제거하고, 번호와 본문을 하나의Text로 합쳐TextIndent(restLine)으로 hanging indent 처리offset은 레이아웃이 아니라 그리기만 옮기므로 여러 줄 항목에서 블록 전체가 밀려 오히려 더 어긋났습니다. 같은 줄 박스를 쓰게 만들어 어긋남이 구조적으로 발생할 수 없게 했고, 들여쓰기 폭은TextMeasurer로 번호의 실제 렌더 너비를 재서 폰트 배율이 바뀌어도 맞습니다.🎨 설정 화면
ColorOutline은 공용 상태라 값을 직접 바꾸지 않고,FlintBasicButton에borderWidth: Dp? = null을 추가해 화면 단위로만 덮어쓰게 했습니다. 기본값이null이라 기존 사용처는 영향이 없습니다.🎨 홈 화면
최근 저장한 콘텐츠부제 문구 변경 → "관심이 가는 작품들을 다시 만나보세요"✅ 테스트
TermsAgreementStateTest12개 — 약관 상태 전이OnboardingTermsNavigationTest4개 — 실제NavHost로 이동/복귀 후 상태 유지 검증😅 미구현 / 확인 필요
목록 28dp, 목록구분선 28dp, 좌우 패딩 28dp)은 대조하지 못했습니다. 항목 간격 24dp도 지시받은 값을 넣은 것이라 스펙 확인 전입니다.ColorOutline다른 사용처 — 설정 화면에만 1dp 예외를 뒀습니다. 디자인상 이 상태 전체가 1dp라면 다른 화면들은 여전히 2dp입니다.ic_kakao.png(78×72) — 교체하지 않았습니다.SavedContentsSection.kt의 Preview 샘플 텍스트는 옛 문구 그대로입니다.🫛 To. 리뷰어
"현재 구독 중인 OTT에서 볼 수 있는 작품들이에요"였고, 홈 화면의 유일한 OTT 문구라 이것으로 판단하고 진행했습니다. 의도한 문장이 맞는지 확인 부탁드립니다.TermRow체크박스/펼침 아이콘에contentDescription을 추가했습니다(기존null). 계측 테스트에서 아이콘을 찾기 위해 필요했고, 스크린리더가 체크 상태를 읽지 못하던 접근성 결함이기도 합니다. 요청 범위 밖 변경이라 원치 않으시면 되돌리겠습니다.Summary by CodeRabbit