Skip to content

refactor(data): 수신자 email/verify 응답의 accessCode 수신 제거 (BE 필드 제거 선행 가드) #454

Closed

Description

@OnlyReadOneBook

📜 Overview (Required)

POST receiver-auth/email/verify 응답의 accessCode 는 Receiver.authCode(마스터 키 UUID)와 동일한 값이다. 이메일 6자리 인증만 통과하면 다음 단계인 마스터 키 입력 화면에서 입력받을 값이 응답 바디로 미리 나가는 셈이라, 마스터 키 단계가 걸러내는 사람이 0명이 된다.

BE 측 확인 결과 설계 의도가 아니라 테스트 편의로 넣어둔 값이며, 응답에서 제거 예정이다 (2026-07-16 확인).

FE 선행이 필수다. 현재 DTO 가 @SerialName("accessCode") val accessCode: String — non-null·기본값 없음이라 BE 가 먼저 제거하면 kotlinx.serialization MissingFieldException 이 나고, ReceiverAuthRepositoryImpl 의 runCatching 이 이를 삼켜 Result.failure 로 흘린다. IdentityVerificationViewModel 의 폴백이 걸려 사용자에게는 "인증번호 불일치"라는 엉뚱한 메시지가 뜨고 이메일 인증이 영구 실패한다. 이메일 인증은 마스터 키 화면 도달의 유일한 게이트(ReceiverNavGraph.kt:109-113)이므로 수신자 흐름 전체가 막힌다. ignoreUnknownKeys = true 는 여분 키만 무시할 뿐 누락된 필수 필드는 못 봐준다 (유닛테스트로 실측 확인).

회귀 표면 없음 — ReceiverEmailAuthResult.accessCode 를 읽는 프로덕션 코드는 0건이다. 유일한 호출부 IdentityVerificationViewModel 이 .onSuccess { } 에서 결과 객체를 참조하지 않고 버리며, X-Auth-Code 헤더는 MasterKeyViewModel 의 수동 입력분(ReceiverAuthCodeDataSource)으로만 채워진다.

작업 범위

  1. ReceiverEmailAuthVerifyDto 에서 accessCode 필드 삭제
  2. domain ReceiverEmailAuthResult.accessCode 삭제 + KDoc 갱신 (현재 "feat(afternote): 수신자 본인확인 이메일 인증 stub → 실 API(receiver-auth/email) 전환 #407 결정 대기" 전제로 적혀 있어 폐기 대상)
  3. toDomain() 매퍼 갱신
  4. 테스트 3건 갱신 — ReceiverAuthDtoMapperTest.kt, ReceiverEmailAuthContractTest.kt, ReceiverAuthRepositoryImplEmailAuthTest.kt. accessCode assert 제거 + 응답에 accessCode 가 있든 없든 파싱되는지 회귀 테스트 추가 (BE 배포 시점과 무관하게 안전해야 함)

📍 Note (Optional)

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions