본문으로 건너뛰기

정책문서 전면 개편 구현 계획

For agentic workers: REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 백엔드/프론트엔드 코드 현황에 맞게 정책문서를 전면 재구조화 및 재작성

Architecture: 기존 Docusaurus 기반 문서 사이트의 구조를 확장하여 9개 정책 카테고리 + 개발 문서 + TODO를 코드 기반으로 전면 재작성. 기존 유효한 정책은 보존하되, outdated 내용을 교체하고 누락된 기능을 추가.

Tech Stack: Docusaurus (Markdown), 참조 소스: Django REST (백엔드), Flutter/Dart (프론트엔드)


작업 원칙

  1. 코드가 진실의 원천: 모든 정책 내용은 실제 백엔드 모델/뷰 + 프론트엔드 기능을 근거로 작성
  2. 기존 유효 정책 보존: 비즈니스 정책(가격, 연령 등)은 기존 문서에서 유지
  3. 향후 계획 분리: 코드에 없는 미래 계획은 "향후 계획" 섹션으로 명확히 분리
  4. 언어: 한국어로 작성, 기존 문서 톤/스타일 유지

참조 소스 경로

  • 백엔드: /home/ubuntu/바탕화면/workspace/penta-backend-django/
  • 프론트엔드: /home/ubuntu/바탕화면/penta-project/penta-worktrees/hotfix/
  • 문서: /home/ubuntu/바탕화면/penta-doc/

Chunk 1: 개요 및 사용자 정책 (00, 01)

Task 1: 00_개요/01_정책_전체_개요.md 재작성

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/00_개요/01_정책_전체_개요.md
  • Reference (backend): users/models.py, payments/models.py, penta_backend/settings.py
  • Reference (frontend): pubspec.yaml, lib/routes/app_routes.dart

변경 사항:

  • Step 1: 섹션 2 "GNB 주요 탭별 정책" 업데이트

    • 알림 유형: "앱 내 알림함 (앱 푸시는 연내 도입 희망)" → "앱 내 알림함 + FCM 푸시 알림 (구현 완료)" 로 변경
    • 프론트엔드 notification_view.dart에서 확인된 푸시 설정(이벤트/소식 알림, 좋아하는 콘텐츠 알림 토글) 반영
    • 마이 탭 구성: "내가 녹음한 책" 아래 "오디오북" 항목 추가 (프론트엔드 app_routes.dart의 audiobooks 라우트)
  • Step 2: 섹션 3 "구독제 정책" 업데이트

    • "3일 무료 체험" 추가 (백엔드 settings.py: SIGNUP_TRIAL_DAYS=3, users/models.py: is_in_trial property)
    • 구독 일시정지(pause_until), 유예 기간(grace_until) 정책 추가 (백엔드 payments/models.py: Subscription 모델)
    • 해지 시 자동 갱신만 중지, end_date까지 유효 명시 (Subscription.cancel() 메서드)
  • Step 3: 섹션 4 "콘텐츠 정책" 업데이트

    • 언어: "중국어(2025년 12월 도입 예정)" → "향후 계획" 섹션으로 이동 (코드에 중국어 미구현)
    • 실제 지원 언어: ko, en, jp, es (백엔드 parler 설정 + 프론트엔드 app_translation.csv)
  • Step 4: 섹션 6 "유저 데이터 및 계정 정책" 업데이트

    • 탈퇴 사유 추적 추가 (User.deletion_reason)
    • Soft delete 방식 명시 (SafeDeleteModel)
    • 보호자 설정: "??? 필요 여부 논의해야함" → 프론트엔드에 birth_year 입력 구현됨, 연령 인증(14세 이상) 구현됨 명시
  • Step 5: 섹션 8 "기기 및 플랫폼 정책" 수정

    • "1계정당 1기기 (동시 접속 차단)" → "1계정당 최대 2기기 (MAX_ACTIVE_DEVICES=2)" 수정 (settings.py 확인)
  • Step 6: 새 섹션 추가 - "프로모코드 및 레퍼럴 정책 개요"

    • 프로모코드 유형: corporate, influencer, referral (PromoCode.type)
    • 레퍼럴 시스템 개요: 추천인/피추천인 보상 (ReferralReward)
    • 파트너 프로모션 개요 (PartnerPromotion)
    • 상세 정책 링크: 04_결제_정책/03_프로모코드_레퍼럴_정책.md
  • Step 7: 새 섹션 추가 - "고객지원 정책 개요"

    • FAQ, 문의, 공지사항 개요 (support 앱)
    • 상세 정책 링크: 07_고객지원_정책/01_고객지원_정책.md
  • Step 8: 새 섹션 추가 - "블로그 시스템 개요"

    • 다국어 블로그 포스트, 카테고리, 태그 (blog 앱)
    • 상세 정책 링크: 08_블로그_정책/01_블로그_정책.md
  • Step 9: 향후 계획 섹션 정리

    • 중국어 지원
    • 가로형 도서 (2026년)
    • 보호자 PIN 인증
    • 커뮤니티/댓글 기능

Task 2: 00_개요/02_용어집.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/00_개요/02_용어집.md
  • Reference: promocodes/models.py, support/models.py, blog/models.py, payments/models.py

