# 라온누리 - 개발 로드맵 > 최종 업데이트: 2025-12-01 (글쓰기 모드 선택 기능 추가) 초등학생을 위한 창작 글쓰기 교육 플랫폼 개발 계획 --- ## 현재 개발 단계 **Phase 1: 핵심 기능** (진행 중 - 99% 완료) --- ## Phase 1: 핵심 기능 (현재) **목표**: 사용자가 가입하고 글을 작성할 수 있는 기본 기능 완성 ### ✅ 완료된 작업 | 항목 | 설명 | 완료일 | |-----|------|-------| | 프로젝트 설정 | Next.js 16, React 19, TypeScript 설정 | 2025-10-25 | | Firebase 연동 | Firebase Auth 설정 및 초기화 | 2025-10-26 | | 로그인 기능 | 이메일/비밀번호 로그인 | 2025-10-27 | | Google OAuth | Google 소셜 로그인 | 2025-10-27 | | 상태 관리 | Zustand 인증 스토어 구현 | 2025-10-27 | | 랜딩 페이지 | Hero, Features, How It Works, CTA 섹션 | 2025-10-28 | | 네비게이션 | Navbar 및 다크모드 지원 | 2025-10-28 | | SEO 최적화 | 메타데이터, OpenGraph, StructuredData | 2025-10-28 | | 커스텀 테마 | Chakra UI v3 테마 시스템 구축 | 2025-10-28 | | **회원가입 기능** | **LoginDialog 페이드 전환, 비밀번호 강도 게이지, HIBP API 연동** | **2025-10-28** | | **인증 기반 라우팅** | **`/`와 `/home` 분리, 자동 리다이렉트 구현** | **2025-10-29** | | **글쓰기 페이지** | **Tiptap 순수 텍스트 에디터 (포맷팅 없음), Editable 제목, LocalStorage 자동 저장, 하단 고정 버튼** | **2025-10-30** | | **Firestore 연동** | **글 저장/불러오기/삭제 서비스 함수 구현** | **2025-10-30** | | **Manager 패턴 도입** | **WritingManager 구현 (싱글톤), Firestore 호출 레이어 분리, Firebase Functions 전환 대비** | **2025-10-30** | | **주제 선택 기능** | **TopicManager, TopicSelector 컴포넌트, 개인 주제 시스템, 템플릿 미리채우기 (제목/내용)** | **2025-10-30** | | **개인 주제 생성 UI** | **CreateTopicDialog 구현, 태그 입력 필드 (키보드 네비게이션, 방향키 선택, Backspace/Delete 삭제)** | **2025-10-31** | | **팀 코드 시스템 (백엔드)** | **한글 팀 코드 생성 ("춤추는 파란 사자"), Anonymous Auth, teamService/studentService, PIN SHA-256, currentStudent 중심 authStore 재설계, 정식 계정 연결 (linkWithCredential)** | **2025-11-06** | | **팀 관리 UI** | **팀 목록(/team), 팀 생성(/team/create), 멤버 페이지(/team/[teamId]), 관리 페이지(/team/[teamId]/manage), 학생 로그인 플로우 개선 (이름 입력, 완료 화면)** | **2025-11-06** | | **용어 변경** | **"클래스" → "팀", "교사" → "소유자", ownerId 기반 시스템, 누구나 팀 생성 가능** | **2025-11-06** | | **Semantic 토큰 적용** | **브랜드 컬러 우선 사용, fg/bg/border 토큰, 다크 모드 대응** | **2025-11-06** | | **학생 관리 기능** | **팀 관리 페이지에 학생별 관리 메뉴 (이름 수정, 강퇴), Menu + Dialog UI** | **2025-11-07** | | **매니저 패턴 API 전환** | **TeamManager, StudentManager를 API 호출 방식으로 전환, Firestore 직접 호출 제거** | **2025-11-07** | | **API 타입 시스템 구축** | **ApiResponse, HttpMethod Enum, Team/Student API 타입 정의 (23개 엔드포인트)** | **2025-11-07** | | **클라이언트 캐싱 구현** | **BaseManager에 in-memory 캐싱 (TTL, 자동 무효화), callApiWithCache 메서드** | **2025-11-07** | | **API 명세서 작성** | **API_SPEC.md 작성 (전체 엔드포인트, 권한, 캐싱 전략)** | **2025-11-07** | | **타입 Enum화** | **TeamSecurityMode, TopicCategory/Difficulty/OwnerType을 Enum으로 전환** | **2025-11-07** | | **팀 주제 시스템** | **팀 소유자가 팀 주제 생성 가능, ownerId = teamId 방식, TopicSelector에 배지 표시** | **2025-11-07** | | **아키텍처 단순화** | **students → users 컬렉션 전환, PIN 제거, UID 기반 통합, 팀별 닉네임 시스템, authStore 단순화** | **2025-11-07** | | **그룹 기능 완전 제거** | **Group 관련 타입/API/UI 제거, 팀(Team) 기능만 사용** | **2025-11-07** | | **팀 목록 조회 개선** | **getMyTeams() 소유+참여 팀 모두 반환, getAllUserTeams() 서버 함수 추가, 중복 제거** | **2025-11-07** | | **UserManager 개선** | **getUser() 404 시 null 반환, 팀 코드 로그인 시 신규 사용자 생성 플로우 개선** | **2025-11-07** | | **TopicSelector UI 개선** | **드롭다운 메뉴에 팀/개인 주제 배지 표시, 선택 전에도 주제 타입 확인 가능** | **2025-11-07** | | **T_ prefix 제거** | **팀 주제 ownerId에서 T_ prefix 제거, ownerId = teamId 직접 사용** | **2025-11-07** | | **5단계 보안 레벨 시스템** | **TeamSecurityLevel enum (1-5), 팀별 보안 정책 선택, 명단 관리 API** | **2025-11-10** | | **User 타입 최소화** | **FirestoreUser/User 분리, Firebase Auth를 Single Source of Truth로, 데이터 중복 제거** | **2025-11-10** | | **닉네임 저장 위치 변경** | **users.nicknames → team.members[uid].nickname 이동, TeamMember 타입 확장** | **2025-11-10** | | **authStore DB 연동** | **combineUserData로 Firebase Auth + Firestore 자동 결합, userManager.getUser() 활용** | **2025-11-10** | | **memberUids 제거** | **Team.memberUids 필드 제거, Object.keys(members) 사용, 데이터 중복 제거** | **2025-11-10** | | **SecurityLevelSelector** | **RadioCard 기반 보안 레벨 선택 UI, framer-motion 애니메이션, 그라데이션 배경** | **2025-11-10** | | **API Routes 구현** | **보안 레벨 변경, 명단 관리 API (RESTful 원칙), POST/DELETE 메서드 구분** | **2025-11-10** | | **lib/server/team 확장** | **updateTeamSecurityLevel, add/removeAllowedName/Email, 자동 명단 생성** | **2025-11-10** | | **react-icons 전환** | **이모티콘 → react-icons/lu로 전환 (LuGlobe, LuClipboardList 등)** | **2025-11-10** | | **다중 글조각 관리** | **DraftManager (localStorage + Realtime DB 하이브리드, 기기 간 동기화, 최대 10개), SavedDraftsDialog (syncStatus 배지), 2초 debounce 자동 저장** | **2025-11-10 / 2025-11-19** | | **테마 슬롯 레시피** | **Dialog, Select slot recipe 추가 (자동 배경색, border, shadow)** | **2025-11-10** | | **TopicSelector 그룹핑** | **ItemGroup으로 자유/팀/개인 주제 구분, 팀 주제에 팀 이름 표시, Separator 추가** | **2025-11-10** | | **TopicOption 확장** | **teamName 필드 추가, TopicManager에서 팀 정보 조회 (동적 import)** | **2025-11-10** | | **주제 변경 경고 Dialog** | **작성 중 내용이 있을 때 주제 변경 시 경고 Dialog 표시, 임시 저장 안내** | **2025-11-10** | | **실시간 피드백 시스템** | **Vertex AI 기반 텍스트 분석, ScoreDisplay 컴포넌트, Delta 전송 (diff-match-patch 기반, 5자 미만 누적, 80% 기준), 서버 캐싱 (LRU)** | **2025-11-11 / 2025-11-19** | | **Multi-Region Failover** | **3개 region 자동 전환 (도쿄/싱가포르/미국), Region health tracking, Exponential backoff, RPM 3배 증가 (15→45)** | **2025-11-11** | | **서비스 레이어 분리** | **vertexAI.ts (범용 래퍼), textAnalysisService.ts (분석 로직), regionHealthManager.ts (상태 관리)** | **2025-11-11** | | **문서화 완료** | **TECHNICAL_IMPLEMENTATION.md, SERVICE_DIRECTION.md 전면 개편 (Vertex AI 기반)** | **2025-11-11** | | **Google AI SDK 마이그레이션** | **`@google-cloud/vertexai` → `@google/genai` (v1.29.0), Response Schema 지원, Gemini 2.0+ 기능** | **2025-11-11** | | **텍스트 분석 평가 기준 개편** | **오감(4점) + 감정(2점) + 대화(2점) + 의성어(2점), `descriptive` → `emotion`, 프롬프트 최적화 (칭찬 강화, 제안 0~1개)** | **2025-11-11** | | **분석 히스토리 시스템** | **Draft.analysisHistory 추가 (최대 5개), AI가 수정 과정 인식, 이전 버전 비교 피드백** | **2025-11-11** | | **맞춤법 검사 서비스** | **spellingService.ts (Gemini 기반), 독립적 debounce (5초)** | **2025-11-11** | | **글 작성 패턴 분석 시스템** | **patternAnalysisService.ts, WritingPatternDialog/Display, 최근 10개 글 종합 분석, AI 평가 및 맞춤형 추천, 5분 캐싱** | **2025-11-11** | | **실시간 하이라이트 시스템** | **SpellingHighlight/SensoryWordHighlight Extensions, 맞춤법(빨간 물결)/감각 단어(색상별) 하이라이트, ScoreDisplay/SpellingErrorDisplay 제거** | **2025-11-11** | | **인터랙티브 툴팁** | **EditorTooltip, 하이라이트 클릭 시 상세 정보 표시 (맞춤법: 원본→수정+이유, 감각 단어: 타입+격려), Portal + ESC/외부 클릭** | **2025-11-11** | | **Toast 알림 추가** | **텍스트 분석/맞춤법 검사 시작/완료/실패 알림, 점수/에러 개수 표시, 로딩 상태 (duration: Infinity)** | **2025-11-11** | | **Writing API 구현** | **POST /api/writing (글 생성), GET/PUT/DELETE /api/writing/[id] (조회/수정/삭제), POST /api/writing/user (목록), POST /api/writing/recent (최근 글), src/lib/server/writing.ts (Firestore CRUD), 권한 체크 (작성자만), 텍스트 통계 자동 계산** | **2025-11-12** | | **패턴 분석 - 팀 소유자 기능** | **3가지 분석 타입 (self/by-team/by-topic), API 권한 체크, 팀 주제 필터링, WritingPatternDialog Props 확장, TopicMemberAnalysisSection (UI만), 팀 관리 페이지에 멤버 분석 메뉴** | **2025-11-12** | | **Content Hash 기반 3단계 캐싱** | **글 목록 해시 생성 (id+updatedAt), L1: localStorage (영구, LRU 10개), L2: Firestore patternAnalyses (영구), L3: Server in-memory (5분, 50개), 변경 자동 감지, AI 비용 절감 (전체 사용자 기준 1회 분석), contentHash.ts + patternCacheManager.ts + patternAnalysis.ts** | **2025-11-12** | | **실시간 글쓰기 모니터링** | **Firebase Realtime Database 기반 실시간 통신 (Redis Pub/Sub 방식), WritingSessionManager (5초 주기 통계 전송, 미리보기 요청-응답, 상세 디버그 로그), LiveWritingMonitor (주제 Select, 모든 팀 멤버 표시, StudentMonitorCard), 3가지 상태 관리 (작성 중/나감/대기 중, 정렬 순서, 색상별 시각화), 글쓰기 페이지 모니터링 (contentRef 최적화), onDisconnect() 자동 정리, 작성 속도 계산 (클라이언트, 글자/분, charDiff*12), Sparkline 그래프 (Area Chart, 최근 10개, 0 표시), 인터랙티브 툴팁 (속도+시간), 30초 타임아웃 체크 (lastUpdated), 마지막 통계 유지 (Firebase 삭제되어도 유지), database.rules.json (topicId 레벨 읽기), @chakra-ui/charts+recharts, 완전 무료 (100명)** | **2025-11-12** | | **다국어 지원 시스템 (i18n)** | **next-intl 라이브러리 설치 및 설정, [locale] 라우팅 구조 변경 (/ko/*, /en/*, /ja/*), middleware.ts 생성 (브라우저 언어 자동 감지, Accept-Language 헤더), 3개 언어 번역 파일 생성 (messages/ko.json, messages/en.json, messages/ja.json - 각 407줄, 220+ 키), Navbar 번역 (4개 링크), LocaleSwitcher 드롭다운 메뉴 개선 (국기 이모지 🇰🇷 🇺🇸 🇯🇵, 현재 언어 체크 표시, Portal 사용), Landing 페이지 전체 번역 (Hero, Features, Steps, CTA, Footer - 20+ 항목), Home 페이지 전체 번역 (Welcome, QuickStart 9개 액션 카드, RecentActivity), 인증 컴포넌트 전체 번역 (LoginDialog, LoginForm, SignupForm, UserProfileButton, StudentLoginFlow, SavedDraftsDialog - 70+ 항목), Team 페이지 전체 번역 (List, Create, Detail, Manage + SecurityLevelSelector - 60+ 항목), Write 페이지 번역 (분석/저장 메시지, 버튼), 일본어 어린이 친화적 표현 (한자 최소화, ひらがな 우선), site.ts 텍스트를 번역 파일로 이동 (사이트명, 태그라인, 저작권), localeDetection: true 설정, NEXT_LOCALE 쿠키 저장, next.config.ts에 next-intl 플러그인 추가, i18n/routing.ts + i18n/request.ts 설정, 타입 체크 통과, CLAUDE.md에 다국어 필수 규칙 추가** | **2025-11-13** | | **개별 글 분석 결과 저장** | **Writing 타입에 WritingAnalysis 필드 추가, SpellingError 타입 정의, generateWritingContentHash 유틸 추가, 글쓰기 페이지 실시간 분석 제거, 저장 버튼 클릭 시 AI 분석 + 맞춤법 검사 병렬 수행, 분석 결과를 DB에 저장, 패턴 분석 시 저장된 분석 재사용 (contentHash 비교), 변경된 글만 재분석 (90% 비용 절감), 맞춤법 에러 히스토리 기능 완성, API 타입/서버 함수/WritingManager 전체 수정, getTranslations()로 서버 사이드 다국어 지원** | **2025-11-14** | | **AI 글쓰기 도우미 시스템** | **4단계 점진적 힌트 시스템 (질문 → 방향 → 선택지 → 예시 문장), useWritingInactivityDetection 훅 (5분 작성 멈춤 감지, 타이머 리셋, 남은 시간), UI 컴포넌트 2개 (InactivityPrompt 플로팅 버튼, HintDisplay Dialog), writingAssistanceService.ts (Vertex AI, 주제 맥락 활용, 서버 캐싱), writingAssistance.ts 프롬프트 (4단계 × 3개 언어 ko/en/ja), 글쓰기 페이지 통합 (AI 도움 요청, 서버 에러 처리), POST /api/writing-assistance (주제 정보 전달, 팀 설정 검증), GET/PUT /api/team/[teamId]/ai-config (AI 설정 조회/업데이트), Team.aiAssistanceConfig 필드 (enabled, detectionTimeMinutes, maxHintsPerWriting, cooldownMinutes, allowedHintLevels, requireSelfEdit), DEFAULT_AI_ASSISTANCE_CONFIG 상수, 팀 관리 페이지 AI On/Off 토글 (Switch.Root v3), TeamManager AI 메서드 (getAIConfig, updateAIConfig), lib/server/team.ts AI 함수 (getTeamAIConfig, updateTeamAIConfig), 서버 검증 (enabled=false → 403, allowedHintLevels 체크), 사용 제한 (글당 5회, 3분 쿨다운), 다국어 번역 추가 (messages/*.json, aiAssist namespace 19개 키), successResponse() 헬퍼 사용, AIAssistanceRecord 타입 (timestamp, hintLevel, topicId, topicTitle, context, hintProvided, wasUsed)** | **2025-11-14** | | **AI 설정 고급 UI 완성** | **AIConfigDialog 컴포넌트 (팀 관리 페이지), Slider 3개 (멈춤 감지/최대 힌트/쿨다운), 커스텀 힌트 레벨 카드 (반투명 배경 번호, 우상단 접힌 페이지 삼각형 인디케이터, CSS border trick, 직접 onClick 처리), SimpleGrid 2x2 레이아웃, 브랜드 컬러 상태 변화, Switch (AI 제안 그대로 사용 금지), 함수형 상태 업데이트 (클로저 해결), 다국어 지원 (ko/en/ja, team.manage.aiConfig namespace 28개 키)** | **2025-11-17** | | **AI 이미지 생성 + 장면 분리 + 프롬프트 최적화** | **Vertex AI Imagen 3.0 통합, AI 장면 분리 기능 (Gemini Flash), AI 프롬프트 최적화 (Gemini Flash-Lite, 원문 → 핵심 키워드 배열 추출 → 쉼표 연결, Fallback 안전성), 4단계 플로우 (장면 추출 → 장면 선택 → 프롬프트 최적화 → 이미지 생성 → 결과 표시), Scene/SceneExtractionResponse 타입 추가, sceneExtractionService.ts (글 → 3~5개 장면 자동 추출, 장면별 프롬프트 생성), sceneExtraction.ts 프롬프트 (ko/en/ja, Response Schema), promptOptimization.ts 프롬프트 (키워드 추출, ko/en/ja), POST /api/extract-scenes (장면 추출 API), SceneSelector 컴포넌트 (RadioCard, 이모지, 원문 미리보기 80자, ItemHiddenInput 추가), GeneratedImage 타입 (url, prompt, generatedAt, modelName), imagenService.ts (글 → 어린이 친화적 프롬프트 자동 변환, optimizePromptForImage 함수, 안전 필터링), vertexAI.ts 확장 (generateImage 함수, multi-region failover 재사용), imageStorage.ts (Firebase Storage 업로드, base64 → 공개 URL 변환, toDataURL 헬퍼), POST /api/generate-image (권한 체크, AI 프롬프트 최적화, Imagen API 호출, Storage 저장, Writing.generatedImage 필드 업데이트), GenerateImageDialog 개선 (4단계 플로우, 장면 선택 UI, "다른 장면 선택" 버튼), 글쓰기 페이지 통합 ("구체화하기" 버튼, 저장 완료 후 표시, 홈 이동 제거), Firebase Storage 초기화 (fbStorage), 다국어 번역 (write.generateImage + write.extractScenes namespace, ko/en/ja 22개 키), 타입 체크 통과** | **2025-11-17** | | **AI 이미지 생성 스타일 일관성 개선** | **Imagen 4.0 Fast로 업그레이드, 일관된 스타일 가이드 적용 (모든 이미지 동일 화풍), 애니메이션/만화 스타일로 전환 (세미 리얼리즘 제거), 한국 문화권 고려 ("Korean elementary student" 명시), 강화된 Negative Prompt (과도한 사실주의, 어두운 분위기 차단), 키워드 개수 증가 (6-12개), promptOptimization.ts 프롬프트 개선 (스타일 가이드 추가, 예시 업데이트), imagenService.ts 폴백 로직 개선 (일관된 스타일 유지), vertexAI.ts Negative Prompt 강화 (excessive realism, photorealistic, dark atmosphere 추가)** | **2025-11-20** | | **내가 쓴 글 목록 + 글 수정 기능** | **WritingCard 컴포넌트 (제목, 날짜, 미리보기, 주제/점수/이미지 배지, 삭제 메뉴, framer-motion 삭제 애니메이션, layoutId), /home 페이지 최근 글 3개 표시 (SimpleGrid, "모두 보기" 버튼, AnimatePresence), /writings 전체 글 목록 페이지 (정렬 Select, empty state, AnimatePresence), 다국어 번역 추가 (writings 섹션 ko/en/ja 22개 키, home.recentActivity.viewAll), /write 페이지 글 수정 기능 (URL params ?id=xxx, useSearchParams, isEditMode 상태, getWriting으로 로드, updateWriting 호출, 수정 모드 배지), 번역 추가 (write.editMode/editModeDesc/editModeBadge/writingNotFound/loadFailed)** | **2025-11-18** | | **주제별 학생 분석 API** | **GET /api/topic/[topicId]/writers 구현 (팀 주제로 글 쓴 학생 목록 + 글 개수), TopicWriter 타입 추가 (uid, name, email, writingCount), getTopicWriters 서버 함수 (writings 쿼리, userId 그룹화, Firebase Auth 사용자 정보 결합, 글 개수 내림차순 정렬), TopicManager.getTopicWriters 메서드 (2분 캐싱), TopicMemberAnalysisSection UI 완성 (Accordion, 주제별 학생 목록, "이 주제 분석" 버튼, by-topic 분석 연동), 권한 체크 (팀 소유자만 접근), 다국어 번역 추가 (team.manage.topicAnalysis namespace, ko/en/ja 8개 키), 안내 메시지 제거** | **2025-11-18** | | **팀 관리 컴포넌트 다국어 완성** | **TeamTopicManager 다국어 처리 (team.manage.teamTopics, 18개 키), LiveWritingMonitor 다국어 처리 (team.manage.liveMonitor, 27개 키), team/[teamId]/page.tsx 다국어 처리 (기존 키 활용), StudentLoginFlow 일본어 번역 (61개 키), team.create 일본어 번역 (21개 키), team.detail/manage 일본어 번역 (45개 키), securitySelector 일본어 번역 (13개 키)** | **2025-11-18** | | **팀 코드 다국어 생성 + Realtime DB 예약 시스템** | **언어별 단어 목록 추가 (영어 130개, 일본어 124개), generateTeamCode(locale) 함수 수정, teamCodeReservation.ts 서버 레이어 (Realtime DB transaction, 5분 TTL, onDisconnect 자동 정리), generateAndReserveTeamCode 함수 (atomic 예약, race condition 완전 방지), releaseTeamCodeReservation 함수 (팀 생성 후 예약 해제), database.rules.json 업데이트 (teamCodeReservations 규칙, userId 검증, TTL 검증), POST /api/team/generate-code 수정 (인증 필수, 예약 시스템 사용), POST /api/team 수정 (팀 생성 후 예약 해제), TeamManager.generateUniqueTeamCode(locale) 파라미터 추가, 팀 생성 페이지 "다시 생성하기" 버튼 추가, 번역 키 추가 (regenerateCode, codeGenerateFailed, ko/en/ja)** | **2025-11-18** | | **팀 나가기 기능** | **팀 상세 페이지에 "팀 나가기" 버튼 추가 (멤버만 표시), Dialog 확인창, teamManager.removeMember() 호출, POST /api/team/remove-member 권한 체크 수정 (본인 제거 허용, 소유자 제거 금지), 성공 시 팀 목록으로 리다이렉트, 번역 추가 (team.detail namespace, leaveTeam/leaveTeamConfirm 등 7개 키, ko/en/ja)** | **2025-11-18** | | **Level 1 중복 체크 로직 (UID 기반)** | **loginAsUser() 함수 수정 (currentUid 파라미터 추가), Level 1 닉네임 중복 체크 (team.members 검색), 4가지 케이스 처리 (비로그인/로그인 × 중복 유무), Custom Token API 생성 (POST /api/team/get-custom-token, 익명 계정만 발급), 비로그인 상태 중복 시 기존 계정으로 자동 로그인, 로그인 상태 중복 시 에러 (UID 일치 체크), 정식 계정 탈취 방지 (providerData 체크), authStore.loginAsUser에서 currentUid 전달, StudentLoginFlow 에러 메시지 처리, 번역 추가 (errors.team namespace, alreadyJoinedTeam/nicknameInUse 등 6개 키, ko/en/ja)** | **2025-11-18** | | **서비스 레이어 i18n 유틸리티** | **src/utils/i18n.ts 생성 (React 훅 없이 번역 사용), detectLocale() 함수 (URL path 우선 → navigator.language fallback), t() 함수 (nested key 지원, 파라미터 치환), messages/*.json import, firebaseAuth.ts 전체 에러 메시지 다국어 처리 (getErrorMessage, loginAsUser, linkEmailPassword, linkGoogleAccount), convertFirebaseUser 기본 이름 다국어, 번역 추가 (errors.auth namespace 11개 + errors.team namespace 6개, ko/en/ja)** | **2025-11-18** | | **AI Delta 전송 로직 개선** | **diff-match-patch 라이브러리 도입, 정확한 diff 계산 (앞/중간/뒤 수정 모두 감지), 5자 미만 변경 누적 (previousText 유지), 완화된 기준 (80% 미만, 200자 미만), 9개 테스트 케이스 통과 (뒷부분 추가, 중간 수정, 앞부분 추가, 삭제, 대량 변경, 누적 변경), skipped 응답 처리 (클라이언트에서 prev 유지), analyze-text API 수정** | **2025-11-19** | | **수정 모드 주제 변경 차단** | **TopicSelector `readonly` prop 추가, 수정 모드에서 Select 드롭다운 완전 숨김, "현재 주제" 라벨만 표시, 주제 생성 Dialog 숨김, 데이터 무결성 보장 (템플릿 덮어쓰기 방지, AI 설정 혼선 방지, 실시간 모니터링 충돌 방지), 다국어 지원 (readonlyNote/currentTopic 키 추가, ko/en/ja)** | **2025-11-21** | | **수정 모드 UX 대폭 개선** | **Sticky 헤더바 추가 (오렌지/앰버 그라데이션 배경, 상단 고정 z-index:100, blur backdrop, Writing ID 표시), 강조된 테두리 (주제 선택 + 글쓰기 영역 2px solid 오렌지), 섀도우 효과 (글쓰기 영역 오렌지 글로우, 라이트/다크 모드 대응), 색상 시스템 정립 (Light: #FFB366/#FF9800/#E65100, Dark: #8B6B47/#C4A572), 기존 단순 배지 제거, 전체 UI 테마 일관성, globals.css에 pulse/shimmer 애니메이션 추가 (후에 제거됨)** | **2025-11-21** | | **글쓰기 페이지 UI 정리** | **"새 글쓰기" 버튼 제거 (불필요한 기능, 실수 방지, handleNewDraft 함수 제거, LuFilePlus import 제거), 상단 버튼 영역 단순화 ("저장된 글조각" 버튼만 유지), 미사용 i18n 키 정리 (newWriting/discardConfirm 제거, ko/en/ja)** | **2025-11-21** | | **Draft 클라우드 동기화** | **localStorage + Realtime DB 하이브리드 저장, syncStatus 필드 추가 ('local'\|'synced'\|'syncing'), DraftManager 확장 (syncToCloud, loadDraftsFromCloud, mergeDrafts, deleteDraftFromCloud), SavedDraftsDialog 배지 표시 (🟢동기화됨/🟡동기화 중/⚪기기만), write/page.tsx mergeDrafts 호출 (로그인 시), database.rules.json drafts 규칙 추가 (본인만 읽기/쓰기), 기기 간 동기화 (학교 ↔ 집), updatedAt 비교로 최신 버전 선택** | **2025-11-19** | | **팀 코드 예약 반환 로직** | **generate-code API 수정 (previousCode 파라미터 추가), 새 코드 받기 시 이전 예약 자동 해제, team/create page 중복 호출 방지 (isGeneratingCode 체크), 팀 생성 실패 시에도 예약 해제 (catch 블록), GenerateTeamCodeRequest 타입 확장, TeamManager.generateUniqueTeamCode previousCode 파라미터** | **2025-11-19** | | **Firebase Cloud Functions Phase 1** | **functions/ 프로젝트 초기화 (Node.js 22, v2 API), 파일 분리 구조 (index.ts export만, 로직 별도 파일), cleanupExpiredReservations (매 시간, 팀 코드 예약 정리), cleanupExpiredDrafts (매일 새벽 3시, 180일 이상 drafts 정리), onTeamDeleted (Firestore Trigger, cascade 삭제), onWritingCreated (Firestore Trigger, 추후 자동 분석), 한글 로그, asia-northeast1 리전, firebase.json predeploy 수정 (lint 제거), 4개 함수 배포 완료** | **2025-11-19** | | **주제 생성 Dialog 통합** | **CreateTeamTopicDialog 삭제 (674줄), CreateTopicDialog로 통합 (개인/팀 공용), TopicFormData export (데이터 반환 방식), onSubmit 콜백 패턴 (부모가 topicManager 호출), team.manage.teamTopics.dialog 번역 키 제거 (30개), topicSelector.createSuccess 추가, 652줄 코드 감소, 관심사 분리 (Dialog는 UI만, 비즈니스 로직은 부모)** | **2025-11-21** | | **홈 페이지 모듈화** | **HeroSection/QuickActionCard/QuickActionsGrid/ViewAllWritingsCard/EmptyStateCard/RecentActivitySection 컴포넌트 분리 (src/components/home/), 580줄 → 223줄 (62% 감소), Semantic token 적극 활용 (bg/fg/border), Conditional style 객체 최소화, 재사용성 및 유지보수성 향상, JSX 주석 한글화** | **2025-11-21** | | **글 상세보기 Server Component 전환** | **src/app/[locale]/writing/[writingId]/page.tsx를 Server Component로 전환, SEO 최적화 (서버에서 HTML 생성), SNS 공유 미리보기 (카카오톡/페이스북 링크), Firebase Admin SDK 사용 (src/lib/server/writing.ts, getTopic, getTeam), getTranslations() 서버 번역 함수, params: Promise<{locale, writingId}> 타입, 초기 로딩 성능 개선 (데이터 포함된 HTML 전송), 서버 권한 체크 (클라이언트 깜빡임 없음)** | **2025-11-22** | | **BackButton 공통 컴포넌트** | **src/components/layout/BackButton.tsx 생성, router.back() 기본 동작, href prop으로 특정 경로 이동, label prop으로 텍스트 커스터마이징, ButtonProps 확장으로 모든 Button 속성 지원, 다국어 지원 (t('interaction.back')), 재사용성 극대화 (모든 페이지에서 일관된 뒤로가기 UX)** | **2025-11-22** | | **Firebase Storage CORS 설정** | **firebase-storage-cors.json 생성 (origin: *, method: GET/HEAD, maxAge: 3600), gsutil cors set 명령어로 적용, Canvas 이미지 조작 허용, 캐시 문제 (CDN 1시간 캐시로 즉시 반영 안 됨, ?t=timestamp 쿼리 파라미터로 해결), TextureLoader.setCrossOrigin("anonymous") 확인** | **2025-11-23** | | **인터랙티브 이미지 비율 유지** | **InteractiveImage 컴포넌트 개선 (responsive-image-canvas 라이브러리), useEffect로 이미지 원본 크기 측정 (new Image, crossOrigin, onload), Box에 aspectRatio 속성 적용 (width/height 비율), Canvas 찌그러짐 방지, 로딩 상태 UI 추가, 캐시 무효화 (cacheBustedSrc ?t=Date.now())** | **2025-11-23** | | **글 분석 및 상호작용 기능** | **POST /api/writing/[id]/analyze 추가 (서버 데이터 기반 분석), 상호작용 컴포넌트 (AnalysisNeededBanner, AreaUnlockBadge, ImprovementHint, ScoreBadge), 점수 기반 영역 해금 로직 (areaLimit.ts), WritingAnalysis 타입 확장** | **2025-11-25** | | **이미지 왜곡 영역 기능** | **DistortionAreaData 데이터 모델 추가, InteractiveImageViewer 컴포넌트 (왜곡 효과, 애니메이션), 글 수정 시 왜곡 영역 저장/불러오기 지원** | **2025-11-25** | | **팀 멤버 닉네임 추가** | **POST /api/team/add-member API에 nickname 파라미터 추가, 팀원 추가 시 닉네임 설정 지원** | **2025-11-25** | | **글 상세 페이지 댓글 기능 연결** | **CommentList 컴포넌트를 writing/[writingId]/page.tsx에 연결, 댓글 보기/작성/답글/삭제 기능 활성화** | **2025-11-26** | | **미사용 코드 정리** | **koreanWordList.ts 삭제 (AI 분석으로 대체), InteractiveImage.tsx 삭제 (InteractiveImageViewer로 대체), AllowListManager.tsx 삭제 (미통합), 관련 문서 업데이트** | **2025-11-26** | | **팀 페이지 리팩토링** | **useTeamData 훅 생성 (팀 + 멤버 로딩, 권한 체크, refreshMembers), 팀 페이지 중복 코드 제거 (~200줄 절감), 각 하위 컴포넌트 자체 로딩 스켈레톤 활용** | **2025-11-26** | | **익명 계정 연결 기능** | **POST /api/auth/merge-account API (Firestore + Realtime DB 데이터 마이그레이션), mergeAndLoginWithEmail/mergeAndLoginWithGoogle 함수 (firebaseAuth.ts), mergeWithEmail/mergeWithGoogle 액션 (authStore.ts), LoginForm/SignupForm mode prop 추가 ('auth'\|'link'), LoginDialog link 모드 지원 (3개 소셜 버튼 표시), LinkAccountFlow 삭제 (기존 폼 재사용), 용어 변경 ("병합" → "연결", "익명" → "임시"), 다국어 지원 (linkAccountDescription, naverMerge/kakaoMerge/googleMerge, mergeButton/linkButton, ko/en/ja 15개 키)** | **2025-11-26** | | **글 공개 범위 시스템** | **WritingVisibility enum 추가 (PUBLIC/TEAM/PRIVATE), VisibilitySelector 컴포넌트 (글 저장 시 공개 범위 선택), VisibilityBadge 컴포넌트 (글 목록에서 공개 범위 표시), Writing 타입 확장 (visibility 필드), 기본값 PRIVATE, 공개 범위별 조회 API 추가, 다국어 지원 (ko/en/ja)** | **2025-11-27** | | **팀 공개 설정 시스템** | **Team 타입 확장 (isPublic, allowPublicWritings, description 필드), 팀 관리 페이지에 공개 설정 UI 추가, 공개 팀 조회 API (getPublicTeams, 커서 기반 페이지네이션), 공개 글 조회 API (팀별 공개 글 목록), 다국어 지원 (team.manage.publicSettings namespace, ko/en/ja)** | **2025-11-27** | | **공개 팀 목록 페이지** | **/team/all 페이지 구현, TeamCard 컴포넌트 (글래스모피즘 스타일), 페이지네이션 (커서 기반 무한 스크롤), Navbar "공개 팀" 메뉴 추가, 공개 팀만 표시 (isPublic=true), 다국어 지원 (teams namespace, ko/en/ja)** | **2025-11-27** | | **팀 상세 페이지 통합** | **/team/[teamId] 페이지 완전 재구성, 3가지 뷰 모드 (멤버 뷰/공개 뷰/접근 불가), 멤버 뷰: 멤버 목록 + 관리/나가기 버튼, 공개 뷰: 팀 정보 + 공개 글 목록 + 참여 버튼, PublicWritingCard 컴포넌트, 다국어 지원** | **2025-11-27** | | **팀 커버 이미지 시스템** | **Team 타입 확장 (coverImage?: string), Firebase Storage 업로드 (adminStorage.bucket()), TeamCoverImageUploader 컴포넌트 (드래그앤드롭, 미리보기, AspectRatio 16:9, 5MB 제한 JPEG/PNG/WebP/GIF), POST/DELETE /api/team/[teamId]/cover-image (FormData 업로드, 기존 이미지 자동 삭제, makePublic, extractPathFromUrl 헬퍼), TeamManager 메서드 (uploadCoverImage, deleteCoverImage, fetch FormData, 캐시 무효화), 팀 생성 페이지 이미지 선택 (선택적), 팀 관리 페이지 즉시 업로드/삭제 (공개 설정 내), TeamCard 표시 (이미지 있으면 상단 140px, 그라데이션 오버레이), 다국어 지원 (team.coverImage namespace 16개 키, ko/en/ja)** | **2025-11-27** | | **팀 멤버 아바타 표시 개선** | **Avatar 컴포넌트 도입 (photoURL 표시), 익명 계정 LuUser 아이콘 + gray 색상, 정식 계정 FaUserGraduate 아이콘 + teal 색상, "정식계정/익명" 텍스트 표시 제거, 닉네임과 실명이 다른 경우만 실명 이탤릭 표시** | **2025-11-27** | | **채점 시스템 전면 개편** | **0~1 품질 기반 점수 (5단계: 0, 0.25, 0.5, 0.75, 1.0), 가중 평균 0~100점 변환, 계층적 설정 (기본→팀→주제 우선순위), ScoringConfig/ScoringWeights/ScoringRubric 타입, scoringConfigService.ts (설정 병합), temperature=0 일관성, TeamScoringSettings 컴포넌트 (가중치 슬라이더), TeamRubricSettings 컴포넌트 (5단계 기준 편집, 아코디언 UI), 팀 관리 페이지 통합, 다국어 지원 (ko/en/ja)** | **2025-11-27** | | **이미지 업로드/선택 플로우 개편** | **/imageUpload 페이지 신규 생성 (AI 생성/직접 업로드 선택), WritingManager.uploadUserImage() 메서드 추가 (클라이언트 사이드 Canvas API 리사이즈, 1920x1080 최대, 85% 품질, Firebase Storage 업로드), WritingManager.analyzeWritingBackground() 메서드 추가 (fire-and-forget 패턴), Write 페이지 저장 플로우 변경 (저장 → 백그라운드 분석 → /imageUpload 리다이렉트, GenerateImageDialog 제거), Interaction 페이지 리다이렉트 로직 추가 (이미지 없으면 /imageUpload로 자동 이동), authStore.isLoading 초기값 변경 (false → true, auth 초기화 완료 전 리다이렉트 방지), 드래그앤드롭 파일 업로드 지원, 파일 검증 (JPEG/PNG/WebP, 5MB 제한), 다국어 지원 (imageUpload namespace, ko/en/ja 15개 키)** | **2025-11-28** | | **가격정책 페이지** | **/pricing 페이지 신규 생성 (4개 플랜: Free, Classroom, Academy, School), 월간/연간 결제 토글 (20% 할인), 기능 비교 테이블, FAQ 섹션, 다국어 지원 (pricing namespace, ko/en/ja 40개 키), PricingCard 컴포넌트, Navbar "요금제" 메뉴 추가** | **2025-11-28** | | **댓글 시스템** | **Comment 데이터 모델 (계층 구조, 반응형), CommentList 컴포넌트 (댓글/답글 표시, 작성/수정/삭제, 낙관적 업데이트), CommentItem (아바타, 시간, 메뉴), CommentInput (자동 높이 조절), API Routes 구현 (GET/POST/PUT/DELETE), 서버 권한 체크 (작성자/글작성자/팀소유자), 실시간 업데이트 (SWR 또는 리패치)** | **2025-11-28** | | **글쓰기 모드 선택 기능** | **모드 선택 화면 추가 (글부터 쓰기 / 그림부터 올리기), URL 파라미터로 모드 관리 (?mode=wrt\|img), ImageDropzone 컴포넌트 (드래그앤드롭 이미지 업로드, 미리보기), ImageFirstLayout 컴포넌트 (이미지+에디터 2컬럼 레이아웃), pendingImageStore 유틸리티 (IndexedDB 기반 이미지 임시 저장, 새로고침해도 유지), 캐릭터 이미지 추가 (startWriting.png, uploadImage.png), 카드 디자인 개선 (그라데이션 배경, 상단 장식 바, 제목 배지, 호버 애니메이션, 이미지 크기 증가 180→240px), 다크 모드 지원, 다국어 지원 (modeSelection namespace, ko/en/ja)** | **2025-12-01** | ### 🚧 진행 중 | 항목 | 설명 | 진행률 | |-----|------|-------| ### 📋 예정 작업 | 항목 | 설명 | 우선순위 | 예상 일정 | |-----|------|---------|---------| | **서버 사이드 Redis 캐싱** | **API Routes에 Redis 캐싱, Rate Limiting 추가** | 🟡 중간 | 2025-11-19 | **Phase 1 완료 목표**: 2025년 11월 15일 --- ## Phase 2: 학습 시스템 **목표**: 체계적인 학습 콘텐츠 제공 **예상 기간**: 2025년 11월 16일 ~ 12월 15일 ### 주요 기능 | 항목 | 설명 | 우선순위 | |-----|------|---------| | 학습 페이지 UI | `/learn` 페이지 레이아웃 | 🔴 높음 | | 레슨 목록 | 카테고리별 레슨 표시 | 🔴 높음 | | 레슨 상세 페이지 | 이론, 예시, 연습문제 표시 | 🔴 높음 | | 진행 상황 트래킹 | 완료한 레슨 체크 및 진행률 | 🔴 높음 | | 퀴즈/연습 문제 | 객관식, 주관식 문제 시스템 | 🟡 중간 | | 레슨 검색/필터 | 난이도, 카테고리별 필터링 | 🟢 낮음 | ### 데이터 준비 - [ ] 초급 레슨 콘텐츠 작성 (10개) - [ ] 중급 레슨 콘텐츠 작성 (10개) - [ ] 연습 문제 제작 (각 레슨당 3-5개) **Phase 2 완료 목표**: 2025년 12월 15일 --- ## Phase 3: 게임화 요소 **목표**: 학습 동기 부여를 위한 게임화 시스템 **예상 기간**: 2025년 12월 16일 ~ 2026년 1월 31일 ### 주요 기능 | 항목 | 설명 | 우선순위 | |-----|------|---------| | 레벨 시스템 | 경험치 계산 및 레벨업 로직 | 🔴 높음 | | 레벨업 애니메이션 | 축하 모달 및 이펙트 | 🟡 중간 | | 스티커 페이지 UI | `/stickers` 갤러리 레이아웃 | 🔴 높음 | | 스티커 획득 시스템 | 조건 확인 및 자동 부여 | 🔴 높음 | | 스티커 알림 | 획득 시 축하 애니메이션 | 🟡 중간 | | 경험치 표시 | 네비게이션 또는 프로필에 XP바 | 🟢 낮음 | | 연속 출석 시스템 | Streak 계산 및 보상 | 🟡 중간 | ### 데이터 준비 - [ ] 스티커 디자인 제작 (50개) - [ ] 스티커 획득 조건 정의 - [ ] 레벨별 경험치 테이블 설계 **Phase 3 완료 목표**: 2026년 1월 31일 --- ## Phase 4: 사용자 경험 강화 **목표**: 사용자 편의성 및 관리 기능 개선 **예상 기간**: 2026년 2월 1일 ~ 3월 15일 ### 주요 기능 | 항목 | 설명 | 우선순위 | |-----|------|---------| | **ProfileDialog (마이페이지)** | **Dialog 형식 대시보드 (탭 기반)** | 🔴 높음 | | ├─ 내정보 탭 | 프로필 정보, 레벨, XP 표시 | 🔴 높음 | | ├─ 내글 탭 | 작성한 글 목록 (페이지네이션) | 🔴 높음 | | ├─ 통계 탭 | 글 수, 레벨, 스티커 통계 차트 | 🟡 중간 | | └─ 설정 탭 | 프로필 편집, 비밀번호 변경, 계정 설정 | 🟡 중간 | | 글 검색 | 제목/내용 기반 검색 | 🟡 중간 | | 알림 시스템 | 인앱 알림 (스티커, 레벨업) | 🟢 낮음 | | 알림 센터 | 알림 목록 및 설정 | 🟢 낮음 | **Dialog 구조**: ``` ProfileDialog (UserProfileButton 클릭 시 열림) ├─ Tabs: 내정보 | 내글 | 통계 | 설정 ├─ 내정보: ProfileCard, LevelBadge, ExperienceBar ├─ 내글: WritingHistory (목록 + 페이지네이션) ├─ 통계: StatsWidget, 차트 └─ 설정: ProfileEditForm, PasswordChangeForm ``` **Phase 4 완료 목표**: 2026년 3월 15일 --- ## Phase 5: 고급 기능 **목표**: 부모님 참여 및 관리자 기능 **예상 기간**: 2026년 3월 16일 ~ 5월 31일 ### 주요 기능 | 항목 | 설명 | 우선순위 | 상태 | |-----|------|---------|------| | ~~팀 관리 기능~~ | ~~팀 생성, 멤버 관리~~ | ~~🔴 높음~~ | ✅ **백엔드 완료 (Phase 1)** | | ~~팀 코드 시스템~~ | ~~한글 코드, Anonymous Auth~~ | ~~🔴 높음~~ | ✅ **백엔드 완료 (Phase 1)** | | ~~피드백 시스템~~ | ~~글에 댓글/평점 작성~~ | ~~🔴 높음~~ | ✅ **구현 완료 (2025-11-28)** | | 부모님 모드 | 자녀 진행 상황 대시보드 (정식 계정 연결 활용) | 🔴 높음 | ⏳ 예정 | | 학습 리포트 | 주간/월간 활동 리포트 | 🟡 중간 | ⏳ 예정 | | 목표 설정 | 일일/주간 목표 설정 | 🟢 낮음 | ⏳ 예정 | | 관리자 패널 | 주제/레슨 관리 UI | 🔴 높음 | ⏳ 예정 | | 사용자 관리 | 사용자 목록, 통계 | 🟡 중간 | ⏳ 예정 | | 콘텐츠 에디터 | 주제/레슨 CRUD | 🔴 높음 | ⏳ 예정 | | 스티커 에디터 | 스티커 업로드 및 관리 | 🟡 중간 | ⏳ 예정 | ### 역할 시스템 ```typescript enum UserRole { STUDENT = 'student', // 학생 PARENT = 'parent', // 부모님 TEAM_OWNER = 'team_owner', // 팀 소유자 ADMIN = 'admin', // 관리자 } ``` **Phase 5 완료 목표**: 2026년 5월 31일 --- ## Phase 6: 최적화 및 확장 (향후 계획) **예상 기간**: 2026년 6월 이후 ### 성능 최적화 - [ ] 이미지 최적화 (Next.js Image) - [ ] 번들 크기 최적화 - [ ] 코드 스플리팅 개선 - [ ] Lighthouse 점수 개선 (목표: 95+) ### 추가 기능 (검토 중) - [ ] 네이버/카카오 소셜 로그인 - [ ] 글 공유 기능 (SNS, 링크) - [ ] 친구 시스템 (팔로우, 친구 추가) - [ ] 글쓰기 대회/챌린지 - [ ] AI 글쓰기 도우미 (맞춤법, 문법 제안) - [ ] 음성 녹음 기능 - [ ] 그림 그리기 도구 통합 - [ ] 모바일 앱 (React Native) --- ## 우선순위 정의 | 기호 | 우선순위 | 설명 | |-----|---------|------| | 🔴 | 높음 | 핵심 기능, 빠른 개발 필요 | | 🟡 | 중간 | 중요하지만 유연한 일정 | | 🟢 | 낮음 | 추가 개선 사항, 여유 있을 때 | --- ## 마일스톤 ### M1: MVP 출시 (2025년 11월 15일) - 회원가입/로그인 - 글쓰기 기본 기능 - 주제 선택 및 저장 ### M2: 학습 시스템 추가 (2025년 12월 15일) - 레슨 콘텐츠 제공 - 진행 상황 트래킹 ### M3: 게임화 완성 (2026년 1월 31일) - 레벨 시스템 - 스티커 컬렉션 ### M4: 베타 출시 (2026년 3월 15일) - ProfileDialog (마이페이지) 및 통계 - 알림 시스템 ### M5: 정식 출시 (2026년 5월 31일) - 부모님 모드 - 관리자 패널 --- ## 개발 원칙 ### 1. 사용자 중심 설계 - 초등학생이 쉽게 사용할 수 있는 직관적 UI - 읽기 쉬운 큰 글씨와 명확한 아이콘 - 복잡한 기능은 단계적으로 안내 ### 2. 성능 최적화 - 빠른 페이지 로딩 (목표: < 2초) - 부드러운 애니메이션 (60fps) - 효율적인 데이터 로딩 (페이지네이션, 캐싱) ### 3. 접근성 (Accessibility) - 키보드 네비게이션 지원 - 스크린 리더 호환 - WCAG 2.1 AA 준수 ### 4. 보안 및 개인정보 - 학생 개인정보 보호 - Firestore 보안 규칙 철저히 적용 - HTTPS 통신 필수 ### 5. 확장 가능성 - 모듈화된 컴포넌트 구조 - 타입 안전성 (TypeScript) - 명확한 데이터 모델 --- ## 기술 부채 관리 ### 현재 기술 부채 | 항목 | 설명 | 해결 계획 | |-----|------|---------| | ~~Firestore 미연동~~ | ~~DB 미구축~~ | ✅ 해결됨 (2025-10-30) | | 테스트 부재 | 단위/통합 테스트 없음 | Phase 4에서 추가 예정 | | 에러 바운더리 | 전역 에러 처리 미흡 | Phase 4에서 개선 예정 | | minH 스크롤 이슈 | write 페이지 불필요한 스크롤 | 검토 필요 | --- ## 팀 구성 (현재) | 역할 | 담당자 | 주요 업무 | |-----|--------|---------| | Full Stack Developer | - | 전체 개발 | | UI/UX Designer | - | 디자인 및 사용자 경험 | | Content Creator | - | 레슨/주제 콘텐츠 작성 | --- ## 성공 지표 (KPI) ### MVP 단계 (M1) - [ ] 회원가입 사용자 50명 - [ ] 작성된 글 100개 이상 - [ ] 평균 세션 시간 5분 이상 ### 베타 단계 (M4) - [ ] 활성 사용자 200명 - [ ] 일일 활성 사용자(DAU) 50명 - [ ] 레슨 완료율 70% 이상 ### 정식 출시 (M5) - [ ] 활성 사용자 1,000명 - [ ] 일일 활성 사용자(DAU) 200명 - [ ] 사용자 만족도 4.5/5.0 이상 - [ ] 평균 재방문율 60% 이상 --- ## 리스크 관리 | 리스크 | 발생 가능성 | 영향도 | 대응 방안 | |-------|-----------|-------|---------| | 개발 일정 지연 | 중간 | 높음 | 기능 우선순위 재조정, MVP 먼저 출시 | | 사용자 이탈 | 낮음 | 높음 | 게임화 요소 강화, 정기적 콘텐츠 업데이트 | | Firebase 비용 초과 | 낮음 | 중간 | 사용량 모니터링, 쿼리 최적화 | | 콘텐츠 부족 | 중간 | 중간 | 외부 작가 섭외, 사용자 제작 콘텐츠 | --- ## 관련 문서 - [PROJECT_STRUCTURE.md](./PROJECT_STRUCTURE.md) - 프로젝트 구조 - [TECH_STACK.md](./TECH_STACK.md) - 기술 스택 - [DATA_MODELS.md](./DATA_MODELS.md) - 데이터 모델 - [CLAUDE.md](./CLAUDE.md) - Claude Code 가이드 --- © 2024 BlueNovaLab. All rights reserved.