feat(server+web+desktop): Phase 3.2-B Payple 결제 연동 + 대시보드 Premium 상태 표시
Payple PG 연동: - _shared/payple.ts: Payple API 래퍼 (auth/billing/cancel/deleteBillingKey) - payple-checkout Edge Function: 빌링키 결제 + 구독 활성화 - payple-webhook Edge Function: 결제완료/취소 이벤트 - payple-manage Edge Function: 구독 취소 (빌링키 해지) - DB migration: payment_provider + payple_payer_id + payple_pay_oid - 웹 billing 페이지: Payple JS SDK 결제창 + 관리 버튼 (Stripe 대체) - Electron LicenseModal: shell.openExternal → 웹 결제 페이지 대시보드 Premium 상태: - CrtDisplay services에 PREMIUM LLM LED 추가 - 백엔드 인디케이터 카드 (Local/Premium) + 티어 카드 - 사용량 섹션: 전 티어 표시 + 모델별 Premium 쿼터 - 12개 locale × 14개 i18n 키
This commit is contained in:
parent
b8cb665264
commit
c9baf031c9
27 changed files with 1318 additions and 98 deletions
30
server/supabase/migrations/20260412000002_payple_billing.sql
Normal file
30
server/supabase/migrations/20260412000002_payple_billing.sql
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
-- Phase 3.2-B: Payple 결제 연동을 위한 스키마 확장
|
||||
-- 기존 Stripe 필드를 보존하면서 Payple 결제 수단을 추가
|
||||
|
||||
-- 1. payment_provider 컬럼 — 어떤 결제 수단으로 구독했는지
|
||||
ALTER TABLE public.subscriptions
|
||||
ADD COLUMN IF NOT EXISTS payment_provider text NOT NULL DEFAULT 'none';
|
||||
|
||||
-- 기존 Stripe 구독자는 payment_provider = 'stripe' 로 갱신
|
||||
UPDATE public.subscriptions
|
||||
SET payment_provider = 'stripe'
|
||||
WHERE stripe_customer_id IS NOT NULL
|
||||
AND payment_provider = 'none';
|
||||
|
||||
-- CHECK 제약 추가
|
||||
ALTER TABLE public.subscriptions
|
||||
ADD CONSTRAINT subscriptions_payment_provider_check
|
||||
CHECK (payment_provider IN ('none', 'stripe', 'payple'));
|
||||
|
||||
-- 2. Payple 결제 정보 컬럼
|
||||
ALTER TABLE public.subscriptions
|
||||
ADD COLUMN IF NOT EXISTS payple_payer_id text, -- 빌링키 (PCD_PAYER_ID)
|
||||
ADD COLUMN IF NOT EXISTS payple_pay_oid text; -- 최근 주문번호 (PCD_PAY_OID)
|
||||
|
||||
-- 3. 인덱스: 빌링키로 구독 조회 (갱신 시 사용)
|
||||
CREATE INDEX IF NOT EXISTS idx_subscriptions_payple_payer
|
||||
ON public.subscriptions(payple_payer_id)
|
||||
WHERE payple_payer_id IS NOT NULL;
|
||||
|
||||
-- 4. RLS: 기존 subscriptions 정책 그대로 적용 (user_id = auth.uid())
|
||||
-- 새 컬럼은 기존 RLS 정책이 자동 커버하므로 추가 정책 불필요
|
||||
Loading…
Add table
Add a link
Reference in a new issue