변경 사항:

  • Step 1: 기존 용어 보존 (시리즈, 작품, 에피소드, 캐릭터, 스티커)

  • Step 2: 새 용어 추가

    • 프로모코드 (PromoCode): 할인 또는 보너스 구독 기간을 제공하는 코드. 유형: 기업(corporate), 인플루언서(influencer), 레퍼럴(referral)
    • 레퍼럴 코드 (ReferralCode): 기존 구독자가 생성하여 신규 사용자를 초대하는 고유 코드
    • 레퍼럴 보상 (ReferralReward): 레퍼럴을 통해 추천인과 피추천인 모두에게 지급되는 보너스 구독 기간
    • 구독 (Subscription): 월간/6개월/연간 단위의 유료 콘텐츠 이용권. 상태: active, cancelled, paused, expired
    • 무료 체험 (Free Trial): 신규 가입 시 제공되는 3일간의 무료 구독 기간
    • 큐레이션 (Curation): 테마 또는 컬렉션 기반으로 운영자가 구성한 도서 묶음
    • 배너 (Banner): 홈 화면 상단에 노출되는 프로모션/안내용 이미지 카드
    • FAQ: 자주 묻는 질문. 카테고리: account, payment, content, technical, other
    • 문의 (Inquiry): 사용자가 앱 내에서 제출하는 고객 지원 요청. 유형: bug, payment, content, account, suggestion, other
    • 공지사항 (Announcement): 운영자가 발행하는 다국어 공지
    • 블로그 포스트 (Post): 다국어 블로그 글. 상태: draft, published, archived
    • 파트너 프로모션 (PartnerPromotion): 외부 파트너를 위한 전용 프로모션 링크 및 랜딩 페이지
    • 푸시 알림 (Push Notification): FCM을 통해 사용자 기기에 전송되는 외부 알림
    • 스티커 캠페인 (StickerCampaign): 이벤트와 연계하여 특정 스티커의 노출 우선순위를 높이는 캠페인
    • 일러스트레이터 (Illustrator): 도서의 그림 작가. 다국어 이름 지원

Task 3: 01_사용자_정책/01_로그인_정책.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/01_로그인_정책.md
  • Reference (backend): users/models.py (User, LoginHistory), users/urls.py, users/views.py
  • Reference (frontend): login_view.dart, login_controller.dart, age_gate_view.dart

변경 사항:

  • Step 1: 로그인 방식 테이블 업데이트

    • Facebook: "이외 국가" → "이외 계약 국가에서 노출" (코드 확인: flutter_facebook_auth 의존성)
    • LINE: "일본 전용" → "일본/태국/대만" (프론트엔드 login_view.dart: LineRegion 처리)
  • Step 2: 로그인/회원가입 플로우 상세화

    • 연령 인증 추가: 14세 이상 확인 (age_gate_controller.dart: 4자리 출생연도 입력 → 14세 이상 검증)
    • 약관 동의 순서 명시 (login_controller.dart: 연령 인증 → 약관 동의 → 소셜 로그인)
    • 게스트 모드 추가: "비회원으로 둘러보기" 버튼 (login_view.dart: Guest mode)
  • Step 3: 인증 및 보안 업데이트

    • JWT 인증 상세: Access Token 1일, Refresh Token 7일 (settings.py)
    • Rate Limiting: 로그인 15회/분, 회원가입 9회/시간 (settings.py: DEFAULT_THROTTLE_RATES)
    • 다른 기기 로그인 시 기존 세션 종료 ("logged_in_elsewhere" 감지, dio_client.dart)
    • 로그인 이력 추적 (LoginHistory 모델: login_type, ip_address, user_agent, device)
  • Step 4: 지역별 소셜 로그인 노출 정책 업데이트

    • 일본 → LINE 우선 표시 순서 반영 (login_view.dart: LineRegion에서 LINE → Apple → Google → Kakao 순)
    • 한국 → Kakao 우선 표시 순서 반영 (login_view.dart: Kakao → Apple → Google → LINE 순)
    • Apple 버튼: iOS에서만 노출 (login_view.dart 조건부 렌더링)
  • Step 5: 기타 정책 업데이트

    • "최근 로그인 방식 기억" 구현 확인 (login_controller.dart: SharedPreferences에 마지막 로그인 방식 저장)
    • "탈퇴 후 7일간 재가입 불가" → 코드에서 403 에러로 처리 확인 (login_controller.dart: re-signup restriction)
    • placeholder email 생성 정책 추가 (UserManager.build_placeholder_email: 소셜 로그인 시 이메일 미제공 시 {provider}_{social_id}@placeholder.penta.pics 형식)

Task 4: 01_사용자_정책/02_온보딩_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/02_온보딩_정책.md
  • Reference (frontend): splash_view.dart, onboarding_view.dart, onboarding_controller.dart, age_gate_view.dart, select_map_view.dart, onboarding_info_view.dart

내용:

  • Step 1: 스플래시 화면 정책 작성

    • 앱 실행 시 별 로고 애니메이션 (scale: 1.10 → 0.85 → 6.84)
    • 병렬 처리: 애니메이션 + 데이터 로딩 (Future.wait)
    • 앱 업데이트 체크: 강제 업데이트(취소 불가) vs 선택 업데이트
    • 네비게이션 로직: 토큰 존재 → 홈, 토큰 없음 + 온보딩 완료 → 로그인, 그 외 → 온보딩
  • Step 2: 온보딩 화면 정책 작성

    • 4페이지 PageView (전체 화면 이미지 배경)
    • 언어별 온보딩 이미지 (KO/EN/JP/ES)
    • 건너뛰기 버튼 (마지막 페이지에서 숨김, 블러 효과)
    • 마지막 페이지 동적 버튼 텍스트 ("3日無制限" 등)
    • 완료 후 hasSeenOnboarding 플래그 저장 → 로그인 화면 이동
  • Step 3: 연령 인증(Age Gate) 정책 작성

    • 4자리 출생연도 입력 (숫자 키패드 UI)
    • 14세 이상 확인 (현재 연도 - 출생연도)
    • 미달 시 에러 토스트, 진행 불가
    • 로그인 플로우 전에 실행
  • Step 4: 지역 선택(Select Map) 정책 작성

    • 지역 선택 화면 (모바일/태블릿 반응형)
    • Disney/Pixar 배너
    • K-Storybook, J-Storybook "Coming Soon" 버튼
    • 태블릿 가로 레이아웃 지원
  • Step 5: 온보딩 정보 입력 정책 작성

    • 독서 대상 연령 선택 (연령 피커)
    • "지금은 아니에요" 옵션으로 건너뛰기 가능

Task 5: 01_사용자_정책/03_비로그인_비구독_화면_정책.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/03_비로그인_비구독_화면_정책.md
  • Reference (frontend): viewer_view.dart (gradient overlay at 95%+ progress), subscription_service.dart, iap_service.dart

