Skip to content

회원가입 카카오 단일화 — 이메일 가입·계정 찾기 갈래 제거 #943

Open
1 of 1 issue completed

Description

@OnlyReadOneBook

2026-09-08 범위 분리·착수 조건

계정 승계·로그인 수단·BE 준비 검증을 #1947로 분리했다. 이 이슈는 준비 완료 후 이메일 가입/로그인 갈래의 제거·재편 구현을 소유한다. 기존의 상대 날짜/회의 대기 문구는 폐기하며 #1947 및 기존 BE#227 관계가 실제 착수 게이트다. 기존 이메일 사용자용 복구 경로를 먼저 없애지 않는다.


📜 Overview (Required)

08-23 회의에서 회원가입을 카카오 단일화하기로 결정했다 — "회원가입 삭제 - 무조건 카톡으로 진행? ㅇㅇ". 수신자 등록도 카톡 초대 → Play스토어 → 회원가입 흐름으로 바뀌면서(설정 모듈 별도 이슈), 이메일 기반 가입·계정 찾기 갈래 전체가 "다 필요 없어짐 - 화면 제거하기"로 정리됐다. FE 팀 할 일 "카카오 화면"의 온보딩 파트.

⚠️ 착수 게이트 — 회의 유보: 전체 카톡 전환 플랜은 "진행해보고 다음주 확인 예정". 다음주 회의 확정 전 착수 금지 — 이 이슈는 방향 기록·범위 산정용.

제거·재편 대상 (현행 코드 기준)

확인 필요 (회의 미논의)

📍 Note (Optional)

