docs: Sync documentation from private repository
This commit is contained in:
parent
a41a2dc903
commit
6e64188d60
@ -1,10 +1,11 @@
|
||||
# 라온누리 - 프로젝트 구조
|
||||
|
||||
> 최종 업데이트: 2025-11-10 (다중 글조각 관리, 테마 레시피 추가)
|
||||
> 최종 업데이트: 2025-11-10 (주제 변경 경고, 다중 글조각 관리)
|
||||
|
||||
초등학생을 위한 창작 글쓰기 교육 플랫폼
|
||||
|
||||
**주요 업데이트** (2025-11-10):
|
||||
- ⚠️ 주제 변경 경고 Dialog (내용 초기화 알림, 임시 저장 안내)
|
||||
- 📝 다중 글조각 관리 시스템 (DraftManager, SavedDraftsDialog)
|
||||
- 💾 강화된 자동 저장 (2초 debounce, 저장 상태 표시)
|
||||
- 🎨 테마 슬롯 레시피 추가 (Dialog, Select 자동 배경색)
|
||||
@ -24,7 +25,7 @@
|
||||
|-------|------|------|---------|
|
||||
| **랜딩 페이지** | `/` | 서비스 소개 및 홍보 (비로그인 전용) | Hero, Features, How It Works, CTA, Footer<br>로그인 시 `/home`으로 자동 리다이렉트 |
|
||||
| **유저 홈** | `/home` | 인증된 사용자 대시보드 | 환영 메시지, 빠른 시작 대시보드, 최근 활동<br>비로그인 시 `/`로 자동 리다이렉트<br>정식 계정은 "내 팀" 카드 추가 표시 |
|
||||
| **글쓰기** | `/write` | Tiptap 기반 순수 텍스트 에디터 + 주제 선택 | 주제 선택 (자유 주제/개인 주제/팀 주제)<br>제목 입력 (Editable), 순수 텍스트 에디터 (포맷팅 없음)<br>🆕 **다중 글조각 관리** (최대 10개), "새 글쓰기" / "저장된 글조각" 버튼<br>🆕 **강화된 자동 저장** (2초 debounce, 저장 상태 표시: 저장 중/저장됨)<br>템플릿 미리채우기 (제목/내용), Firestore 저장<br>비로그인도 접근 가능 (저장 시 로그인 유도) |
|
||||
| **글쓰기** | `/write` | Tiptap 기반 순수 텍스트 에디터 + 주제 선택 | 주제 선택 (자유 주제/개인 주제/팀 주제)<br>🆕 **주제 변경 경고** (작성 중 내용 초기화 알림, 임시 저장 안내)<br>제목 입력 (Editable), 순수 텍스트 에디터 (포맷팅 없음)<br>🆕 **다중 글조각 관리** (최대 10개), "새 글쓰기" / "저장된 글조각" 버튼<br>🆕 **강화된 자동 저장** (2초 debounce, 저장 상태 표시: 저장 중/저장됨)<br>템플릿 미리채우기 (제목/내용), Firestore 저장<br>비로그인도 접근 가능 (저장 시 로그인 유도) |
|
||||
| **테스트** | `/test` | 팀 코드 시스템 테스트 페이지 | 팀 코드 생성/검증 테스트<br>팀/학생 생성 테스트<br>학생 로그인 테스트<br>authStore 상태 확인 |
|
||||
| **팀 목록** | `/team` | 내가 만든 팀 목록 (정식 계정 전용) | 팀 카드 그리드, 팀 정보 (코드, 멤버 수, 보안 설정)<br>"새 팀 만들기" 버튼 |
|
||||
| **팀 생성** | `/team/create` | 새 팀 만들기 (정식 계정 전용) | 팀 이름 입력, 팀 코드 자동 생성<br>🆕 **5단계 보안 레벨 선택** (RadioCard, 애니메이션)<br>🆕 **명단 관리 (Level 2/4)**: TagsInput으로 Enter/쉼표 입력<br>생성 후 `/team/[teamId]`로 이동 |
|
||||
@ -135,6 +136,7 @@
|
||||
- ✅ 순수 텍스트 입력 (포맷팅 없음)
|
||||
- ✅ 초등학생 친화적 단순 인터페이스
|
||||
- ✅ 실시간 글자 수/단어 수 카운터
|
||||
- ✅ 🆕 **주제 변경 경고 Dialog** (작성 중 내용 초기화 알림 + 임시 저장 안내)
|
||||
- ✅ 🆕 **다중 글조각 관리** (최대 10개, FIFO 방식)
|
||||
- ✅ 🆕 **강화된 자동 저장** (2초 debounce, localStorage)
|
||||
- ✅ 🆕 **저장 상태 표시** (저장 중 → 저장됨 → 시간 표시)
|
||||
|
||||
@ -67,6 +67,7 @@
|
||||
| **테마 슬롯 레시피** | **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** |
|
||||
|
||||
### 🚧 진행 중
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 라온누리 - 기술 스택 및 개발 환경
|
||||
|
||||
> 최종 업데이트: 2025-11-07 (타입 Enum화, 팀 주제 시스템 추가)
|
||||
> 최종 업데이트: 2025-11-10 (주제 변경 경고 Dialog, 다중 글조각 관리)
|
||||
|
||||
---
|
||||
|
||||
@ -405,32 +405,52 @@ const nickname = teamManager.getMemberNickname(team, uid, user?.name);
|
||||
|
||||
```
|
||||
1. 사용자가 /write 페이지 접근
|
||||
├─> LocalStorage에서 임시 저장된 글 불러오기
|
||||
├─> LocalStorage에서 임시 저장된 글 불러오기 (DraftManager)
|
||||
└─> 에디터에 복원
|
||||
|
||||
2. 글 작성 중
|
||||
2. 주제 선택
|
||||
├─> 작성 중인 내용 없음: 바로 주제 변경 + 템플릿 적용
|
||||
└─> 작성 중인 내용 있음:
|
||||
├─> 🆕 **경고 Dialog 표시**
|
||||
│ ├─> "제목과 내용이 모두 초기화됩니다"
|
||||
│ └─> "임시 저장된 내용은 저장된 글조각에서 복구 가능"
|
||||
├─> 사용자 선택:
|
||||
│ ├─> "취소": 주제 변경 취소
|
||||
│ └─> "확인하고 초기화": 주제 변경 + 내용 초기화
|
||||
└─> 확인 시 템플릿 미리채우기 (제목/내용)
|
||||
|
||||
3. 글 작성 중
|
||||
├─> 제목: Editable 컴포넌트 (인라인 편집)
|
||||
├─> 본문: Tiptap 순수 텍스트 에디터 (포맷팅 비활성화)
|
||||
│ └─> 초등학생을 위한 단순한 텍스트 입력에 집중
|
||||
├─> 3초마다 LocalStorage에 자동 저장
|
||||
├─> 2초마다 LocalStorage에 자동 저장 (DraftManager, FIFO)
|
||||
├─> 저장 상태 표시 (저장 중 → 저장됨 → 시간)
|
||||
└─> 하단 고정 버튼 (취소, 저장)
|
||||
|
||||
3. 저장 버튼 클릭
|
||||
4. 저장 버튼 클릭
|
||||
├─> 미인증 시: 로그인 다이얼로그 표시
|
||||
└─> 인증 시:
|
||||
└─> writingManager.createWriting() 호출
|
||||
├─> 유효성 검사 (제목, 내용)
|
||||
├─> 텍스트 통계 계산 (글자 수, 단어 수)
|
||||
├─> Firestore에 저장
|
||||
└─> LocalStorage 임시 저장 삭제 후 /home 이동
|
||||
└─> LocalStorage draft 삭제 후 /home 이동
|
||||
|
||||
4. WritingManager API
|
||||
5. WritingManager API
|
||||
├─> createWriting() - 새 글 작성
|
||||
├─> getWriting() - 글 조회
|
||||
├─> getUserWritings() - 사용자 글 목록
|
||||
├─> getRecentWritings() - 최근 글 목록
|
||||
├─> updateWriting() - 글 수정
|
||||
└─> deleteWriting() - 글 삭제
|
||||
|
||||
6. DraftManager (클라이언트 전용)
|
||||
├─> saveDraft() - 글조각 저장 (최대 10개, FIFO)
|
||||
├─> getDraft() - 글조각 조회
|
||||
├─> getAllDrafts() - 전체 글조각 목록
|
||||
├─> deleteDraft() - 글조각 삭제
|
||||
├─> setCurrentDraftId() - 현재 편집 중인 draft 설정
|
||||
└─> migrateLegacyDraft() - 기존 단일 draft 마이그레이션
|
||||
```
|
||||
|
||||
### 4. 상태 관리 원칙
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user