변경 사항:

  • Step 1: 비로그인 사용자 정책 업데이트

    • 게스트 모드 추가: 로그인 없이 앱 탐색 가능 (login_view.dart: Guest mode)
    • 게스트 모드에서의 기능 제한 명시
  • Step 2: 비구독자 정책 업데이트

    • 뷰어 제한 구현 상세: 95% 이상 스크롤 시 그라데이션 오버레이 + 구독 유도 (viewer_view.dart: SubscriptionGateManager)
    • 3일 무료 체험 언급 추가: 신규 가입자는 3일간 전체 기능 이용 가능
    • "최근 본 콘텐츠 ❌ 불가" → 실제로는 비구독자도 읽기 기록 저장됨 (ReadingHistory 모델에 구독 조건 없음) - 확인 필요
  • Step 3: 구독 전환 유도 위치 업데이트

    • 구독 팝업 컴포넌트 추가 (components/subscription_popup.dart)
    • 이벤트 상세에서의 구독 유도 (Event.target_audience: non_subscribers)

Task 6: 01_사용자_정책/04_접속_기기_관리_정책.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/04_접속_기기_관리_정책.md
  • Reference (backend): users/models.py (UserDevice), penta_backend/settings.py (MAX_ACTIVE_DEVICES)

변경 사항:

  • Step 1: 기기 정보 상세 추가

    • 수집 정보: device_id, device_type (ios/android), device_model, app_version, timezone (UserDevice 모델)
    • FCM 토큰 관리: 기기별 fcm_token 저장, push_enabled 플래그 (UserDevice 모델)
    • 마지막 활동 추적: last_active 타임스탬프
  • Step 2: 기기 등록 API 명시

    • 기기 등록: POST /api/users/devices/register/
    • 기기 목록: GET /api/users/devices/
    • 다른 기기 로그인 시 "logged_in_elsewhere" 감지 후 자동 로그아웃 (dio_client.dart)

Task 7: 01_사용자_정책/05_계정_관리_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/05_계정_관리_정책.md
  • Reference (backend): users/models.py, users/urls.py
  • Reference (frontend): lib/features/profile/

내용:

  • Step 1: 프로필 관리 정책 작성

    • 프로필 조회/수정: GET/PATCH /api/users/profile/
    • 수정 가능 항목: nickname, birth_year, app_language, viewer_languages
    • 프로필 요약: GET /api/users/profile-summary/ (독서 통계)
  • Step 2: 설정 관리 정책 작성

    • 사용자 설정: GET/PATCH /api/users/settings/
    • 알림 설정: push_notification_enabled, notification_marketing, notification_bookmark
    • 언어 설정: app_language (UI 언어), viewer_languages (독서 언어 JSON 배열)
  • Step 3: 계정 탈퇴 정책 작성

    • 탈퇴 API: POST /api/users/delete-account/
    • Soft Delete 방식 (SafeDeleteModel): 실제 데이터 삭제 대신 숨김 처리
    • 탈퇴 사유 수집 (User.deletion_reason)
    • 데이터 보관: 30일간 보관 후 완전 삭제
    • 탈퇴 후 7일간 재가입 불가
  • Step 4: 앱 리뷰 요청 정책 작성

    • 리뷰 적격성 확인: GET /api/users/review-eligibility/
    • 리뷰 요청 기록: POST /api/users/review-requested/
    • 기기별 리뷰 요청 추적 (ReviewRequestLog)

Chunk 2: 화면 정책 (02)

Task 8: 02_화면_정책/01_홈.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/01_홈.md
  • Reference (backend): home/models.py, home/urls.py, books/models.py
  • Reference (frontend): lib/features/content/catalog/home/

변경 사항:

  • Step 1: 필터 동작 정책 업데이트

    • HomeFilter 모델 기반으로 필터 유형 명시: tab(디즈니/픽사), series(시리즈), reading_level(읽기단계)
    • 필터 코드 체계: AGE_0_3, AGE_4_7, AGE_8_10, LEX_400_600, TAB_DISNEY, TAB_PIXAR 등 (HomeFilter.code)
    • API: GET /api/home/filters/
  • Step 2: 배너 정책 업데이트

    • Banner 모델 상세: 다국어(title, image_url, link_url), target_type, content_id, curation_id
    • 링크 유형: book, external, none, collection (Banner.link_type)
    • 콘텐츠 유형: book, event, collection (Banner.content_type)
    • 활성 기간: start_date ~ end_date, sequence 순서
    • API: GET /api/home/banners/
  • Step 3: 랭킹 정책 업데이트

    • RealtimeRanking 모델: 국가별/시간별 순위 (rank 1-10)
    • rank_change 속성: new/up/down/same, rank_change_value
    • previous_rank 추적
    • API: GET /api/home/rankings/
  • Step 4: 큐레이션 정책 업데이트

    • Curation 모델: curation_type (theme, collection)
    • CurationItem: 큐레이션-도서 관계, display_order
    • API: GET /api/home/curations/<id>/
  • Step 5: 종합 홈 API 명시

    • ComprehensiveHomeView: GET /api/home/ - 필터, 배너, 랭킹, 큐레이션 통합 응답

Task 9: 02_화면_정책/02_인기.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/02_인기.md
  • Reference (backend): stickers/models.py, stickers/urls.py

변경 사항:

  • Step 1: 인기 스티커 정책 코드 기반 업데이트

    • 스코어링 공식: base_score = new(+3) + campaign(+2) + yesterday_exposed(-1) + popularity(+0.1*collectors) (Sticker.base_score)
    • StickersPopular 모델: period (daily, weekly, monthly, all-time), country별 랭킹
    • API: GET /api/stickers/popular/
    • 디버그: GET /api/stickers/popular/debug/<id>/
  • Step 2: 나만 없는 스티커 정책 업데이트

    • StickersMissing 모델: user별 position 기반 정렬
    • StickerExposure: 노출 추적 (exposure_type: popular/missing), 노출 시 -2 패널티
    • API: GET /api/stickers/missing/
  • Step 3: 공개 예정 스티커 정책 업데이트

    • StickersUpcoming 모델: release_date, is_featured, position
    • StickerWishlist: 사용자 위시리스트 추가/삭제
    • API: GET /api/stickers/upcoming/, POST/DELETE /api/stickers/wishlist/
  • Step 4: 스티커 캠페인 추가

    • StickerCampaign: event 연계, campaign_name, priority_boost(기본 +2), start_date~end_date
    • 캠페인 활성 시 스티커 스코어에 priority_boost 가산
  • Step 5: 스티커 통계 추가

    • StickerStats: total_collectors, daily/weekly/monthly_collectors
    • API: GET /api/stickers/stats/