Activity

  1. changed the title [-]feat(onboarding): 회원가입 카카오 단일화 — 이메일 가입·계정 찾기 갈래 제거[/-] [+]회원가입 카카오 단일화 — 이메일 가입·계정 찾기 갈래 제거[/+] on Aug 28, 2026
  2. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    착수 보류 — 세 축 실측 결과 전부 «아직 아니다» (2026-08-30)

    착수 가능성을 판정하려고 시안·BE 실코드·마이그레이션 세 축을 실측했다. 세 축 모두 어긋나 구현하지 않는다. 본문의 착수 게이트(「다음주 회의 확정 전 착수 금지」)도 해제 근거를 찾지 못했다.


    1. 시안 — 제거 대상 화면이 정본에 전부 살아 있다 ❌

    정본 페이지 정리 Screen Design(4327:43064, 08-23 재편본)의 이용자 화면 온보딩 섹션 전수 조회 결과 — 이 이슈가 「제거」 대상으로 잡은 화면이 하나도 아카이빙되지 않았다.

    구역 노드 상태
    회원가입 4327:64148 이메일 3단계 + 프로필 전부 생존 (65768·65778·65818·65789·65807)
    아이디 찾기 4327:64146 인증 3종 + 결과 화면(72049) 생존
    비밀번호 찾기 4327:64147 인증 → 비밀번호 변경 → 완료 전 흐름 생존
    로그인 4327:63976 외 6종 이메일·비밀번호 폼 + 간편 회원가입하기 + 카카오 + Google + 아이디/비밀번호 찾기 동시 노출
    Image

    즉 현행 시안은 「카카오 단일화」가 아니라 이메일·카카오·구글 3종 병존 로그인이다. 결정적인 반증 두 개:

    • 파일 lastModified 는 2026-08-29 — 회의 이후에도 디자이너가 파일을 만졌는데 이 화면들은 그대로다. 「손댈 시간이 없었다」로 설명되지 않는다.
    • 비밀번호 찾기 시안 4327:71982 에 「소셜 로그인 계정은 비밀번호 찾기를 사용 하실 수 없습니다.」 팝업이 명시돼 있다. 시안이 소셜 계정과 이메일 계정의 병존을 의도적으로 설계해 둔 것이다.

    회의 팀별 할 일의 「디자이너 - 필요없는 화면 아카이빙」이 아직 이행 전이라, 지금 코드를 지우면 시안이 정본인 상태에서 시안에 있는 화면을 지우는 셈이 된다.

    2. BE 실코드 — 이메일 갈래가 전부 살아 있고, 카카오 단일화는 서버에서 아직 불가능 ❌

    Afternote-BE origin/main(0a4b870, 2026-08-30) 기준.

    • AuthController 의 이메일 갈래 엔드포인트 전량 생존 — /sign-up, /login, /email/send, /email/verify, /find/send/code, /email/find, /password/find, /password/change.
    • [feat] 카카오 공유용 수신자 초대 API·회원 연결 Afternote-BE#227(카카오 전환)은 OPEN·코멘트 0건, domain/auth·domain/user 에 08-20 이후 커밋 0건. 착수 흔적이 없다.
    • ErrorCode.SOCIAL_LOGIN_USER(1702) = 「소셜 로그인으로 가입한 계정입니다」 — 서버가 두 갈래를 1급 개념으로 구분해 운용 중이다.

    그리고 카카오 단일 가입은 지금 서버로는 안전하지 않다. KakaoLoginService 는 kakao_account.email 을 그대로 읽는데 이건 선택 동의 항목이라 미동의 시 null 이 온다. 그 값이 AuthService.socialLogin 으로 흘러가는데:

    User user = userRepository.findByEmail(socialUserInfo.getEmail()).orElse(null);
    // user == null 이면
    user = User.builder().email(socialUserInfo.getEmail()) /* null */ ...

    User.email 은 @Column(nullable = false, unique = true) 다 → 이메일 미동의 사용자는 가입 자체가 DB 제약으로 터진다. 지금은 이메일 가입이라는 갈래가 있어 가려져 있지만, 카카오를 유일 입구로 만들면 이게 곧 «가입 불가»가 된다. 이메일 동의 항목 필수화 또는 providerId 기반 식별로의 전환이 BE 선행 조건이다.

    3. 마이그레이션 — 정의돼 있지 않다. 이게 실질 블로커다 🚫

    기존 이메일 가입 계정의 이행 경로가 이 이슈에도, 08-23 회의록에도, BE#227 에도 없다. 회의록 원문은 「이러면 기존 회원가입이랑 수신자 등록 이메일 필요한거 다 필요 없어짐 - 화면 제거하기」 까지이고 기존 계정 처리는 논의되지 않았다.

    현재 코드상 유일한 사실상의 이행 경로는 위 socialLogin 의 이메일 문자열 일치뿐인데, 이건 설계된 마이그레이션이 아니라 우연이다. 결과가 셋으로 갈린다.

    1. 카카오 계정 이메일 == 앱 가입 이메일 → 기존 계정으로 로그인된다 (운 좋은 경우)
    2. 다르면 → 빈 신규 계정이 조용히 생긴다. User 가 애프터노트·타임레터·일기·수신자를 전부 FK 로 소유하므로 기존 기록 전량이 접근 불능이 된다. 사용자에겐 «데이터가 사라졌다»로 보인다.
    3. 이메일 미동의 → 위 2번 항목대로 가입 자체가 실패

    게다가 socialLogin 은 기존 사용자를 찾았을 때 providers 에 KAKAO 를 추가하지 않는다 — /connected-accounts 표시와 실제 로그인 수단이 어긋난 채로 남는다.

    로그인 경로 제거는 되돌리기 어렵다. 이메일 폼을 지우는 순간 위 2·3에 해당하는 사용자는 앱에 들어올 수단이 없어진다. 이건 구현 판단이 아니라 제품 결정이므로 여기서 멈춘다.


    확정이 필요한 질문 (PM·BE)

    1. 기존 이메일 가입 계정을 어떻게 할 것인가? 선택지 — (a) 이메일 로그인 폼 존치·신규 가입만 차단, (b) 카카오 연결 유도 후 기존 계정 승계 API 신설, (c) 사전 공지 후 계정 정리. 어느 쪽이든 BE 선행 작업이 붙는다.
    2. 카카오 계정 이메일과 앱 계정 이메일이 다른 사용자를 무엇으로 식별할 것인가? (이메일 매칭은 위 2번 사고를 낳는다 — providerId 기반 식별 전환이 필요해 보인다)
    3. 카카오 이메일 선택 동의 미동의 사용자를 받을 것인가? 받는다면 User.email NOT NULL 제약 해소가 BE 선행 조건이다.
    4. 구글 로그인(requestGoogleIdToken) 존치 여부 — 회의록엔 카톡만 언급됐고 시안엔 Google 버튼이 그대로다.
    5. 패스키 패스키 로그인 — Credential Manager 통합 인증 연동 #764 — 이메일/비밀번호 갈래 소멸 시 패스키 등록·인증의 기반 계정 개념이 어떻게 되는가.
    6. 디자이너 아카이빙 일정 — 시안이 정리돼야 FE 가 「시안에 없는 화면」으로 판정하고 지울 수 있다.

    현재 상태·후속

    • FE 는 아무것도 지우지 않았다. 브랜치·PR 없음. 온보딩 코드는 시안과 일치한 상태 그대로다(로그인 화면에 카카오·구글 버튼 이미 배선돼 있음 — LoginEntry.kt).
    • 위 1·2·3이 확정되기 전에는 착수하지 않는다. 특히 1번(마이그레이션)이 없는 채로 로그인 폼을 지우는 건 기존 사용자 락아웃이라 범위 축소로도 우회할 수 없다.
    • 아이디 찾기 결과 화면 — 기능 존치 결정 대기 #474 는 이 이슈의 제거 범위를 근거로 08-29 에 not planned 로 닫혔다. 만약 이 결정이 뒤집히면 아이디 찾기 결과 화면 — 기능 존치 결정 대기 #474 재개가 필요하다는 점을 같이 남겨 둔다.
  3. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    착수 게이트가 아직 유효한 것으로 판정했습니다 — 시안 3종이 정본에 그대로 살아 있고(파일 lastModified 2026-08-29), BE#227 은 무활동이며, 무엇보다 기존 이메일 계정 마이그레이션이 어디에도 정의돼 있지 않습니다. 마이그레이션 없이 로그인 폼만 지우면 기존 사용자 락아웃이라 범위를 좁힌 부분 착수도 성립하지 않습니다.

    다만 조사 중 나온 BE 결함 2건은 이 이슈와 무관하게 지금도 실재해서 별건으로 뗐습니다 — Afternote/Afternote-BE#271.

    1. 카카오 kakao_account.email 은 선택 동의라 미동의 시 null 인데 User.email 이 nullable = false, unique = true 라 가입이 DB 제약 위반으로 터집니다. 지금은 이메일 가입 갈래가 이걸 가려 주고 있을 뿐이라, 이 이슈가 착수되면 그대로 드러납니다.
    2. 이메일로 기존 사용자를 찾은 경로에서 provider 를 병합하지 않아 /connected-accounts 표시가 실제 로그인 수단과 어긋납니다.

    BE#271 이 #943 의 선행 조건이기도 합니다.

  4. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    착수 게이트를 「회의 확정」에서 「BE 준비 완료」로 바꿉니다 (2026-08-30 일혁 확정)

    본문의 착수 게이트는 「⚠️ 회의 유보 — 다음주 회의 확정 전 착수 금지」였습니다. 그 기준을 대체합니다 — 카카오 단일화는 BE 준비가 끝난 뒤에 착수합니다.

    그에 맞춰 blocked_by 로 Afternote-BE#227([feat] 수신자 등록·회원가입 카카오 전환 — 카톡 초대·랜딩·이메일 갈래 대체)을 걸었습니다. 라벨이 아니라 관계로 걸어 두었으니, BE#227 이 닫히면 이 이슈가 자동으로 착수 후보에 다시 올라옵니다.

    왜 날짜 게이트가 아니라 관계여야 하는가 — 종전 문구는 「다음주」라는 상대 시점이라 시간이 지나면 「풀린 것처럼」 읽힙니다. 실제로 오늘 착수 후보를 훑을 때 이 이슈가 그 경계에서 한 번 걸렸습니다. BE 이슈에 매어 두면 판정이 사람 기억이 아니라 상태로 남습니다.

    딸린 갈래 하나 — #457 은 아직 미결입니다

    본문이 「비밀번호 찾기 — #457 (미착수: 대상이 되는 이메일 계정 갈래 자체가 소멸)」로 적어 이 이슈에 묶어 뒀는데, 그 전제가 실측과 어긋납니다.

    • BE 는 LOCAL 계정 복구와 소셜 계정 전용 오류 1702 를 이미 구현해 뒀습니다.
    • FE 에도 wire 계약이 있습니다 — AccountApiService · AuthDto.
    • 즉 legacy 이메일 계정 복구 범위는 살아 있습니다.

    이 이슈가 BE#227 대기로 미뤄지면 기존 이메일 가입 계정이 당분간 그대로 남습니다. 그 사용자들의 비밀번호 재설정 수단을 그동안 제공할지 말지가 #457 의 실제 질문이고, 이 이슈의 게이트와는 별개입니다. 제품 판단이라 여기 적어만 둡니다.

  5. OnlyReadOneBook commented on Oct 3, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    구글 로그인을 남길지와 9월 6일 회의록의 "회원가입 남겨도 될듯"이 이메일 회원가입 존치를 뜻하는지를 PM 질문방 카카오 단일화 글에 답글로 올렸습니다: https://discord.com/channels/1423516014330646760/1550803654074961940/1555892926377369750
    8월 23일~9월 20일 회의록 원문에는 구글 언급이 없습니다. 구글 로그인은 앱 로그인 화면과 BE GoogleLoginService 에 아직 있습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions