# 🎉 새로 추가된 기능 ## 🏆 배지 & 업적 시스템 ### 기능 개요 사용자의 학습 여정을 게임화하여 동기부여를 높이는 배지 시스템입니다. ### 주요 기능 - **17개의 배지** (연속 출석, 정답률, 레벨, 문제 수) - **자동 획득 시스템** (답변 제출 시 자동 체크) - **배지 알림** (획득 시 아름다운 애니메이션과 함께 알림) - **배지 컬렉션** (전체 배지 보기 및 진행도 표시) - **카테고리별 필터** (연속 출석, 정답률, 레벨, 특별 배지) ### 배지 종류 #### 🔥 연속 출석 배지 - **첫 출석** - 첫 번째 퀴즈 풀기 - **일주일 연속** - 7일 연속 출석 - **한 달 연속** - 30일 연속 출석 - **백일 연속** - 100일 연속 출석 #### ✅ 정답률 배지 - **정확한 판단** - 정답률 70% - **달인** - 정답률 80% - **전문가** - 정답률 90% - **완벽주의자** - 정답률 95% #### ⭐ 레벨 배지 - **초보자** - 레벨 5 - **중급자** - 레벨 10 - **고급자** - 레벨 20 - **마스터** - 레벨 50 #### 📚 문제 수 배지 - **호기심 많은** - 10문제 - **학습자** - 50문제 - **열정가** - 100문제 - **도전자** - 500문제 - **전설** - 1000문제 ### 데이터베이스 스키마 ```sql -- badges 테이블 CREATE TABLE badges ( id UUID PRIMARY KEY, name VARCHAR(100), description TEXT, icon VARCHAR(50), category VARCHAR(50), condition_type VARCHAR(50), condition_value INTEGER, color VARCHAR(20) ); -- user_badges 테이블 CREATE TABLE user_badges ( id UUID PRIMARY KEY, user_id UUID REFERENCES users(id), badge_id UUID REFERENCES badges(id), earned_at TIMESTAMP, is_new BOOLEAN ); ``` ### 사용 방법 #### 1. 데이터베이스 설정 ```bash # Supabase SQL Editor에서 실행 psql -f badges_schema.sql ``` #### 2. 앱에서 배지 확인 - **퀴즈 풀기** → 자동으로 조건 충족 시 배지 획득 - **배지 탭** → 모든 배지 보기 및 진행도 확인 - **대시보드** → 최근 획득한 배지 프리뷰 #### 3. 배지 공유 - 배지 획득 시 **공유하기** 버튼 클릭 - 소셜 미디어로 자랑하기 --- ## 📱 소셜 공유 기능 ### 기능 개요 성적, 배지, 연속 출석 등을 소셜 미디어로 쉽게 공유할 수 있습니다. ### 공유 옵션 #### 1. 성적 공유 ``` 📊 경제 퀴즈 성적표 👤 닉네임 📝 총 문제: 50개 ✅ 정답: 42개 🎯 정답률: 84.0% ⭐️ 레벨: 8 🔥 연속 출석: 15일 나도 도전해보세요! ``` #### 2. 배지 획득 공유 ``` 🏆 새로운 배지 획득! 👤 닉네임 🎖️ 일주일 연속 7일 연속 출석했습니다 #경제퀴즈 #배지획득 ``` #### 3. 연속 출석 공유 ``` 🔥 연속 출석 기록! 👤 닉네임 🔥 30일 연속! 꾸준함이 실력이 됩니다 💪 #경제퀴즈 #연속출석 ``` #### 4. 친구 초대 ``` 💡 경제 상식 퀴즈 앱 추천! 👤 닉네임님이 초대합니다 매일 새로운 경제 퀴즈로 재미있게 공부해보세요! #경제퀴즈 #경제공부 #금융상식 ``` ### 공유 방법 #### 대시보드에서 1. **대시보드** 탭 이동 2. **공유하기** 섹션 찾기 3. 원하는 공유 버튼 클릭: - 성적 공유 (파란색) - 출석 자랑 (주황색, 7일 이상 시 표시) - 친구 초대 (녹색) #### 배지 획득 시 1. 배지 획득 알림 팝업 표시 2. **공유** 버튼 클릭 3. iOS 네이티브 공유 시트 열림 ### 지원 플랫폼 - 카카오톡 - 문자 메시지 - 이메일 - X (Twitter) - Facebook - Instagram (스토리) - 클립보드 복사 --- ## 📂 추가된 파일 ### Models - `moni/Models/Badge.swift` - 배지 모델 ### Services - `moni/Services/BadgeService.swift` - 배지 비즈니스 로직 - `moni/Services/ShareService.swift` - 소셜 공유 로직 ### Views - `moni/Views/Badge/BadgeListView.swift` - 배지 목록 화면 - `moni/Views/Badge/BadgeNotificationView.swift` - 배지 획득 알림 ### Database - `badges_schema.sql` - 배지 시스템 데이터베이스 스키마 --- ## 🎯 사용자 경험 개선 ### Before - 문제만 풀고 끝 - 동기 부여 부족 - 공유 기능 없음 ### After - 🏆 배지 획득으로 성취감 - 📊 진행도 시각화 - 📱 소셜 공유로 자랑하기 - 🎮 게임화된 학습 경험 --- ## 🔄 업데이트 방법 ### 1. 데이터베이스 업데이트 ```bash # Supabase SQL Editor에서 badges_schema.sql 실행 ``` ### 2. 앱 재빌드 ```bash # Xcode에서 ⌘ + B (빌드) ⌘ + R (실행) ``` ### 3. 즉시 사용 가능! - 퀴즈 풀면 자동으로 배지 체크 - 대시보드에서 공유 기능 이용 --- ## 📊 통계 & 분석 ### 배지 획득률 추적 ```sql -- 가장 많이 획득된 배지 SELECT b.name, COUNT(*) as earned_count FROM user_badges ub JOIN badges b ON ub.badge_id = b.id GROUP BY b.id ORDER BY earned_count DESC; ``` ### 공유 빈도 (추후 구현) - 어떤 유형의 공유가 가장 많은지 추적 - A/B 테스팅으로 최적화 --- ## 🚀 다음 단계 ### Phase 1 완료 ✅ - [x] 배지 시스템 - [x] 소셜 공유 ### Phase 2 (다음) - [ ] 친구 시스템 - [ ] 배지 레벨 업그레이드 - [ ] 주간/월간 배지 - [ ] 커스텀 배지 (이벤트용) --- ## 💡 팁 ### 배지를 빨리 모으는 법 1. **매일 출석** → 연속 출석 배지 2. **정확하게 답하기** → 정답률 배지 3. **꾸준히 풀기** → 문제 수 배지 4. **레벨 업** → 레벨 배지 ### 공유 활용 - 배지 획득 시 즉시 공유 → 친구들에게 자랑 - 높은 정답률 달성 시 성적 공유 - 연속 출석 기록 갱신 시 공유 --- ## 🎨 UI/UX 하이라이트 ### 배지 획득 애니메이션 - 부드러운 스프링 애니메이션 - 색상별 구분 (카테고리별) - SF Symbols 아이콘 활용 ### 공유 버튼 - 직관적인 아이콘 - 그라데이션 배경 - 한 번의 탭으로 공유 ### 배지 컬렉션 - 그리드 레이아웃 - 획득/미획득 구분 - 진행도 표시 --- **즐거운 배지 수집 되세요!** 🎉🏆