Task 10: 02_화면_정책/03_검색.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/03_검색.md
  • Reference (backend): books/urls.py (search endpoint), books/views.py

변경 사항:

  • Step 1: 검색 API 명시
    • 검색 엔드포인트: GET /api/books/search/
    • Rate Limiting: 90회/분 (settings.py: search throttle)
    • 기존 정책 내용은 대부분 유효 - 보존

Task 11: 02_화면_정책/04_마이페이지.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/04_마이페이지.md
  • Reference (backend): users/urls.py, users/book_views.py
  • Reference (frontend): lib/features/profile/

변경 사항:

  • Step 1: 1뎁스 항목 업데이트

    • "최근 읽은 책" API: GET /api/users/recent-books/
    • "읽는 중인 책" 추가: GET /api/users/books-in-progress/
    • "완독한 책" 추가: GET /api/users/completed-books/
    • "나의 북마크" API: GET /api/users/bookmarks/, 삭제: DELETE /api/users/bookmarks/<book_id>/, 상태 확인: GET /api/users/bookmarks/status/<book_id>/
    • "내가 녹음한 책" API: GET /api/users/recordings/, 삭제: DELETE /api/users/recordings/<pk>/
    • "오디오북" 섹션 추가 (프론트엔드 audiobooks 라우트)
  • Step 2: 설정 메뉴 업데이트

    • 고객센터/문의하기 → GET /api/support/faq/, POST /api/support/inquiries/
    • 초대하기(레퍼럴) 추가 (프론트엔드 invitation 라우트)
    • 구독 관리 상세: 구독 상태, 유형, 만료일, 해지 가능 여부

Task 12: 02_화면_정책/05_작품상세.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/05_작품상세.md
  • Reference (backend): books/models.py, books/urls.py

변경 사항:

  • Step 1: 메타 정보 업데이트

    • Book 모델 필드 기반: brand(Disney/Pixar), status(ongoing/completed/hiatus), book_code
    • age_filters (M2M), lexile_filter (1:1)
    • 일러스트레이터 분리: illustrators (M2M, TranslatableModel)
    • API: GET /api/books/<id>/
  • Step 2: 추천 콘텐츠 API 명시

    • GET /api/books/<id>/recommendations/
    • 읽기 진행도: GET /api/books/<id>/reading-progress/
  • Step 3: 에피소드 API 명시

    • GET /api/books/<book_id>/episodes/<pk>/
    • 에피소드별 녹음: GET /api/books/<book_id>/episodes/<episode_id>/recordings/
    • 에피소드별 진행도: GET/PATCH /api/books/<book_id>/episodes/<episode_id>/progress/

Task 13: 02_화면_정책/06_뷰어.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/02_화면_정책/06_뷰어.md
  • Reference (frontend): viewer_view.dart, viewer_binding.dart

변경 사항:

  • Step 1: 뷰어 아키텍처 명시

    • ViewerBinding 구조: ViewerDataService, ViewerScrollManager, ViewerUIStateManager, ViewerSettingsManager, EpisodeRewardManager, SubscriptionGateManager
    • 태그 기반 멀티 인스턴스 관리 (bookId/episodeId)
  • Step 2: 구독 게이트 상세화

    • 비구독자 95%+ 스크롤 시 그라데이션 오버레이 (SubscriptionGateManager)
    • 오디오/녹음/듣기 다이얼로그 추가
  • Step 3: 녹음 기능 상세 업데이트

    • 녹음 저장: 서버 업로드 구현 완료 (Recording 모델: user + book + episode + language_code, file_url, duration)
    • FFmpeg 활용 오디오 트리밍
    • 노이즈 미터 (녹음 품질 모니터링)
    • "기기/서버 업로드 여부 별도 정책 필요" → "서버 업로드 방식으로 구현 완료" 수정

Chunk 3: 콘텐츠 및 결제 정책 (03, 04)

Task 14: 03_콘텐츠_정책/01_콘텐츠_정책.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/03_콘텐츠_정책/01_콘텐츠_정책.md
  • Reference (backend): books/models.py

변경 사항:

  • Step 1: 작품 정보 업데이트

    • Book 모델 다국어 필드: title, author, illustrator, publisher, synopsis, cover_url, content_url, published_date, is_new
    • Character (TranslatableModel): brand(Disney/Pixar) 구분
    • BookSeries (TranslatableModel): 시리즈 그룹핑
    • DailyStat: views, completions, bookmarks, stickers_earned (일별 통계)
  • Step 2: 에피소드 정보 업데이트

    • Episode 다국어 필드: title, pages (JSON 배열 - 페이지 URL 목록)
    • episode_number (book 내 유니크)
    • views 카운터
  • Step 3: 읽기 진행도 상세화

    • ReadingHistory 모델: last_page, total_pages, progress_percentage, reading_time(초), is_completed
    • started_at, last_read_at, completed_at 타임스탬프
    • Unique constraint: user + book + episode
  • Step 4: 녹음 정보 업데이트

    • Recording 모델: language_code, file_url, duration
    • Unique: user + book + episode + language_code
    • 서버 저장 방식으로 구현 완료 명시

Task 15: 03_콘텐츠_정책/02_스티커_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/03_콘텐츠_정책/02_스티커_정책.md
  • Reference (backend): stickers/models.py, stickers/urls.py

