d3ro-voice/server/supabase/migrations
윤찬 6e52c18e5b feat(desktop+server): Phase 3.2 Premium LLM — Anthropic Claude 프리미엄 파이프라인 + 모델별 쿼터 + SaaS UI
빅뱅 8/8 마지막 성공 기준 달성. Supabase Edge Function(llm-proxy)을 통해
Anthropic Claude를 호출하는 PremiumLLMService 신규 구현. 사용자가 Settings에서
Local/Premium 백엔드를 선택하면 VoiceModeService가 자동 분기하고, Premium 실패 시
Local로 silent fallback + 상단 중앙 배너 알림.

실측: Claude Haiku refine 1.6~3.2초 (이전 qwen3 42.9초 → 13~27배 빠름).

주요 변경:
- PremiumLLMService 신규 (싱글톤+EventEmitter, processText/chatStream,
  Supabase functions.invoke 기반, _ensureAuth 가드)
- llm-prompts.ts: SYSTEM_PROMPTS를 Local/Premium 공유 모듈로 추출
  (resolveSystemPrompt 헬퍼)
- VoiceModeService: _getLLMProcessor → _runProcessorWithFallback 라우터 +
  premium-llm-fallback 이벤트
- CloudSyncService: getAccessToken(async), getAnonKey, invokeFunction(auth
  헤더 자동 처리, 에러 body 파싱)
- IPC: LLM.PREMIUM_* 채널 6개 + preload API + llm-handlers 이벤트 전달
  (safeSendToRenderer 헬퍼)
- AppConfig.llmBackend: 'local' | 'premium' (기본 'local')
- Settings UI: Backend 드롭다운 + Premium 선택 시 Ollama UI 숨김 + 라이선스
  모달 자동 오픈
- AppLayout: 상단 중앙 Snackbar fallback 배너 (8초, warning filled)
- LicenseModal: 라이선스 키 입력 제거 → SaaS 구독 관리 UI 전환
  (Free/Pro/Pro+ 업그레이드 버튼, Payple 준비 중 스텁)
- 등급 비교 표: featureLabel i18n 번역 수정

서버 (Supabase Edge Functions):
- quota.ts: 모델별 쿼터 구조 (llm_haiku/sonnet/opus × free/pro/pro_plus),
  주간/일간 기간 분리, modelToQuotaKey 매핑, consumeQuota baseLimit 파라미터화
- llm-proxy: 모델별 쿼터 체크 + 소비 (checkQuota → consumeQuota 원자적),
  verify_jwt=false (2026 sb_publishable_ 키 호환)
- config.toml: llm-proxy verify_jwt = false
- migration 20260412000001: tier team→pro_plus 통일, subscriptions.overage_credits
  컬럼, consume_quota RPC (원자적 base→overage fallback)

Tier/쿼터:
- free: Haiku 250/주간, Sonnet/Opus 불가
- pro ₩9,900: Haiku 1500/일, Sonnet 300/일, Opus 50/일
- pro_plus ₩29,900: Haiku 무제한, Sonnet 1500/일, Opus 300/일
- api-client SubscriptionTier: team→pro_plus, overage_credits 필드 추가
2026-04-12 18:28:02 +09:00
..
20260409000001_initial_schema.sql feat(V2-2): Supabase 인프라 — 스키마 + RLS + Edge Functions 스캐폴딩 2026-04-08 15:21:08 +09:00
20260409000002_rls_policies.sql feat(V2-2): Supabase 인프라 — 스키마 + RLS + Edge Functions 스캐폴딩 2026-04-08 15:21:08 +09:00
20260409000003_auth_triggers.sql feat(V2-2): Supabase 인프라 — 스키마 + RLS + Edge Functions 스캐폴딩 2026-04-08 15:21:08 +09:00
20260409000004_storage_buckets.sql feat(V2-2): Supabase 인프라 — 스키마 + RLS + Edge Functions 스캐폴딩 2026-04-08 15:21:08 +09:00
20260410000001_team_invites.sql feat(V2-3차): pull 확장 + invite flow + Realtime + 테스트 + mobile UI 교체 2026-04-10 08:34:52 +09:00
20260410000002_knowledge_documents.sql feat(V2-4차): Database 제네릭 복원 + /chat + /knowledge + Resend + Push + 문서 생성 2026-04-10 08:51:53 +09:00
20260410000003_push_tokens.sql feat(V2-4차): Database 제네릭 복원 + /chat + /knowledge + Resend + Push + 문서 생성 2026-04-10 08:51:53 +09:00
20260410000004_pgvector_knowledge.sql feat(V2-5차): pgvector 시맨틱 검색 + chat 스트리밍 + doc 편집 + VoiceAction + Realtime + storage + 메모 2026-04-10 09:30:41 +09:00
20260411000001_fix_team_members_rls_recursion.sql fix(desktop+supabase): OAuth 로그인 완주 + RLS 재귀 픽스 (빅뱅 Phase 5 Part 1) 2026-04-11 11:55:42 +09:00
20260411000002_realtime_publication.sql fix(desktop+supabase): 로컬 ID UUID 통일 + Realtime publication (빅뱅 Phase 5 Part 2) 2026-04-11 18:46:22 +09:00
20260412000001_tier_unification_and_overage.sql feat(desktop+server): Phase 3.2 Premium LLM — Anthropic Claude 프리미엄 파이프라인 + 모델별 쿼터 + SaaS UI 2026-04-12 18:28:02 +09:00