chore: 빅뱅 사이클 1차 wrap-up — 핸드오프 + Phase 5 체크리스트

빅뱅 Phase 1~6 완료 (Phase 5는 OAuth provider 연결 대기):
- Phase 1: 사용자별 SQLite 격리 (816f527)
- Phase 1.5: 로컬 모드 entry point (1a01cea)
- Phase 2: 온보딩 + Cloud Sync 티저 (f1321df)
- Phase 4: 티어 enforcement 로컬 해방 (46b77f1)
- Phase 3: 로컬 우선 sync + login_required UI (ceadf1b) [재정의]
- Phase 5: 3 클라이언트 일원화 검증 → OAuth provider 대기
- Phase 6: wrap-up (이 커밋)

handoff-latest 새로 작성, 이전 스냅샷은 archive로 이동.
project_status에 Phase 5 OAuth 연결 가이드 + 검증 체크리스트 기록.
This commit is contained in:
윤찬 2026-04-11 10:37:40 +09:00
parent ceadf1b6f3
commit 817b4a2580
3 changed files with 289 additions and 97 deletions

View file

@ -208,6 +208,33 @@ OAuth provider도 아직 Supabase에 설정 안 된 상태. 강제 게이트는
- `~/Library/Application Support/d3ro-voice/users/${uuid}/d3ro.db` 파일 생성 확인
- 기존 `d3ro-voice.db`가 있는 환경에서 archive rename 동작 확인
### SaaS [7] 3 클라이언트 일원화 검증 — **OAuth provider 연결 대기** (Phase 5)
> Phase 1~4+3이 로컬/클라우드 feature gate + sync 인프라를 모두 배선했으나,
> 실제 로그인을 통해 "데스크톱 ↔ 웹 ↔ 모바일 같은 데이터 관찰"을 검증하려면 Supabase OAuth provider 연결이 선행되어야 함.
**사용자가 해야 할 선행 작업 (Supabase 대시보드)**
1. https://supabase.com/dashboard/project/llnocwyqvhgwpdjcqqyw/auth/providers 접속
2. **Google provider 활성화**:
- Google Cloud Console에서 OAuth 2.0 Client ID 발급
- Application type: Web application
- Authorized redirect URIs: `https://llnocwyqvhgwpdjcqqyw.supabase.co/auth/v1/callback`
- Supabase 대시보드의 Google provider에 Client ID/Secret 입력
3. **(선택) GitHub provider**도 동일 패턴으로 활성화
4. 데스크톱 deep link scheme은 이미 `d3ro-voice://auth-callback`으로 설정됨
**OAuth 연결 후 검증 체크리스트 (다음 세션에서)**
- [ ] 데스크톱 Settings → Cloud Sync → Google 클릭 → 브라우저 동의 → 앱으로 deep link 콜백
- [ ] `[auth:signin] DB opened for ${uuid}` 로그 + `users/${uuid}/d3ro.db` 파일 생성
- [ ] `[auth:signin] Initial push done` + `Initial pull done` 로그
- [ ] `subscriptions` 테이블에 free 티어 row 자동 생성 (auth trigger)
- [ ] LicenseService tier가 'free'로 sync됨 (tier-changed 이벤트)
- [ ] 웹 앱(`apps/web`) 에서 같은 계정으로 로그인 → 데스크톱에서 생성한 history/meetings 즉시 조회
- [ ] 웹에서 meeting 편집 → 데스크톱에 Realtime으로 반영 (5초 이내)
- [ ] 모바일 Expo 앱에서 같은 계정 로그인 → 같은 데이터
- [ ] 데스크톱 signOut → `LicenseService.resetToFree()` + `users/_local/d3ro.db`로 복귀 → 익명 로컬 모드 계속 동작
- [ ] 로그아웃 상태에서 PREMIUM_LLM 호출 시도 시 `UpgradePromptModal` (login_required) 표시
### SaaS [6] 로컬 우선 sync + login_required UI (Phase 3, 2026-04-11)
> 빅뱅 Phase 3의 원래 설계("Supabase = source of truth")는 로컬 entry point 철학과 충돌하므로 재정의.