내용:

  • Step 1: 스티커 기본 정책 작성

    • Sticker 모델: episode 1:1 관계, 다국어 name, image_url
    • 획득: POST /api/stickers/earn/<episode_id>/
    • 사용자 스티커: GET /api/stickers/
  • Step 2: 스코어링 시스템 작성

    • base_score 계산: 신규(+3) + 캠페인(+2) + 전일 노출(-1) + 인기도(+0.1 * collectors)
    • score_updated_at 갱신 시점
    • StickerStats: total/daily/weekly/monthly collectors
  • Step 3: 인기/미보유/예정/위시리스트 정책 작성

    • StickersPopular: period(daily/weekly/monthly/all-time), country별
    • StickersMissing: 사용자별 미보유 스티커, position 정렬
    • StickersUpcoming: release_date, is_featured
    • StickerWishlist: 예정 스티커 찜하기
  • Step 4: 노출 추적 및 캠페인 작성

    • StickerExposure: exposure_type(popular/missing), exposed_at, 노출 시 -2 패널티
    • StickerCampaign: event 연계, priority_boost, start_date~end_date

Task 16: 03_콘텐츠_정책/03_녹음_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/03_콘텐츠_정책/03_녹음_정책.md
  • Reference (backend): books/models.py (Recording)
  • Reference (frontend): lib/features/content/viewer/recording/, lib/features/content/viewer/audio/

내용:

  • Step 1: 녹음 기본 정책 작성

    • 최대 녹음 시간: 30분
    • 작품 × 에피소드 × 언어별 1개 녹음 (Unique: user + book + episode + language_code)
    • 저장 방식: S3 서버 업로드 (file_url)
    • 지원 형식: FFmpeg 기반 오디오 처리
  • Step 2: 녹음 UI/UX 정책 작성

    • 뷰어 내 읽기/녹음 모드 토글
    • 녹음 상태창: 녹음/일시정지/재생/완료/나가기
    • 노이즈 미터 (녹음 품질 시각화)
    • 녹음 중 언어 전환 비활성화
    • 완료 후 플레이어 모드 전환
  • Step 3: 녹음 관리 정책 작성

    • 목록 조회: GET /api/users/recordings/
    • 에피소드별 녹음: GET /api/books/<book_id>/episodes/<episode_id>/recordings/
    • 삭제: DELETE /api/users/recordings/<pk>/
    • 마이페이지 > 오디오북에서 관리

Task 17: 04_결제_정책/ 디렉토리 생성 및 기존 파일 이동

Files:

  • Create directory: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/04_결제_정책/

  • Delete: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/01_사용자_정책/04_결제_및_재화_소모_정책.md (내용을 새 파일들로 분리)

  • Step 1: 디렉토리 생성

    mkdir -p "/home/ubuntu/바탕화면/penta-doc/docs/정책문서/04_결제_정책/"
  • Step 2: 기존 결제 정책 파일 삭제

    • 기존 01_사용자_정책/04_결제_및_재화_소모_정책.md의 유효 내용은 새 파일들에 반영

Task 18: 04_결제_정책/01_구독_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/04_결제_정책/01_구독_정책.md
  • Reference (backend): payments/models.py (Subscription)

내용:

  • Step 1: 구독 유형 및 가격 정책 작성

    • 구독 유형: 1_month, 6_month, 12_month
    • 가격: 한국 월 9,800원, 일본 월 980엔 (기존 정책 유지)
    • 할인: 6개월 15%, 12개월 25% (기존 정책 유지)
  • Step 2: 무료 체험 정책 작성

    • 3일 무료 체험 (SIGNUP_TRIAL_DAYS=3)
    • 대상: 신규 가입자 (has_subscribed_before=False)
    • is_in_trial 속성으로 체험 상태 확인
    • 체험 기간 중 모든 구독자 기능 이용 가능
  • Step 3: 구독 상태 관리 정책 작성

    • 상태: active, cancelled, paused, expired (Subscription.status property)
    • end_date가 구독 유효성의 기본 진실 (is_active property)
    • 자동 갱신: auto_renew, next_billing_date
    • 해지: is_cancelled=True, auto_renew 중지, end_date까지 유효
    • 일시정지: pause_until 날짜 설정
    • 유예 기간: grace_until (결제 실패 시)
    • 해지 위약금 면제 조건: can_cancel_without_penalty property
  • Step 4: 구독 API 명시

    • 구독 생성: POST /api/payments/subscribe/
    • 구독 조회/수정: GET/PATCH /api/payments/subscription/
    • 구독 해지: POST /api/payments/subscription/cancel/
    • 구독 이력: GET /api/payments/subscription-history/
    • 구독 오퍼: GET /api/payments/subscription-offers/

Task 19: 04_결제_정책/02_결제_연동_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/04_결제_정책/02_결제_연동_정책.md
  • Reference (backend): payments/models.py (AppStoreTransaction, GooglePlayReceipt, RefundRequest, PaymentTransaction), payments/urls.py
  • Reference (frontend): iap_service.dart

내용:

  • Step 1: Apple App Store 연동 정책 작성

    • AppStoreTransaction 모델: transaction_id, original_transaction_id, product_id
    • purchase_date, expires_date, price_amount, price_currency
    • auto_renew_status, is_trial_period, is_in_intro_offer_period
    • ownership_type: PURCHASED, FAMILY_SHARED
    • Apple Server Notifications V2 웹훅: POST /api/payments/apple/notifications/
    • JWS 서명 검증
  • Step 2: Google Play 연동 정책 작성

    • GooglePlayReceipt 모델: latest_order_id, purchase_token, linked_purchase_token
    • subscription_state, acknowledgement_state
    • price_amount_micros, currency_code, region_code
    • product_id, base_plan_id, offer_id, offer_tags
    • RTDN Pub/Sub 웹훅: POST /api/payments/rtdn/pubsub/
    • Google Play 관리: POST /api/payments/google-play/manage/ (Acknowledge, Refund, Revoke)
  • Step 3: 결제 검증 정책 작성

    • 결제 검증: POST /api/payments/verify/
    • Rate Limiting: 30회/분 (payment_verify throttle)
    • PaymentTransaction: type(subscription/renewal/refund/cancellation), status(pending/completed/failed/refunded)
    • 프론트엔드: appAccountToken 생성 (UUID v5 for users, device ID for guests)
  • Step 4: 환불 정책 작성 (기존 내용 통합)

    • RefundRequest 모델: status, refund_type(full/partial/subscription_cancel), reason
    • 환불 요청: POST /api/payments/refund-request/
    • 환불 처리 (admin): POST /api/payments/refund-process/
    • iOS/Android 플랫폼별 환불 정책 (기존 문서 내용 유지)
    • 결제 이력: GET /api/payments/history/

