Skip to content

[NM-410] 페더레이션 계정에서 is_test_account 가 항상 false 이던 문제 수정 - #156

Merged
ParkMazorika merged 1 commit into
developfrom
feature/NM-410-federated-email-test-account
Aug 31, 2026
Merged

ParkMazorika merged 1 commit into
developfrom
feature/NM-410-federated-email-test-account

Conversation

@ParkMazorika

@ParkMazorika ParkMazorika commented Aug 31, 2026 •

Copy link
Copy Markdown
Contributor

관련 이슈

  • NM-410

변경 요약

심사·QA 계정 판별이 currentUser.email(최상위 필드)만 읽어서, 페더레이션 전용 계정(구글·애플)에서는 항상 nil 이 되어 is_test_account 가 어떤 계정에서도 true 가 되지 않았다. providerData 를 함께 보도록 고쳤다.

변경 내용

  • AnalyticsIdentity.signInEmail(_:) 추가 — user.email ?? user.providerData.compactMap(\.email).first
  • 인증 상태 리스너가 이 값을 쓰도록 변경

왜 눈에 안 띄었나 — Firebase 콘솔에는 이메일이 정상으로 표시된다. 최상위 email 필드와 providerData[].email 이 별개라서, 페더레이션 전용 계정은 콘솔에 값이 보여도 클라이언트의 최상위 필드는 비어 있다. 앱 안에서 currentUser.email 을 읽는 곳이 여기 하나뿐이라 다른 경로로도 드러나지 않았다.

영향 — NM-410 배포 이후 심사자·QA 트래픽이 분석에서 걸러지지 않고 그대로 섞여 있었다. 태그가 붙기 시작하는 건 이 수정이 들어간 빌드부터다.

테스트

  • 로컬 빌드/실행 확인
  • 정상·에러 케이스 확인

시뮬레이터(iPhone 17 Pro / iOS 26.4)에 임시 로그를 넣어 실제 값을 확인:

NM410DBG2 topEmail=<nil> providerData=[google.com=nursematetest@gmail.com]

수정 전후를 Firebase Analytics 로그(-FIRAnalyticsDebugEnabled)로 대조:

수정 전:  User property set. Name, value: is_test_account, false
수정 후:  User property set. Name, value: is_test_account, true

검증에 쓴 임시 로그는 제거했다(빌드 산출물 문자열 검사로 0건 확인).

남은 과제 (이 PR 범위 밖)

  • Remote Config test_account_emails 가 아직 반영되지 않는다. 인증 리스너는 세션 복원으로 즉시 발화하는데 fetchAndActivate() 는 SceneDelegate 에서 한참 뒤에 돌아, 판별 시점의 값이 항상 빈 문자열이다. 게다가 Remote Config 가 나중에 도착해도 재계산하지 않는다(.remoteConfigDidUpdate 구독자는 AppGate 뿐). "배포 없이 QA 계정을 바꾼다"는 의도가 아직 동작하지 않는다.
  • 카카오(커스텀 토큰)는 providerData 에도 이메일이 없을 수 있다. 근본적으로는 서버가 회원 정보나 테스트계정 플래그를 내려주는 쪽으로 옮기는 게 맞다.

체크리스트

  • PR 제목이 [NM-XXX] 요약 형식
  • 브랜치명 <type>/NM-XXX-요약 형식
  • 커밋 메시지 [NM-XXX] type: 요약 형식
  • 셀프 리뷰 완료

심사·QA 계정 판별이 `Auth.auth().currentUser.email`(최상위 필드)만 읽고 있었다.
구글·애플처럼 페더레이션 전용으로 만들어진 계정은 이 필드가 비어 있고 이메일이
`providerData` 안에만 들어온다. Firebase 콘솔에는 이메일이 정상으로 보이기 때문에
눈으로는 잡히지 않는다.

그래서 `is_test_account` 는 어떤 계정에서도 `true` 가 되지 않았다 — 심사자·QA
트래픽을 분석에서 걸러내려던 NM-410 의 목적이 배포 이후 한 번도 달성되지 않은 상태였다.

시뮬레이터에 임시 로그를 넣어 확인한 실제 값:

    topEmail=<nil> providerData=[google.com=nursematetest@gmail.com]

최상위 값을 먼저 보고 없으면 공급자 정보에서 찾도록 `signInEmail(_:)` 을 추가했다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qc4S5fQbGW3fnZMh7bPb8
@ParkMazorika ParkMazorika added the bug Something isn't working label Aug 31, 2026
@ParkMazorika ParkMazorika self-assigned this Aug 31, 2026
@ParkMazorika
ParkMazorika merged commit fe2c5a4 into develop Aug 31, 2026
@ParkMazorika
ParkMazorika deleted the feature/NM-410-federated-email-test-account branch August 31, 2026 20:11
@ParkMazorika ParkMazorika added the bug Something isn't working label Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant