Conversation
📝 WalkthroughWalkthrough마이페이지 관련 UI 구성(프로필 헤더·준비 화면)과 아이콘 자산을 추가하고, Info.plist 및 Xcode 빌드 설정에서 UIUserInterfaceStyle과 배포 타겟, UIDesignRequiresCompatibility 값을 업데이트했습니다. 작은 컴포넌트 시그니처도 한 곳 수정되었습니다. Changes
Sequence Diagram(s)(해당 변경들은 단일 뷰·자산·설정 수정 위주로, 복합적 컴포넌트 상호작용 흐름 시각화 조건을 충족하지 않아 다이어그램을 생략합니다.) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro 📒 Files selected for processing (1)
🔇 Additional comments (2)
✏️ Tip: You can disable this entire section by setting 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: 2
🤖 Fix all issues with AI agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`:
- Around line 25-36: The header currently hardcodes the user name and D+ value
inside the headerView (TypographyText calls); refactor headerView to read those
values from the view's data source (e.g., inject a MyPageViewModel or accept
parameters like userName: String and daysSinceStart: Int) and replace the
hardcoded strings ("안녕하세요, 김채채 님" and "관리 시작 D + 13") with computed values
(e.g., "안녕하세요, \(userName) 님" and "관리 시작 D + \(daysSinceStart)"). Update any
other hardcoded usages around the same area (noted also at the block around
lines 69–71) and refresh the SwiftUI preview to supply sample userName and
daysSinceStart so the preview renders correctly. Ensure bindings/observed object
property names (e.g., MyPageViewModel, userName, daysSinceStart) are referenced
consistently where used.
- Around line 46-55: The decorative illustration Image(.illustrationMy) should
be hidden from VoiceOver and the hard-coded Korean message in TypographyText
should be localized; update prepareView by adding .accessibilityHidden(true) (or
.accessibilityHidden(true) modifier) to Image(.illustrationMy) so it’s ignored
by assistive tech, and replace the literal "앗! 아직 준비 중이에요." with a localized
string lookup (e.g., use LocalizedStringKey or NSLocalizedString with a key like
"mypage_preparing_message") in TypographyText and add the corresponding entry to
Localizable.strings.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (5)
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/home_icon/cherrish_character.imageset/체리.svgis excluded by!**/*.svgCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my.pngis excluded by!**/*.pngCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my@2x.pngis excluded by!**/*.pngCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/illustration_my@3x.pngis excluded by!**/*.pngCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/illustration_profile.svgis excluded by!**/*.svg
📒 Files selected for processing (7)
Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxprojCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/Contents.jsonCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/Contents.jsonCherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/Contents.jsonCherrish-iOS/Cherrish-iOS/Info.plistCherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swiftCherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift
🧰 Additional context used
🧬 Code graph analysis (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift (1)
Cherrish-iOS/Cherrish-iOS/Presentation/Global/Extension/View+Color.swift (4)
gray1000(49-51)gray800(41-43)gray500(29-31)gray100(13-15)
🔇 Additional comments (8)
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_profile.imageset/Contents.json (1)
4-4: 파일명 변경 적절합니다.한글 파일명(
체리.svg)에서 영문 파일명(illustration_profile.svg)으로 변경한 것은 잠재적인 인코딩 문제를 방지하고 에셋 네이밍 일관성을 높이는 좋은 변경입니다.Cherrish-iOS/Cherrish-iOS/Presentation/Global/Components/Treatment/TreatmentRowView.swift (1)
103-116: LGTM!이니셜라이저의 마지막 파라미터에서 불필요한 후행 콤마를 제거한 스타일 수정입니다. 코드 동작에 영향 없습니다.
Cherrish-iOS/Cherrish-iOS.xcodeproj/project.pbxproj (1)
288-288: 다크 모드 비활성화 설정 확인Debug와 Release 두 설정 모두에
UIUserInterfaceStyle = Light가 일관되게 적용되었습니다. 커밋 메시지("다크모드 끄기")와 일치하는 의도적인 변경으로 보입니다.향후 다크 모드 지원 계획이 있다면, 앱 전체 스타일 대응이 필요할 수 있으니 참고 바랍니다.
Also applies to: 324-324
Cherrish-iOS/Cherrish-iOS/Info.plist (1)
12-13: UIDesignRequiresCompatibility 설정 변경
UIDesignRequiresCompatibility를false로 변경하여 최신 iOS 디자인 기능을 활용할 수 있게 됩니다. 배포 타겟(iOS 16.6)을 고려했을 때 적절한 설정입니다.다양한 iOS 버전(16.6~18.x)에서 UI가 의도대로 렌더링되는지 실기기 테스트를 권장합니다.
Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/illustration_my.imageset/Contents.json (1)
1-23: 에셋 카탈로그 구성 완료PNG 파일을 1x, 2x, 3x 스케일로 올바르게 구성했습니다.
참고:
illustration_profile은 SVG를 사용하고 이 에셋은 PNG를 사용하고 있습니다. 디자인 소스 형식에 따른 것이라면 괜찮지만, 향후 에셋 관리 일관성을 위해 가능하다면 포맷 통일을 고려해 보세요.Cherrish-iOS/Cherrish-iOS/Assets.xcassets/mypage_icon/Contents.json (1)
1-6: 표준 asset catalog 메타데이터 추가 확인기본 info 메타데이터만 포함되어 있어 문제 없어 보입니다.
Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift (2)
12-20: 레이아웃 구성 깔끔합니다헤더/구분선/콘텐츠의 구조가 명확해서 유지보수성이 좋아 보입니다.
62-65: 구분선 컴포넌트 사용 OK단순하고 재사용 가능한 형태라 좋습니다.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| private var headerView: some View { | ||
| HStack (spacing: 14.adjustedW) { | ||
| Image(.illustrationProfile) | ||
| .resizable() | ||
| .frame(width: 48.adjustedW, height: 48.adjustedH) | ||
|
|
||
| VStack(alignment: .leading, spacing: 0){ | ||
| TypographyText("안녕하세요, 김채채 님", style: .title1_sb_18, color: .gray1000) | ||
| .frame(height: 27.adjustedH) | ||
|
|
||
| TypographyText("관리 시작 D + 13", style: .body1_m_14, color: .gray800) | ||
| .frame(height: 20.adjustedH) |
There was a problem hiding this comment.
사용자 정보 하드코딩 제거 필요
실사용 화면에서 사용자명이 고정으로 표시되고 D+ 값도 고정됩니다. 뷰 모델/입력 파라미터로 전달받도록 변경해 주세요. 프리뷰도 함께 갱신이 필요합니다.
🛠️ 개선 예시
-struct MyPageView: View {
+struct MyPageView: View {
+ let userDisplayName: String
+ let daysSinceStart: Int
var body: some View {
VStack {
Spacer()
.frame(height: 52.adjustedH)
headerView
grayEmptyBar
prepareView
.padding(.horizontal, 35)
grayEmptyBar
}
}
}
extension MyPageView {
private var headerView: some View {
HStack (spacing: 14.adjustedW) {
Image(.illustrationProfile)
.resizable()
.frame(width: 48.adjustedW, height: 48.adjustedH)
VStack(alignment: .leading, spacing: 0){
- TypographyText("안녕하세요, 김채채 님", style: .title1_sb_18, color: .gray1000)
+ TypographyText("안녕하세요, \(userDisplayName) 님", style: .title1_sb_18, color: .gray1000)
.frame(height: 27.adjustedH)
- TypographyText("관리 시작 D + 13", style: .body1_m_14, color: .gray800)
+ TypographyText("관리 시작 D + \(daysSinceStart)", style: .body1_m_14, color: .gray800)
.frame(height: 20.adjustedH)
}
Spacer()
}
.frame(maxWidth: .infinity)
.padding(.leading, 24.adjustedW)
}
}
`#Preview` {
- MyPageView()
+ MyPageView(userDisplayName: "김채채", daysSinceStart: 13)
}Also applies to: 69-71
🤖 Prompt for AI Agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`
around lines 25 - 36, The header currently hardcodes the user name and D+ value
inside the headerView (TypographyText calls); refactor headerView to read those
values from the view's data source (e.g., inject a MyPageViewModel or accept
parameters like userName: String and daysSinceStart: Int) and replace the
hardcoded strings ("안녕하세요, 김채채 님" and "관리 시작 D + 13") with computed values
(e.g., "안녕하세요, \(userName) 님" and "관리 시작 D + \(daysSinceStart)"). Update any
other hardcoded usages around the same area (noted also at the block around
lines 69–71) and refresh the SwiftUI preview to supply sample userName and
daysSinceStart so the preview renders correctly. Ensure bindings/observed object
property names (e.g., MyPageViewModel, userName, daysSinceStart) are referenced
consistently where used.
| private var prepareView: some View { | ||
| VStack(alignment: .center) { | ||
| Spacer() | ||
| .frame(height: 100.adjustedH) | ||
|
|
||
| Image(.illustrationMy) | ||
| .resizable() | ||
| .frame(width: 308.adjustedW, height: 250.adjustedH) | ||
|
|
||
| TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500) |
There was a problem hiding this comment.
장식 이미지 접근성 처리 + 문구 로컬라이징 권장
장식용 일러스트는 VoiceOver 노이즈를 줄이기 위해 숨기는 편이 좋고, 안내 문구는 로컬라이징 대상으로 분리하는 것이 안전합니다.
🔧 예시
- Image(.illustrationMy)
+ Image(.illustrationMy)
.resizable()
.frame(width: 308.adjustedW, height: 250.adjustedH)
+ .accessibilityHidden(true)
- TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500)
+ TypographyText("앗! 아직 준비 중이에요.", style: .body1_m_14, color: .gray500) // 로컬라이징 분리 권장🤖 Prompt for AI Agents
In `@Cherrish-iOS/Cherrish-iOS/Presentation/Feature/MyPage/MyPageView.swift`
around lines 46 - 55, The decorative illustration Image(.illustrationMy) should
be hidden from VoiceOver and the hard-coded Korean message in TypographyText
should be localized; update prepareView by adding .accessibilityHidden(true) (or
.accessibilityHidden(true) modifier) to Image(.illustrationMy) so it’s ignored
by assistive tech, and replace the literal "앗! 아직 준비 중이에요." with a localized
string lookup (e.g., use LocalizedStringKey or NSLocalizedString with a key like
"mypage_preparing_message") in TypographyText and add the corresponding entry to
Localizable.strings.


🔗 연결된 이슈
📄 작업 내용