콘텐츠로 이동

MSG-310 카카오 가입 이메일 미수집

티켓: MSG-310 · 작성일: 2026-08-03 · 작성: prd-writer 상태: 검토됨

1. 문제 상황

카카오 로그인에서 이메일 동의항목(account_email)을 쓰려면 비즈 앱 전환이 선행돼야 하는데(콘솔 실측 "권한 없음"), MVP에 이메일의 실제 용도가 없어 수집하지 않기로 했다 (2026-08-03 확정). 그런데 현재 백엔드는 users.email NOT NULL + 가입 시 이메일 중복 검사 구조라, 이메일 클레임이 없으면 카카오 가입이 서버 에러로 터진다. 이메일 가입/로그인(AuthService)은 로컬 테스트용으로만 쓰인다.

2. 목적 · 목표

  • 목적: 이메일 없이 카카오 가입/로그인이 정상 동작하게 한다.
  • 목표: email 클레임 없는 id_token으로 가입 성공 (email null 저장), 기존 기능 회귀 없음.
  • 비목표(스코프 제외): 이메일 가입/로그인(로컬 테스트용) 변경, 이메일 수집 재개 대비 설계, 프로필 API 응답 형태(MSG-203에서 email null 가능으로 별도 반영).

3. 기능 요구사항

ID 요구사항 우선순위
FR-1 email 클레임이 없는 카카오 id_token으로 가입하면 email null로 저장되고 로그인이 완료된다 Must
FR-2 email 클레임이 있으면 기존과 동일 — 중복 검사 후 저장 (동작 불변) Must
FR-3 이메일 가입(로컬 테스트용)은 계속 이메일 필수다 — 요청 DTO 검증 불변 Must

4. 비기능 요구사항

분류 요구사항
데이터 정합 uq_users_email UNIQUE 유지 — PostgreSQL은 NULL 중복을 허용하므로 email 있는 유저 간 중복만 계속 차단
운영 V16 마이그레이션(NOT NULL 해제)은 기존 데이터 무변경·즉시 적용, 롤백은 NULL 행 부재 시 SET NOT NULL

5. 시퀀스 다이어그램

시퀀스 다이어그램
시퀀스 다이어그램

6. 클래스 다이어그램

신규/변경 타입 없음 — 기존 OidcLoginService 분기 하나와 스키마 제약만 변경.

7. 변경 파일 목록

파일 변경 Owner
src/main/resources/db/migration/V16__users_email_nullable.sql 신규 — NOT NULL 해제 B
src/main/java/com/msg/fillmap/auth/service/OidcLoginService.java 수정 — email null이면 중복 검사 스킵 B
src/test/java/com/msg/fillmap/auth/service/OidcLoginServiceTest.java 테스트 추가 B
src/test/java/com/msg/fillmap/user/repository/UserEmaillessPersistenceTest.java 신규 — V16 실 DB 검증 B

8. 미해결 질문

없음.