feat(desktop): SaaS [6] 로컬 우선 sync + login_required UI (빅뱅 Phase 3)
Phase 3 재정의: Supabase = source of truth 방향 철회. 로컬 entry point 철학 하에 "로컬이 SoT, 클라우드는 로그인 시 mirror"로 확정. CloudSyncService._initialSync(): - _onAuthenticated 끝에 fire-and-forget 호출 - pushAll → pullAll 순차 실행 - signin: 익명 로컬 데이터를 사용자 계정으로 업로드 - restore: 다른 기기 변경 반영 - 실패 시 warn만, 수동 Sync 버튼으로 재시도 가능 types.ts: - FeatureAccess.reason: 'login_required' 추가 - UpgradePromptEvent.reason: 'login_required' 추가 LicenseService: - consumeQuota(): login_required 케이스 — promptUpgrade + D3ROError(TierRequired) - promptUpgrade(): login_required 시 requiredTier='free' (로그인만 하면 free로 바로 사용 가능) - quota_exceeded 시 현재 tier 상위로 승격 제안 UpgradePromptModal: - isLoginRequired 분기 — title/desc 교체 - Primary button: "로그인하기" → d3ro:open-settings event (tab=cloud) i18n ko/en: - license.loginRequired.title/desc/signIn 추가
This commit is contained in:
parent
46b77f1118
commit
ceadf1b6f3
7 changed files with 103 additions and 6 deletions
|
|
@ -324,6 +324,9 @@
|
|||
"license.quotaExceeded.desc": "Pro로 업그레이드하면 무제한으로 사용할 수 있습니다",
|
||||
"license.tierRequired.title": "{{feature}}은(는) {{tier}} 기능입니다",
|
||||
"license.tierRequired.desc": "{{tier}}로 업그레이드하여 잠금을 해제하세요",
|
||||
"license.loginRequired.title": "{{feature}}은(는) 로그인이 필요합니다",
|
||||
"license.loginRequired.desc": "클라우드 기능을 사용하려면 로그인하세요. 로컬 기능은 로그인 없이도 계속 사용할 수 있습니다.",
|
||||
"license.loginRequired.signIn": "로그인하기",
|
||||
"license.tryTomorrow": "내일 다시 사용하기",
|
||||
"license.learnMore": "알아보기",
|
||||
"license.upgradeBenefits": "업그레이드 혜택",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue