5.1 KiB
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-logQ7·Q8a). - 한 초대 코드 = 한 가입 (
invite-ops.md). 데모 코드DEMO-YKAVU는 운영 예외(재사용 허용). - 사용자는 숫자 사용자 ID로 페어링한다 (표시 이름만으로는 대화 불가 — 기존 Track A).
2.2 가입 / 로그인 UX
[스플래시]
→ 토큰 유효? → 메인(대화 목록)
→ 없음 → [입장 화면]
├─ 새로 가입 (초대 코드 + 표시 이름) → 말투 온보딩 → 메인
└─ 이미 가입 (초대 코드로 로그인) → 메인
- 「이미 가입」은 같은 초대 코드로
POST /auth/login을 호출해 새 세션 토큰을 받는다. - 비밀번호 없음. 초대 코드 유출 = 계정 탈취 가능 → 베타 한정 리스크로
invite-ops에 명시.
2.3 로그아웃 (P0 갭)
- 설정(또는 ⋮) → 로그아웃 확인
DELETE /users/:id/sessions/:current(또는 동등 revoke)- 로컬:
session_token/ 유저 캐시 삭제, API 클라이언트 토큰 클리어 - 네비게이션: 입장(가입/로그인) 화면으로 스택 리셋
- 말투 샘플 등 온디바이스 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에서 상대 메시지 WS/수신 이벤트
- 에스컬레이션·거부권·도배·그룹 하드게이트 통과 시만
- 초안 생성 → L2+화이트리스트면 twin 발송, 아니면 L1 알림
- 사후 알림 + 되돌리기 (기존 불변식)
4. 수락 기준 (구현 착수 시)
계정/설정 (Q8 확정 후)
- 입장 화면에 가입 / 이미 가입(로그인) 구분
- 로그아웃 시 서버 세션 무효 + 로컬 토큰 삭제 + 입장 화면 복귀
- 설정 진입에서 로그아웃이 한 번의 탭 경로로 발견 가능
- 이메일/비번 UI를 추가하지 않음
L2 정렬 (Q9 확정 후)
- L2 설명이 발송 게이트 현실과 모순되지 않음
- 수신 자동응대를 넣을 경우 별도 roadmap 체크리스트 + 안전 불변식 테스트
5. 비범위 (이 문서에서 다루지 않음)
- 이메일 인증, OAuth, 비밀번호 재설정
- OS 레이어 계정 연동
- L3/L4