Skip to content

[Feat] Apple 계정 연결 구현 - #91

Merged
MinHeokChoi merged 1 commit into
mainfrom
feat/#90-apple-account-linking
Jul 28, 2026
Merged

[Feat] Apple 계정 연결 구현#91
MinHeokChoi merged 1 commit into
mainfrom
feat/#90-apple-account-linking

Conversation

@MinHeokChoi

@MinHeokChoi MinHeokChoi commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

✨ PR 유형

어떤 변경 사항이 있나요??

  • 새로운 기능 추가
  • 버그 수정
  • 사용자 UI 디자인 변경 및 추가
  • 코드에 영향을 주지 않는 변경사항
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

🛠️ 작업내용

  • Profile에 선택형 계정 카드와 Sign in with Apple sheet를 추가했습니다.
  • AuthenticationServices callback을 identity token·authorization code 요청으로
    변환해 AuthRemoteDataSource에 전달합니다.
  • 성공 credential을 AccountSessionStore에 저장하고 signedIn 상태로 전환합니다.
  • 사용자 취소는 오류 alert로 처리하지 않고 기존 로컬 앱 상태로 돌아갑니다.
  • 인증 실패는 Local Session, 루틴 실행과 기록 저장에 영향을 주지 않습니다.
  • Sign in with Apple entitlement를 추가했습니다.
  • 로그인 성공 후 backup/import/sync를 자동으로 시작하지 않습니다.
  • Profile Medium/AX3 캡처를 직접 확인한 뒤 해당 visual baseline 두 항목만 갱신했습니다.
  • Google/Kakao UI, 로그아웃·탈퇴, 백업·동기화는 포함하지 않았습니다.

검증

  • P4 XCTest: 7 passed
  • Profile·P1–P3·Router 관련 XCTest: 83 passed
  • 전체 직렬 XCTest: 339 passed, 0 failed/skipped
  • iPhone 16 Simulator Debug build: passed
  • generic iPhone Debug/Release build: passed
  • bash Scripts/check-iphone-functional-gate.sh: passed
  • bash Scripts/check-swiftdata-boundary.sh: passed
  • Info.plist·entitlements plutil -lint: passed
  • git diff --check: passed
  • Domain/Data Local/SwiftData/schema 변경: 없음
  • 실제 iPhone Apple 인증 성공·취소·재실행: 미검증

📋 추후 진행 상황

  • 후속 P5에서 로그아웃과 회원 탈퇴 흐름을 구현합니다.
  • 실제 Team provisioning과 iPhone에서 Apple 인증 E2E를 별도 검증해야 합니다.

📌 리뷰 포인트

  • 취소·실패가 기존 Local Session을 막지 않는지 확인해 주세요.
  • identity token/code 외 데이터를 서버 요청에 포함하지 않는지 확인해 주세요.
  • 성공 직후 backup/import/sync가 시작되지 않는지 확인해 주세요.
  • Profile visual baseline 변경이 계정 카드 M/AX3 두 상태에만 한정됐는지 확인해 주세요.

✅ Checklist

  • 커밋 메시지 컨벤션에 맞게 작성했습니다
  • 접근성 식별자와 기존 Profile/Settings 기능을 유지했습니다

Closes #90

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@MinHeokChoi, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 48 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c96c75d-d3dc-4a8b-8d33-ac57a4a81fa8

📥 Commits

Reviewing files that changed from the base of the PR and between adfe282 and 716db60.

📒 Files selected for processing (12)
  • Moru/Moru/App/AppBootstrapper.swift
  • Moru/Moru/App/AppRouter.swift
  • Moru/Moru/Features/Profile/AppleAccountLinking.swift
  • Moru/Moru/Features/Profile/ProfileFlowBuilder.swift
  • Moru/Moru/Features/Profile/ProfileView.swift
  • Moru/Moru/Features/Profile/ProfileViewModel.swift
  • Moru/Moru/Moru.entitlements
  • Moru/Moru/MoruApp.swift
  • Moru/MoruTests/AppleAccountLinkingTests.swift
  • Moru/MoruTests/FinalScreenVisualTests.swift
  • Moru/MoruTests/HomeProfileFigmaVisualTests.swift
  • Moru/MoruTests/RouterRuntimeContractTests.swift
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#90-apple-account-linking

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.

@MinHeokChoi
MinHeokChoi force-pushed the feat/#88-auth-token-reissue branch from 6b918bc to 908eb24 Compare July 28, 2026 03:08
Constraint: 인증 성공 여부와 무관하게 기존 로컬 루틴·프로필 접근을 유지
Rejected: 필수 로그인과 성공 직후 자동 backup·sync | 선택형 계정 모델과 데이터 안전성을 지키기 위해 제외
Confidence: medium
Scope-risk: moderate
Directive: 사용자 취소는 오류로 승격하지 말고 인증 실패가 로컬 세션을 차단하지 않게 할 것
Tested: 기존 PR HEAD와 tree 동일; PR 기록상 전체 XCTest 339개 및 Foundation·SwiftData gate 성공
Not-tested: 실제 iPhone Apple 인증·취소·재실행과 Team provisioning
@MinHeokChoi
MinHeokChoi force-pushed the feat/#90-apple-account-linking branch from b27810b to 716db60 Compare July 28, 2026 03:10
@MinHeokChoi
MinHeokChoi changed the base branch from feat/#88-auth-token-reissue to main July 28, 2026 03:10
@MinHeokChoi
MinHeokChoi marked this pull request as ready for review July 28, 2026 03:10
@MinHeokChoi
MinHeokChoi merged commit 6e927f5 into main Jul 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 선택형 Apple 계정 연결

1 participant