Task 20: 04_결제_정책/03_프로모코드_레퍼럴_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/04_결제_정책/03_프로모코드_레퍼럴_정책.md
  • Reference (backend): promocodes/models.py, promocodes/urls.py

내용:

  • Step 1: 프로모코드 정책 작성

    • PromoCode 모델: code, type(corporate/influencer/referral), name, description
    • bonus_weeks, max_uses, current_uses, one_time_only, new_users_only
    • valid_from~valid_until, is_active
    • subscription_types (JSON): 적용 가능한 구독 유형 제한
    • offer_mapping, discount_mapping, ios_offer_code: 플랫폼별 오퍼 매핑
    • 다국어 banner_text
    • 사용 조건: can_be_used_by_user() 메서드 로직
    • 적용: apply_to_subscription() 메서드
    • API: POST /api/promocodes/apply/, GET /api/promocodes/applied/, DELETE /api/promocodes/applied/clear/
  • Step 2: 레퍼럴 시스템 정책 작성

    • ReferralCode: referrer(사용자) → promo_code(1:1 연결)
    • total_referrals, successful_referrals 추적
    • ReferralReward: reward_type(referrer/referee), bonus_weeks
    • 상태: pending → applied → revoked
    • 최소 유지 기간: referral_minimum_period_days (기본 14일)
    • 조기 해지 시 보상 회수: revoke() 메서드, revoke_reason 기록
    • is_referral_stackable: 다른 프로모코드와 중복 가능 여부
    • API: POST /api/promocodes/referral/create/, GET /api/promocodes/referral/my-stats/, GET /api/promocodes/referral/my-benefits/, GET /api/promocodes/referral/rewards/
  • Step 3: 파트너 프로모션 정책 작성

    • PartnerPromotion: code(숏코드), partner_name, landing_page
    • custom_message, custom_image_url
    • 통계: total_clicks, total_conversions, total_views, conversion_rate
    • 웹 리다이렉트: /r/<code>/ → 앱 딥링크 또는 랜딩 페이지
    • 초대 링크: /invite/<code>/ → 앱 딥링크
    • PromoCodeClick: UTM 파라미터(source, medium, campaign, term, content), device_type, os, browser 추적
    • API: GET /api/promocodes/analytics/<partner_code>/ (관리자 전용)
  • Step 4: 결제 시 프로모코드 플로우 작성

    • AppliedPromoCode: 사용자당 1개 임시 적용 (OneToOneField)
    • expires_at: 만료 시간
    • 플로우: 프로모 적용 → IAP 결제 → 서버 검증 시 프로모 반영 → PromoCodeUsage 기록
    • PromoCodeUsage: applied_bonus_weeks, ip_address, user_agent 추적

Chunk 4: 알림, 이벤트, 고객지원, 블로그 정책 (05, 06, 07, 08)

Task 21: 05_알림_정책/ 디렉토리 생성

  • Step 1: 디렉토리 및 기존 파일 처리
    mkdir -p "/home/ubuntu/바탕화면/penta-doc/docs/정책문서/05_알림_정책/"
    • 기존 03_콘텐츠_정책/02_알림_정책.md 삭제 (내용을 새 파일들로 분리)

Task 22: 05_알림_정책/01_인앱_알림_정책.md 재작성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/05_알림_정책/01_인앱_알림_정책.md
  • Reference (backend): notifications/models.py, notifications/urls.py

내용:

  • Step 1: 알림 모델 기반 재작성

    • Notification (TranslatableModel): type(user_content/penta_news), subtype, action_type, target_id
    • subtype 종류: sticker_release, inquiry_response, feature_update, brand_news, event_promotion
    • action_type 종류: book_detail, event_news, event_event, inquiry_detail
    • 다국어: title, message
    • UserNotification: is_read, received_at
    • 기존 알림 유형(유저 소식/팬타 소식) 정책 보존
  • Step 2: 알림 API 명시

    • 목록: GET /api/notifications/
    • 읽음 처리: POST /api/notifications/mark-read/
    • 전체 읽음: POST /api/notifications/mark-all-read/
    • 미읽음 수: GET /api/notifications/unread-count/
    • 레드닷: GET /api/notifications/red-dot/
  • Step 3: 문의 응답 알림 추가

    • subtype: inquiry_response → 문의에 관리자 응답 시 자동 알림
    • action_type: inquiry_detail → 문의 상세로 이동

Task 23: 05_알림_정책/02_푸시_알림_정책.md 신규 생성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/05_알림_정책/02_푸시_알림_정책.md
  • Reference (backend): notifications/models.py (PushMessageTemplate, PushLog)
  • Reference (frontend): notification_view.dart, main.dart

내용:

  • Step 1: 푸시 알림 인프라 작성

    • Firebase Cloud Messaging (FCM) 기반
    • 기기별 FCM 토큰 관리 (UserDevice.fcm_token)
    • 사용자 설정: push_notification_enabled, notification_marketing, notification_bookmark
  • Step 2: 푸시 유형 및 템플릿 작성

    • PushMessageTemplate (TranslatableModel): push_type, 다국어 title/body
    • push_type 종류:
      • trial_reminder: 체험 기간 만료 알림
      • sticker_release: 새 스티커 출시
      • weekly_update: 주간 업데이트
      • inactive_routine: 비활성 사용자 재참여 유도
      • brand_news: 브랜드 소식
      • event_promotion: 이벤트 프로모션
      • feature_update: 기능 업데이트
  • Step 3: 푸시 발송 및 로깅 작성

    • PushLog: user, push_type, template, sent_at, status(success/failed)
    • 관리자 발송: /qth56szk7i/send-push/ (admin 전용)
    • 사용자 설정에 따른 수신 필터링
  • Step 4: 프론트엔드 푸시 처리 작성

    • 포그라운드/백그라운드 메시지 처리 (main.dart)
    • 딥링크 연동: 푸시 클릭 → 해당 화면 이동
    • 알림 설정 UI: 이벤트/소식 알림 토글, 좋아하는 콘텐츠 알림 토글

Task 24: 06_이벤트_뉴스_정책/ 디렉토리 생성 및 재작성

