# 🎉 새로 추가된 기능
## 🏆 배지 & 업적 시스템
### 기능 개요
사용자의 학습 여정을 게임화하여 동기부여를 높이는 배지 시스템입니다.
### 주요 기능
- **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 아이콘 활용
### 공유 버튼
- 직관적인 아이콘
- 그라데이션 배경
- 한 번의 탭으로 공유
### 배지 컬렉션
- 그리드 레이아웃
- 획득/미획득 구분
- 진행도 표시
---
**즐거운 배지 수집 되세요!** 🎉🏆