Skip to content

feat: AtchaV2 게스트 전용 전환 — 소셜 로그인 제거 + 게스트 토큰 자동 발급 + base URL /api 수정 - #363

Merged
YuGeonHui merged 2 commits into
feat/v2-settings-accountfrom
feat/v2-guest-only
Sep 24, 2026
Merged

YuGeonHui merged 2 commits into
feat/v2-settings-accountfrom
feat/v2-guest-only

Conversation

@YuGeonHui

@YuGeonHui YuGeonHui commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

⚠️ 스택 PR — #362(feat/v2-settings-account) 위에 쌓았습니다. #362를 먼저 env/dev에 머지하고, 이 PR의 base를 env/dev로 바꾼 뒤 머지해 주세요(#351~358 머지 순서 사고 방지).

요약

빠른 MVP 테스트를 위해 V2를 게스트 전용으로 바꿉니다. 소셜 로그인(카카오·Apple)을 완전히 들어내고, 앱을 켜면 로그인 화면 없이 기기 ID로 게스트 토큰을 자동 발급받아 바로 홈으로 갑니다.

레거시 게스트는 토큰 없는 로컬 상태라 경로 검색·알람을 전부 쓸 수 없었습니다. 그래서 서버가 게스트 계정과 토큰을 발급해 주고, 기존 API(알람 등록·갱신·푸시)를 회원과 똑같이 쓰는 방식을 택했습니다.

서버 계약 (서버 팀 게스트 흐름 표 기준 확정)

시점 호출 토큰 클라 상태
최초 실행 POST /api/auth/guest {deviceId, fcmToken?} 불필요 ✅ 구현
FCM 토큰 갱신 PUT /api/members/me {fcmToken} 필요 ✅ 구현(토큰 갱신 콜백·세션 확보 직후, 중복 방지)
막차 조회 서버 표: GET /v3/guest/last-routes/stream(SSE) 불필요 ↪ 기존 GET /api/routes/last-routes를 게스트 JWT로 유지(사용자 결정) — 서버 허용 확인 필요
알람 등록/갱신/해제 POST·GET …/refresh·DELETE /api/routes/user-routes 필요 ✅ 기존 구현 그대로
실시간 정보 bus-arrival·subway-arrival 필요 ⏭ MVP 제외(사용자 결정)
만료 /api/auth/reissue → 실패 시 /api/auth/guest 재호출 = 같은 계정 — ✅ 구현(화면 유지, 조용한 재발급)

🐛 이번에 함께 고친 치명 버그 — base URL /api 누락: 서버 경로는 전부 /api/...인데 V2 base URL이 https://atcha.p-e.kr라 모든 요청이 어긋나 있었습니다(과거 데모 폴백이 실패를 가림). AppEnvironment에 /api를 붙이고 AppEnvironmentTests로 고정했습니다.

서버 확인 필요: 표에 없는 V2 사용 API가 게스트 JWT를 허용하는지 — /routes/last-routes(+/{id}), /locations, /locations/rgeo, /locations/is-service-region, GET /members/me, PATCH /members/me/home-address, /app/version.

참고: 2026-09-24 오후 재확인 시에도 dev(atcha.p-e.kr) 연결 타임아웃, live(atcha.online) DNS 실패 — 실서버 E2E는 서버 복구 후 가능합니다.