Files:

  • Create directory: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/06_이벤트_뉴스_정책/
  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/06_이벤트_뉴스_정책/01_이벤트_뉴스_정책.md
  • Delete: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/03_콘텐츠_정책/03_이벤트_정책.md (새 파일로 대체)
  • Reference (backend): events/models.py, events/urls.py

내용:

  • Step 1: Event 모델 기반 재작성

    • Event (TranslatableModel): type(event/news)
    • 다국어: title, content, subtitle, body, notes(JSON), hero_image_url, button_text
    • button_action: subscribe, external_link, deeplink, none
    • button_action_value, button_color
    • target_audience: all, guests, new_users, non_subscribers, subscribers
    • start_date~end_date, sequence, is_active
    • is_ongoing property
  • Step 2: 이벤트 참여 정책 작성

    • EventParticipation: user + event(유니크), participated_at, completed, completed_at
    • API: POST /api/events-news/participate/
  • Step 3: API 명시

    • 목록: GET /api/events-news/
    • 상세: GET /api/events-news/<id>/
  • Step 4: 기존 유효 정책 통합

    • 이벤트/소식 탭 구조, 정렬, 기간 정책 등 기존 내용 유지
    • 타겟 오디언스 기능 추가 (기존 문서에 없던 기능)
    • 버튼 액션 기능 추가 (구독 유도, 외부 링크, 딥링크)

Task 25: 07_고객지원_정책/01_고객지원_정책.md 신규 생성

Files:

  • Create directory: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/07_고객지원_정책/
  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/07_고객지원_정책/01_고객지원_정책.md
  • Reference (backend): support/models.py, support/urls.py

내용:

  • Step 1: FAQ 정책 작성

    • FAQ (TranslatableModel): 다국어 question/answer
    • 카테고리: account, payment, content, technical, other
    • order 기반 정렬, is_active 필터
    • API: GET /api/support/faq/, GET /api/support/faq/<id>/
  • Step 2: 문의 정책 작성

    • Inquiry: user, type(bug/payment/content/account/suggestion/other)
    • subject, message
    • status: pending → in_progress → resolved / closed
    • admin_response, responded_at
    • API: POST /api/support/inquiries/ (생성), GET /api/support/inquiries/ (내 문의 목록), GET /api/support/inquiries/<id>/ (상세)
  • Step 3: 공지사항 정책 작성

    • Announcement (TranslatableModel): 다국어 title/content
    • is_active, published_at
    • API: GET /api/support/announcements/, GET /api/support/announcements/<id>/

Task 26: 08_블로그_정책/01_블로그_정책.md 신규 생성

Files:

  • Create directory: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/08_블로그_정책/
  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/08_블로그_정책/01_블로그_정책.md
  • Reference (backend): blog/models.py, blog/urls.py (api_urls + staff_urls)

내용:

  • Step 1: 포스트 정책 작성

    • Post (TranslatableModel): 다국어 title, excerpt, content(HTML/Markdown), meta_title, meta_description
    • slug(유니크), author, category, tags(M2M)
    • status: draft → published → archived
    • is_featured, thumbnail, views
    • SEO: meta_title, meta_description per language
  • Step 2: 카테고리 및 태그 정책 작성

    • Category (TranslatableModel): 다국어 name/description, slug, display_order
    • Tag (TranslatableModel): 다국어 name, slug, post_count(캐시)
  • Step 3: 이미지 및 조회수 정책 작성

    • BlogImage: post 연결, WebP 변환, auto-numbering
    • PostView: anti-abuse (IP + session 기반 1시간 쿨다운)
  • Step 4: API 명시

    • Public API: GET /api/blog/posts/, GET /api/blog/posts/<id>/, GET /api/blog/categories/, GET /api/blog/tags/
    • Staff UI: /blog/staff/ (목록, 생성, 편집, 미리보기, 삭제)

Chunk 5: 데이터베이스, 개발 문서, TODO (09, 개발, TODO)

Task 27: 09_데이터베이스/01_DB_스키마.md 전면 재작성

Files:

  • Create: /home/ubuntu/바탕화면/penta-doc/docs/정책문서/09_데이터베이스/01_DB_스키마.md
  • Delete: 기존 3개 파일 (01_DB_스키마_스토리.md, 02_DB_스키마_목표.md, 03_DB_스키마_단순화.md)
  • Reference: 모든 models.py 파일

내용:

  • Step 1: 사용자 도메인 스키마 작성

    • User, UserDevice, LoginHistory, ReviewRequestLog 테이블
    • 필드, 타입, 제약조건 명시
  • Step 2: 콘텐츠 도메인 스키마 작성

    • Book, BookTranslation, Episode, EpisodeTranslation
    • BookSeries, Character, Illustrator (+ 각 Translation)
    • ReadingHistory, Bookmark, Recording, DailyStat
    • 관계: Book→Series(FK), Book↔Character(M2M), Book↔Illustrator(M2M)
  • Step 3: 홈/배너/큐레이션 스키마 작성

    • HomeFilter, RealtimeRanking, Banner, Curation, CurationItem
  • Step 4: 스티커 도메인 스키마 작성

    • Sticker, UserSticker, StickerStats, StickersPopular, StickersMissing, StickersUpcoming, StickerWishlist, StickerExposure, StickerCampaign
  • Step 5: 결제 도메인 스키마 작성

    • Subscription, PaymentTransaction, AppStoreTransaction, GooglePlayReceipt, RefundRequest
  • Step 6: 프로모코드/레퍼럴 스키마 작성

    • PromoCode, PromoCodeUsage, ReferralCode, AppliedPromoCode, ReferralReward, PartnerPromotion, PromoCodeClick
  • Step 7: 이벤트/알림/지원/블로그 스키마 작성

    • Event, EventParticipation
    • Notification, UserNotification, PushMessageTemplate, PushLog
    • FAQ, Inquiry, Announcement
    • Post, Category, Tag, BlogImage, PostView

Task 28: 개발/API_Documentation.md 전면 재작성

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/개발/API_Documentation.md
  • Reference: 모든 urls.py 파일

