1. 목적
사용자의 프로필 정보 관리, 앱 설정 변경, 계정 탈퇴 및 앱 리뷰 요청에 대한 정책을 정의합니다.
2. 프로필 관리
2-1. API 엔드포인트
| HTTP | 엔드포인트 | 설명 |
|---|
GET | /api/users/profile/ | 내 프로필 조회 |
PATCH | /api/users/profile/ | 내 프로필 수정 |
GET | /api/users/profile-summary/ | 프로필 요약 정보 조회 (도서 관련 통계 포함) |
2-2. 프로필 항목
| 필드 | 설명 | 수정 가능 |
|---|
email | 이메일 주소 | 불가 (소셜 로그인 기반) |
nickname | 닉네임 (고유값) | 가능 |
full_name | 이름 | 가능 |
language | 사용자 언어 | 가능 |
country | 국가 코드 | 가능 |
birth_year | 출생연도 | 가능 |
social_provider | 소셜 로그인 제공자 | 불가 (자동 설정) |
marketing_consent | 마케팅 수신 동의 | 가능 |
2-3. 프로필 요약 (profile-summary)
- 사용자의 독서 활동 요약 정보를 제공합니다.
- 최근 읽은 책, 북마크, 녹음, 스티커 현황 등의 통계를 포함합니다.
3. 설정 관리
3-1. API 엔드포인트
| HTTP | 엔드포인트 | 설명 |
|---|
GET | /api/users/settings/ | 내 설정 조회 |
PATCH | /api/users/settings/ | 내 설정 수정 |
3-2. 설정 항목
| 필드 | 설명 | 기본값 |
|---|
push_notification_enabled | 푸시 알림 마스터 토글 | True |
notification_marketing | 마케팅 알림 수신 | False |
notification_bookmark | 북마크 도서 알림 수신 | True |
app_language | 앱 표시 언어 | en |
viewer_languages | 콘텐츠 열람 언어 목록 (JSON) | [] |
3-3. 알림 설정 동작
push_notification_enabled가 False인 경우, 모든 푸시 알림이 차단됩니다.
- 개별 알림 설정(
notification_marketing, notification_bookmark)은 마스터 토글이 활성화된 경우에만 유효합니다.
4. 계정 탈퇴
4-1. API 엔드포인트
| HTTP | 엔드포인트 | 설명 |
|---|
POST | /api/users/delete-account/ | 계정 탈퇴 요청 |
4-2. 탈퇴 처리 방식
- Soft Delete 방식으로 처리됩니다 (
SafeDeleteModel 사용).
- 탈퇴 시
is_active가 False로 설정되고, deleted 타임스탬프가 기록됩니다.
- 실제 데이터 삭제는 30일 후에 수행됩니다.
4-3. 탈퇴 사유 (deletion_reason)
사용자는 탈퇴 시 다음 사유 중 하나를 선택합니다:
| 코드 | 설명 |
|---|
not_used_often | 자주 사용하지 않아서 |
expensive | 다른 서비스보다 비싸서 |
lack_content | 콘텐츠가 부족해서 |
app_error | 앱에 오류가 있어서 |
other | 해당 사유 없음 |
4-4. 재가입 제한
- 탈퇴 후 7일간 재가입이 불가합니다 (
ACCOUNT_REJOIN_BLOCK_DAYS=7).
- 7일 이내 재가입 시도 시 서버에서 403 Forbidden 응답이 반환됩니다.
- 클라이언트에서는 재가입 제한 안내 메시지(
account_re_signup_restriction)를 표시합니다.
4-5. 데이터 보관 정책
| 항목 | 보관 기간 | 이후 처리 |
|---|
| 계정 정보 | 30일 | 완전 삭제 |
| 스티커 수집 기록 | 30일 | 완전 삭제 |
| 독서 이력 | 30일 | 완전 삭제 |
| 녹음 파일 | 30일 | 완전 삭제 |
| 구독 결제 기록 | 법적 보관 기간 준수 | 관련 법률에 따름 |
5. 앱 리뷰 요청
5-1. API 엔드포인트
| HTTP | 엔드포인트 | 설명 |
|---|
GET | /api/users/review-eligibility/ | 리뷰 요청 대상 여부 확인 |
POST | /api/users/review-requested/ | 리뷰 요청 노출 기록 저장 |
5-2. 리뷰 요청 정책
- 앱 사용 중 특정 조건을 만족하는 사용자에게 앱스토어 리뷰 요청을 표시합니다.
review-eligibility API를 통해 리뷰 요청 대상 여부를 서버에서 판단합니다.
- 리뷰 요청이 사용자에게 표시되면,
ReviewRequestLog 모델에 기록이 저장됩니다.
- 기록 항목: 사용자 ID, 기기 ID, 생성 일시
5-3. 리뷰 요청 빈도 제한
- 과도한 리뷰 요청을 방지하기 위해,
ReviewRequestLog를 기반으로 이전 요청 이력을 확인합니다.
- 최근 요청 이후 일정 기간이 경과하지 않은 경우에는 리뷰 요청이 표시되지 않습니다.
6. 기타 계정 관련 API
| HTTP | 엔드포인트 | 설명 |
|---|
GET | /api/users/login-history/ | 로그인 이력 조회 |
GET | /api/users/recent-books/ | 최근 읽은 도서 목록 |
GET | /api/users/books-in-progress/ | 읽는 중인 도서 목록 |
GET | /api/users/completed-books/ | 완독한 도서 목록 |
GET | /api/users/bookmarks/ | 북마크 도서 목록 |
DELETE | /api/users/bookmarks/{book_id}/ | 북마크 삭제 |
GET | /api/users/bookmarks/status/{book_id}/ | 특정 도서 북마크 상태 |
GET | /api/users/reading-history/ | 독서 이력 |
GET | /api/users/recordings/ | 녹음 목록 |
DELETE | /api/users/recordings/{pk}/ | 녹음 삭제 |