변경 사항

  • 앱 시작
    • 토큰이 없으면 스플래시에서 IssueGuestSessionUseCase로 게스트 세션을 발급받습니다.
    • 기기 ID는 키체인에 UUID로 보관합니다(KeychainDeviceIdentifier). 키체인이라 재설치해도 유지됩니다.
    • FCM 토큰이 있으면 발급 요청에 함께 싣습니다.
    • 발급에 실패하면 기존 스플래시 재시도 UI(오프라인/일시 오류 문구)를 띄웁니다.
  • 세션 만료: refresh 토큰까지 거절되면 화면은 그대로 두고 같은 기기 ID로 조용히 재발급한 뒤 알람을 동기화합니다. 동시에 만료가 여러 번 와도 재발급은 한 번만 합니다.
  • 삭제한 것
    • AuthFeature 모듈 전체
    • SocialLoginAdapter, KakaoConfig
    • 카카오 SDK 링크, Apple 로그인 entitlement, 카카오 URL 스킴·plist 키
    • SignIn/Logout/Withdraw UseCase, SessionEnding, AlarmSessionTeardown
    • CoreAuth의 signOut·LogoutEndpoint
    • 설정의 로그아웃·계정 탈퇴, DEV 로그아웃 메뉴
    • 레거시 타겟이 쓰는 카카오 패키지 선언(Tuist/Package.swift)은 유지했습니다.
  • 복구: 소셜 로그인이 다시 필요하면 feat: AtchaV2 소셜 로그인 + 계정 수직 슬라이스 완결 (가입·로그아웃·탈퇴·유저정보) #361 히스토리에서 복원하면 됩니다.

테스트

  • 빌드: AtchaV2 Debug·Stage·Release 모두 성공
  • 단위 테스트 전부 통과
    • Domain 85건(게스트 발급 신규 2건)
    • AtchaData 51건(FCM PUT 핀 포함)
    • CoreAuth 29건
    • SettingsFeature 7건
    • HomeFeature 66건
    • AtchaV2Tests 18건(base URL /api 회귀 고정 포함)
  • 시뮬레이터(iPhone 17, 클린 설치)
    • 로그인 화면 없이 스플래시에서 발급을 시도합니다.
    • 서버에 닿지 않으니 약 10초 뒤 "일시적인 문제가 생겼어요" 문구와 재시도 버튼이 뜹니다. 스플래시가 멈추지 않습니다.
    • 홈 진입 이후 흐름은 서버 발급 API가 생긴 뒤 검수가 필요합니다.

서버 이후 확인할 것

  • 서버 복구 후 클린 설치 → 홈 자동 진입
  • 재설치 후 같은 게스트 회원 유지(알람·집 주소)
  • refresh 만료 재현 → 화면 유지 + 재발급 + 알람 동기화

🤖 Generated with Claude Code

YuGeonHui and others added 2 commits September 24, 2026 12:20
- Domain: IssueGuestSessionUseCase + DeviceIdentifierProviding, AuthRepository를 게스트 발급으로 교체
  (SignIn/Logout/Withdraw UseCase·SocialCredential·SignUpForm·SessionEnding·AlarmSessionTeardown 삭제)
- AtchaData: POST /auth/guest {deviceId, fcmToken} 제안 계약(서버 합의 대기), withdraw·check·login·sign-up 제거
- CoreAuth: signOut/invalidateSession/clearSession·LogoutEndpoint 제거, SessionState.loginRequired → noSession

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 토큰 없음 → 키체인 기기 UUID로 게스트 발급 후 홈, 실패 시 스플래시 재시도 UI
- refresh 확정 만료 → 화면 유지 + 같은 기기 ID로 재발급(같은 게스트 회원 전제라 알람 정리 없음)
- AuthFeature 모듈·SocialLoginAdapter·KakaoConfig·카카오 SDK 링크·Apple 로그인 entitlement 제거
  (레거시 타겟이 쓰는 카카오 패키지 선언은 유지)
- 설정에서 로그아웃·계정 탈퇴 제거, DEV 로그아웃 메뉴 제거
- CLAUDE.md·로드맵 서버 질문 #1 갱신

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@YuGeonHui
YuGeonHui merged commit a3acc88 into feat/v2-settings-account Sep 24, 2026
@YuGeonHui YuGeonHui changed the title feat: AtchaV2 게스트 전용 전환 — 소셜 로그인 제거 + 게스트 토큰 자동 발급 (서버 /auth/guest 필요) feat: AtchaV2 게스트 전용 전환 — 소셜 로그인 제거 + 게스트 토큰 자동 발급 + base URL /api 수정 Sep 24, 2026
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.

1 participant