정책문서 전면 개편 구현 계획
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 (프론트엔드)
작업 원칙
- 코드가 진실의 원천: 모든 정책 내용은 실제 백엔드 모델/뷰 + 프론트엔드 기능을 근거로 작성
- 기존 유효 정책 보존: 비즈니스 정책(가격, 연령 등)은 기존 문서에서 유지
- 향후 계획 분리: 코드에 없는 미래 계획은 "향후 계획" 섹션으로 명확히 분리
- 언어: 한국어로 작성, 기존 문서 톤/스타일 유지
참조 소스 경로
- 백엔드:
/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() 메서드)
- "3일 무료 체험" 추가 (백엔드
-
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일간 재가입 불가
- 탈퇴 API:
-
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/- 필터, 배너, 랭킹, 큐레이션 통합 응답
- ComprehensiveHomeView:
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 라우트)
- "최근 읽은 책" API:
-
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/(목록, 생성, 편집, 미리보기, 삭제)
- Public API:
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: 기존 파일 정리 및 링크 업데이트