--- description: 정책설계서 - 비즈니스 규칙, 과금, 게임플레이 정책 정의 --- ## User Input ```text $ARGUMENTS ``` User input can be empty (전체) or specific policy category (monetization, gameplay, etc.) ## Overview **논리적 사고 5단계 워크플로우**: ``` 1. /appkit.new → 아이디어 스케치 (어떤 서비스인지?) 2. /appkit.mvp → MVP 범위 정하기 + 랜딩페이지 3. /appkit.ui → 화면설계서 (라우터, 화면, 컴포넌트) 4. /appkit.policy → 정책설계서 (비즈니스 규칙) ← YOU ARE HERE 5. /appkit.visualize → 목업 생성 (HTML 프로토타입) ``` **출력 디렉토리**: `docs/policies` ## Purpose 비즈니스 규칙, 과금 정책, 게임플레이 규칙, 콘텐츠 정책 등을 체계적으로 정의합니다. 개발자가 "이 경우엔 어떻게 해야 하지?"라는 질문에 답할 수 있는 명세를 작성합니다. **정책 코드 체계**: - `MN`: Monetization (과금/결제) - `GM`: Gameplay (게임플레이/서비스 규칙) - `CH`: Character/Content (콘텐츠/캐릭터) - `PR`: Progression (진행/성장) - `CR`: Content Rating (콘텐츠 등급) --- ## Pre-requisite - `/appkit.new`로 서비스 컨셉이 정의되어 있어야 함 - (권장) `/appkit.ui`로 화면설계가 되어 있으면 더 좋음 --- ## Usage ```bash /appkit.policy # 전체 정책 설계 /appkit.policy monetization # 과금 정책만 /appkit.policy gameplay # 게임플레이 정책만 /appkit.policy "예약 취소" # 특정 정책만 ``` --- ## Execution Flow ### 1. 기존 기획 읽기 Read files from `docs/`: - `concept.md` - 서비스 컨셉 - `router.md` - 화면 구조 ### 2. 정책 설계 대화 **Step 1: 정책 카테고리 도출** ```markdown ## 정책 설계 초안 이 서비스에 필요한 정책 카테고리: | 코드 | 카테고리 | 설명 | 예시 | |-----|---------|------|------| | MN | 과금/결제 | 결제, 구독, 포인트 | 채팅권 소모, 구독 혜택 | | GM | 서비스 규칙 | 핵심 기능 규칙 | 예약 규칙, 취소 정책 | | CH | 콘텐츠 | 콘텐츠 관련 정책 | 리뷰 작성 규칙, 신고 | | PR | 진행/성장 | 레벨, 등급 시스템 | 회원 등급, 포인트 적립 | --- 어떤 정책부터 정의할까요? ``` **Step 2: 사용자 피드백** - "전체", "좋아" → 모든 카테고리 생성 - 특정 카테고리 지정 → 해당 카테고리만 생성 ### 3. 생성할 문서들 #### 3-1. 00-policy-index.md (정책 인덱스) **File**: `docs/policies/00-policy-index.md` **템플릿**: `.specify/templates/policy-index.md` 참조 ```markdown # 정책 인덱스 > [서비스명] - 정책 문서 목록 및 화면 매핑 --- ## 정책 문서 목록 | 코드 | 문서 | 설명 | |-----|------|------| | MN | [01-monetization.md](01-monetization.md) | 과금/결제 정책 | | GM | [02-gameplay.md](02-gameplay.md) | 서비스 규칙 | | CH | [03-content.md](03-content.md) | 콘텐츠 정책 | | PR | [04-progression.md](04-progression.md) | 진행/성장 정책 | --- ## 화면별 적용 정책 | 화면 | 경로 | 적용 정책 | |-----|------|----------| | 홈 | `/` | GM-001, MN-001 | | 예약 | `/booking` | GM-002, GM-003, MN-002 | | 결제 | `/payment` | MN-003, MN-004 | | 프로필 | `/profile` | PR-001, PR-002 | --- ## 정책별 적용 화면 (역매핑) ### 과금 정책 (MN) | 정책 ID | 정책명 | 적용 화면 | |---------|-------|----------| | MN-001 | [정책명] | [화면 목록] | | MN-002 | [정책명] | [화면 목록] | ### 서비스 규칙 (GM) | 정책 ID | 정책명 | 적용 화면 | |---------|-------|----------| | GM-001 | [정책명] | [화면 목록] | | GM-002 | [정책명] | [화면 목록] | --- ## 정책 변경 이력 | 날짜 | 정책 ID | 변경 내용 | 영향 화면 | |-----|---------|----------|----------| | YYYY-MM-DD | - | 초기 정책 프레임워크 생성 | 전체 | --- ## 사용법 ### UI 문서에서 정책 참조 ```markdown ## 화면명 ### 적용 정책 - [MN-001] 채팅권 잔액 표시 → 헤더 우측에 배지 형태 - [GM-002] 예약 가능 시간 → 24시간 전까지만 가능 ``` ### 정책 문서에서 UI 영향 명시 ```markdown ## MN-001: 채팅권 잔액 표시 ### UI 영향 | 화면 | 위치 | 표시 방식 | |-----|------|----------| | 홈 | 헤더 우측 | 💬 127 (배지) | ``` ``` #### 3-2. 01-monetization.md (과금 정책) **File**: `/Users/taesupyoon/sideProjects/rovel.ai/docs/appkit/ui/works/policies/01-monetization.md` **템플릿**: `.specify/templates/policy-monetization.md` 참조 ```markdown # 과금 정책 (Monetization) > 코드: `MN` | 결제, 구독, 포인트 관련 정책 --- ## MN-001: [정책명] ### 정책 내용 - [정책 설명 1] - [정책 설명 2] ### UI 영향 | 화면 | 위치 | 표시 방식 | mockup | |-----|------|----------|--------| | [화면] | [위치] | [방식] | [파일명].html | ### 표시 규칙 ``` [상세 규칙 설명] ``` --- ## MN-002: [정책명] ### 정책 내용 - [정책 설명] ### 적용 화면 - `[화면].html` - [용도] ### UI 표시 ``` [UI 표시 예시] ``` --- ## MN-003: [정책명] ### 정책 내용 | 항목 | 값 | 설명 | |-----|-----|------| | [항목1] | [값] | [설명] | | [항목2] | [값] | [설명] | ### 적용 화면 - `[화면].html` ### UI 구성 ``` [ASCII Art UI 예시] ┌─────────────────────────────────────┐ │ [UI 구성 요소] │ │ │ └─────────────────────────────────────┘ ``` --- ## 관련 mockup | 정책 | mockup 파일 | |-----|------------| | MN-001 | home.html, shop.html | | MN-002 | payment.html | | MN-003 | shop.html | ``` #### 3-3. 02-gameplay.md (서비스 규칙) **File**: `/Users/taesupyoon/sideProjects/rovel.ai/docs/appkit/ui/works/policies/02-gameplay.md` ```markdown # 서비스 규칙 (Gameplay/Service) > 코드: `GM` | 핵심 서비스 규칙 --- ## GM-001: [규칙명] ### 정책 내용 - [규칙 설명] ### 로직 ``` [로직 설명 또는 수도코드] if (condition) { action(); } ``` ### UI 영향 | 화면 | 영향 | |-----|------| | [화면] | [영향 설명] | --- ## GM-002: [규칙명] ### 정책 내용 | 조건 | 결과 | 비고 | |-----|------|-----| | [조건1] | [결과] | [비고] | | [조건2] | [결과] | [비고] | ### 예외 처리 | 상황 | 처리 | |-----|------| | [상황1] | [처리 방법] | | [상황2] | [처리 방법] | ``` --- ### 4. 완료 리포트 ``` ✅ 정책설계서 작성 완료! 📁 생성된 파일: - policies/00-policy-index.md - policies/01-monetization.md - policies/02-gameplay.md - policies/03-content.md - policies/04-progression.md 📊 요약: - 정책 카테고리: N개 - 개별 정책: N개 - 화면 매핑: N개 📝 다음 단계: **Step 5 - HTML 목업 (/appkit.visualize)** /appkit.visualize home /appkit.visualize all 📍 현재 위치: Step 4/5 완료 ``` --- ## 정책설계 원칙 ### Do's - ✅ **코드 체계**: 정책 ID 일관되게 사용 (MN-001, GM-002) - ✅ **화면 매핑**: 정책이 어느 화면에 적용되는지 명시 - ✅ **UI 영향**: 정책이 UI에 어떻게 반영되는지 설명 - ✅ **예외 처리**: 모든 예외 상황 정의 - ✅ **mockup 연결**: 관련 HTML 목업 파일 명시 ### Don'ts - ❌ **모호함**: "적절히", "필요시" 같은 표현 지양 - ❌ **누락**: 예외 상황 누락 금지 - ❌ **불일치**: 정책 문서와 UI 문서 간 불일치 금지 --- ## Example ``` $ /appkit.policy 📋 정책설계서 작성 정책 카테고리: - MN: 과금/결제 (5개 정책) - GM: 서비스 규칙 (8개 정책) - CH: 콘텐츠 (3개 정책) - PR: 진행/성장 (4개 정책) 화면-정책 매핑: - /booking: GM-001, GM-002, MN-001 - /payment: MN-002, MN-003 - /profile: PR-001, PR-002 ✅ 00-policy-index.md 생성 완료 ✅ 01-monetization.md 생성 완료 ✅ 02-gameplay.md 생성 완료 ✅ 03-content.md 생성 완료 ✅ 04-progression.md 생성 완료 ```