iykyka/docs/account-settings-ia.md

5.1 KiB

계정 · 인증 · 설정 IA (Phase 1 갭 명세)

권위: decision-log.md Q8·Q9 (제안) · PRD.md · invite-ops.md.
이 문서는 구현 전에 제품 경계를 고정하기 위한 명세다. Q8/Q9가 확정되기 전에는 코드를 크게 바꾸지 않는다.

1. 현재 상태 (as-is)

영역 있음 없음 / 불완전
가입 초대 코드 + 표시 이름 (SignupScreen, POST /auth/signup) 이메일·비밀번호·소셜
로그인 서버 POST /auth/login (초대 코드) 앱 UI에 「이미 가입」경로
세션 Bearer 토큰 로컬 저장, SessionsScreen 목록/종료 종료 후 로컬 토큰 클리어·가입 화면 복귀
로그아웃 메인 메뉴 로그아웃 없음
설정 ⋮ → 말투 / 자율성(안에 세션·데이터흐름) 단일 「설정」진입점·로그아웃 묶음
L2 서버 발송 게이트 + 화이트리스트 키워드 PRD §2.2식 수신 트리거 자동응대

2. Phase 1 목표 모델 (to-be, Q8 제안)

2.1 계정

  • 초대 코드 클로즈드 베타만. 이메일/비번/OAuth는 Phase 1 비범위 (decision-log Q7·Q8a).
  • 한 초대 코드 = 한 가입 (invite-ops.md). 데모 코드 DEMO-YKAVU는 운영 예외(재사용 허용).
  • 사용자는 숫자 사용자 ID로 페어링한다 (표시 이름만으로는 대화 불가 — 기존 Track A).

2.2 가입 / 로그인 UX

[스플래시]
   → 토큰 유효? → 메인(대화 목록)
   → 없음 → [입장 화면]
              ├─ 새로 가입 (초대 코드 + 표시 이름) → 말투 온보딩 → 메인
              └─ 이미 가입 (초대 코드로 로그인) → 메인
  • 「이미 가입」은 같은 초대 코드로 POST /auth/login을 호출해 새 세션 토큰을 받는다.
  • 비밀번호 없음. 초대 코드 유출 = 계정 탈취 가능 → 베타 한정 리스크로 invite-ops에 명시.

2.3 로그아웃 (P0 갭)

  1. 설정(또는 ⋮) → 로그아웃 확인
  2. DELETE /users/:id/sessions/:current (또는 동등 revoke)
  3. 로컬: session_token / 유저 캐시 삭제, API 클라이언트 토큰 클리어
  4. 네비게이션: 입장(가입/로그인) 화면으로 스택 리셋
  5. 말투 샘플 등 온디바이스 DB는 기기 잔존(같은 사용자가 다시 로그인하면 재사용) — “기기에서 전부 삭제”는 별 옵션(후속)

2.4 설정 IA

대화 목록에서 발견 가능한 한 진입점(권장: ⋮ 유지 + 라벨 「설정」, 또는 톱니 아이콘).

항목 화면 비고
말투 샘플 OnboardingToneScreen 기존
자율성 · 화이트리스트 · 관계 기본 AutonomySettingsScreen 기존
로그인 세션 SessionsScreen 기존, 로그아웃과 구분
데이터 흐름 DataFlowScreen 기존
로그아웃 확인 다이얼로그만 신규

채팅방 앱바에는 설정 전체를 넣지 않는다 (거부권·스누즈만 유지).

2.5 계정 삭제

  • Phase 1 앱 UI 비범위 (Q8e 제안).
  • 운영 필요 시 서버/DB 수동. 정식 탈퇴 API는 베타 이후 Q.

3. L2 의미 (Q9 제안) — 카피·구현 정렬

3.1 PRD가 말하는 것 (PRD.md §2.2)

상대가 메시지를 보냄 → (화이트리스트면) 와카뷰가 즉시 자동 발송 + 사후 알림.

3.2 지금 코드가 하는 것

  • 사용자가 으로 초안을 받고, 클라이언트가 sender_mode=twin으로 발송할 때
  • 서버가 L2 + 화이트리스트 매칭이면 approved 없이도 저장·릴레이
  • 상대 메시지 수신을 감지해 스스로 초안·발송하는 루프는 없음

3.3 Phase 1에서의 제품 카피 (제안)

  • 자율성 화면 L2 설명:
    「화이트리스트 주제의 와카뷰 답장은 승인 없이 보낼 수 있습니다.
    상대 메시지를 받으면 으로 초안을 만든 뒤 보내세요.」
  • “자리를 비우면 알아서 답함”은 수신 트리거 자동응대 구현 전까지 쓰지 않음.

3.4 후속 구현 (별 로드맵, Q9 확정 후)

  1. 1:1에서 상대 메시지 WS/수신 이벤트
  2. 에스컬레이션·거부권·도배·그룹 하드게이트 통과 시만
  3. 초안 생성 → L2+화이트리스트면 twin 발송, 아니면 L1 알림
  4. 사후 알림 + 되돌리기 (기존 불변식)

4. 수락 기준 (구현 착수 시)

계정/설정 (Q8 확정 후)

  • 입장 화면에 가입 / 이미 가입(로그인) 구분
  • 로그아웃 시 서버 세션 무효 + 로컬 토큰 삭제 + 입장 화면 복귀
  • 설정 진입에서 로그아웃이 한 번의 탭 경로로 발견 가능
  • 이메일/비번 UI를 추가하지 않음

L2 정렬 (Q9 확정 후)

  • L2 설명이 발송 게이트 현실과 모순되지 않음
  • 수신 자동응대를 넣을 경우 별도 roadmap 체크리스트 + 안전 불변식 테스트

5. 비범위 (이 문서에서 다루지 않음)

  • 이메일 인증, OAuth, 비밀번호 재설정
  • OS 레이어 계정 연동
  • L3/L4