내용:

  • Step 1: 인증 API 섹션 재작성

    • JWT 인증: Access Token 1일, Refresh Token 7일
    • 소셜 로그인, 회원가입, 토큰 갱신, 로그아웃
  • Step 2: 사용자 API 섹션 재작성

    • 프로필, 설정, 기기 관리, 북마크, 읽기 이력, 녹음
  • Step 3: 콘텐츠 API 섹션 재작성

    • 도서 목록/상세/검색, 에피소드, 캐릭터, 일러스트레이터
  • Step 4: 홈 API 섹션 재작성

    • 종합 홈, 필터, 랭킹, 배너, 큐레이션
  • Step 5: 결제 API 섹션 재작성

    • 구독, 결제 검증, 환불, Apple/Google 웹훅
  • Step 6: 프로모코드/레퍼럴 API 섹션 추가

    • 프로모 적용, 레퍼럴 생성, 파트너 분석
  • Step 7: 스티커 API 섹션 추가

    • 사용자 스티커, 인기, 미보유, 예정, 위시리스트, 획득
  • Step 8: 이벤트/알림/지원/블로그 API 섹션 추가

    • 이벤트 목록/상세/참여, 알림 목록/읽음/레드닷, FAQ/문의/공지, 블로그
  • Step 9: Rate Limiting 섹션 재작성

    • anon: 300/hour, user: 3000/hour, login: 15/min, register: 9/hour, payment_verify: 30/min, search: 90/min, book_content: 300/min, admin: 1500/hour, sensitive: 90/min

Task 29: 개발/API_Reference_Quick.md 전면 재작성

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/개발/API_Reference_Quick.md

내용:

  • Step 1: 모든 엔드포인트 카테고리별 정리
    • 인증, 사용자, 도서, 홈, 결제, 프로모코드, 스티커, 이벤트, 알림, 지원, 블로그, 업로드, CloudFront
    • 각 엔드포인트: Method, URL, 인증 필요 여부, 간단 설명

Task 30: 개발/Database_Schema.md 전면 재작성

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/개발/Database_Schema.md

내용:

  • Step 1: 09_데이터베이스/01_DB_스키마.md와 동기화
    • 개발자 중심 포맷으로 정리 (테이블명, 컬럼, 타입, 인덱스)
    • ERD 다이어그램 설명 (텍스트 기반)

Task 31: TODO/02_기능_구현_진행상황.md 전면 재작성

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/TODO/02_기능_구현_진행상황.md

내용:

  • Step 1: 구현 완료 기능 업데이트

    • 완료: 홈, 인기, 이벤트/소식, 마이, 뷰어, 설정, 로그인/로그아웃, 스티커 시스템, 알림, 검색
    • 완료 (기존 "미착수"에서 변경): 결제/구독, 다국어 지원, 소셜 로그인, 프로모코드/레퍼럴, 푸시 알림, FAQ/문의/공지, 블로그, 녹음, 비로그인/비구독자 화면
    • 진행중: 듣기/녹음 기능 고도화
  • Step 2: 미구현/향후 계획 정리

    • 중국어 지원
    • 가로형 도서
    • 보호자 PIN 인증
    • 커뮤니티/댓글
    • 검색 자동완성
    • 계정 유형 분리

Task 32: TODO/01_프로젝트_인프라_TODO.md 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/TODO/01_프로젝트_인프라_TODO.md

내용:

  • Step 1: 구현 완료 항목 체크
    • 소셜 로그인 (Kakao, LINE, Google, Apple, Facebook): 완료 체크
    • 결제 시스템 (Google Play, Apple App Store): 완료 체크
    • AWS 인프라: 현재 상태 반영
    • Firebase (Analytics, Crashlytics, FCM): 완료 체크

Task 33: Sidebar 설정 업데이트

Files:

  • Modify: /home/ubuntu/바탕화면/penta-doc/sidebars.ts

내용:

  • Step 1: 새로운 디렉토리 구조 반영
    • 04_결제_정책, 05_알림_정책, 06_이벤트_뉴스_정책, 07_고객지원_정책, 08_블로그_정책, 09_데이터베이스 추가

Task 34: 기존 파일 정리

  • Step 1: 이동/삭제 대상 파일 처리

    • 삭제: 01_사용자_정책/04_결제_및_재화_소모_정책.md (→ 04_결제_정책으로 분리)
    • 삭제: 03_콘텐츠_정책/02_알림_정책.md (→ 05_알림_정책으로 분리)
    • 삭제: 03_콘텐츠_정책/03_이벤트_정책.md (→ 06_이벤트_뉴스_정책으로 분리)
    • 삭제: 04_데이터베이스/01_DB_스키마_스토리.md (→ 09_데이터베이스로 통합)
    • 삭제: 04_데이터베이스/02_DB_스키마_목표.md (→ 09_데이터베이스로 통합)
    • 삭제: 04_데이터베이스/03_DB_스키마_단순화.md (→ 09_데이터베이스로 통합)
    • 기존 04_데이터베이스/ 디렉토리 삭제 (→ 09_데이터베이스/로 이동)
  • Step 2: 문서 내 상호 참조 링크 업데이트

    • 모든 문서의 내부 링크가 새 경로를 가리키도록 수정

실행 순서 (병렬 가능 그룹)

Phase 1 - 기반 작업 (순차):

  • Task 17: 04_결제_정책 디렉토리 생성
  • Task 21: 05_알림_정책 디렉토리 생성
  • Task 24 Step 1: 06_이벤트_뉴스 디렉토리 생성
  • Task 25 Step 1: 07_고객지원 디렉토리 생성
  • Task 26 Step 1: 08_블로그 디렉토리 생성

Phase 2 - 문서 작성 (병렬 가능):

  • Group A: Task 1-7 (개요 + 사용자 정책)
  • Group B: Task 8-13 (화면 정책)
  • Group C: Task 14-20 (콘텐츠 + 결제 정책)
  • Group D: Task 22-26 (알림 + 이벤트 + 지원 + 블로그)
  • Group E: Task 27-32 (DB + 개발 + TODO)

Phase 3 - 마무리 (순차):

  • Task 33: Sidebar 업데이트
  • Task 34: 기존 파일 정리 및 링크 업데이트