d3ro-voice/memory/handoff-latest.md

6 KiB
Raw Blame History

Session Handoff — 2026-04-12 21:00 (Phase 3.2-B Payple 결제 + 대시보드 Premium)

From: macOS (yunchan-ui-MacBookPro) Last commit: c9baf03 — feat(server+web+desktop): Phase 3.2-B Payple 결제 연동 + 대시보드 Premium 상태 표시 Branch: main Remote: https://gitlab.twentyoz.kr:8443/d3r0/voice.git Working tree: clean (push 필요)

이번 세션에서 한 일

c9baf03 — Phase 3.2-B (27파일, +1318/-98)

A. Payple 결제 연동 (Stripe → Payple 전면 교체)

  • _shared/payple.ts — Payple REST API 래퍼 (auth, billing, cancel, deleteBillingKey, 유틸리티)
  • payple-checkout/index.ts — 빌링키로 첫 결제 실행 + subscriptions/profiles 업데이트
  • payple-webhook/index.ts — 결제완료/취소 이벤트 수신 + DB 반영
  • payple-manage/index.ts — 구독 취소 (빌링키 해지 + cancel_at 설정)
  • DB migration: payment_provider, payple_payer_id, payple_pay_oid 컬럼
  • config.toml: payple-* 3개 함수 verify_jwt=false
  • billing/page.tsx: 티어 통일(team→pro_plus), Payple 컴포넌트로 교체
  • payple-checkout-button.tsx: Payple JS SDK 결제창 + callbackFunction 패턴
  • payple-manage-button.tsx: 구독 취소 확인 다이얼로그
  • Electron LicenseModal: alert 스텁 → shell.openExternal(billingUrl)
  • IPC: LICENSE.OPEN_BILLING + preload license.openBilling() + 핸들러

B. 대시보드 Premium 상태 표시

  • DashboardPage services 배열에 PREMIUM LLM LED 추가
  • 백엔드 인디케이터 카드 (Local/Premium LED) + 티어 카드
  • 사용량 섹션: 전 티어에서 표시 + Premium 모델별(Haiku/Sonnet/Opus) 쿼터
  • 12개 locale × 14개 i18n 키

🚧 미해결 / 미테스트

1. Payple 테스트 미완 (선행 필요)

  • Payple 가맹점 등록 → CST_ID/CUST_KEY/REFUND_KEY/CLIENT_KEY 발급
  • Supabase Secrets: supabase secrets set PAYPLE_CST_ID=... PAYPLE_CUST_KEY=... PAYPLE_REFUND_KEY=... PAYPLE_CLIENT_KEY=...
  • DB migration 배포: supabase db push (20260412000002_payple_billing.sql)
  • Payple 관리자에서 webhook URL 등록: https://{project-ref}.supabase.co/functions/v1/payple-webhook
  • 웹 환경변수: NEXT_PUBLIC_PAYPLE_CLIENT_KEY (없으면 테스트 키 폴백)

2. 대시보드 시각 확인 미완

  • 앱에서 직접 대시보드 UI 확인 필요 (Premium LED, 쿼터 바 등)

3. 세션 만료 렌더러 미동기화 (기존 이슈)

4. LemonSqueezy 코드 잔존

  • LicenseService.ts에 deprecated 코드. 다음 사이클에서 정리

5. Payple 정기 갱신 크론 미구현

  • payple-renew Edge Function + pg_cron 필요

🧭 다음 사이클 계획

  1. Payple 가맹점 등록 + 테스트

    • 테스트 키로 E2E: 웹 결제창 → 빌링키 발급 → 첫 결제 → DB 확인
    • Electron: 업그레이드 버튼 → 웹 열림 → 결제 후 CloudSync tier 갱신
    • 대시보드 시각 확인
  2. Payple 정기 갱신 크론 (payple-renew)

  3. 세션 만료 버그 수정 (CloudSyncService auth-changed emit)

  4. LemonSqueezy 코드 정리

  5. 관리자 백엔드 서비스 웹페이지 (백로그)

    • 사용자 관리 CRM, 구독 현황 대시보드, 쿼터 관리, 결제 이력 조회
    • 별도 admin/ 앱 또는 apps/web 내 admin 라우트 그룹

🔑 다음 세션 시작 시 확인

git pull origin main       # HEAD = c9baf03
pgrep -lf "Electron\.app|next dev"
lsof -i :5173 -sTCP:LISTEN
lsof -i :3000 -sTCP:LISTEN
# 죽어있으면
nohup npm run dev > /tmp/d3ro-desktop.log 2>&1 & disown
nohup npm --workspace=@d3ro/web run dev > /tmp/d3ro-web.log 2>&1 & disown

⚠️ Payple 연동 핵심 포인트

  • Payple JS SDK: 브라우저 전용 → Electron에서는 웹 페이지 경유
  • 테스트 키: cst_id: test, custKey: abcd1234567890, clientKey: test_DF55F29DA654A8CBC0F0A9DD4B556486
  • 테스트 서버: democpay.payple.kr (라이브: cpay.payple.kr)
  • Referer 검증: Payple이 Referer 헤더로 도메인 확인 → PAYPLE_SITE_URL 환경변수 설정 필수
  • 결제 흐름: JS SDK → callbackFunction → Edge Function(payple-checkout) → DB 업데이트
  • 빌링 결제는 서버→서버: Edge Function이 paypleAuth()paypleBilling() 호출

📦 의존성 / 도구

  • Node 22.22.2 / Python 3.13.13 / Supabase CLI 2.84.2
  • Ollama 0.20.5 (gemma4:e4b 기본)
  • Electron 33.4.11 / Next.js 15.5.14
  • SoX 14.4.2 / faster-whisper base (CPU int8)

🧪 마지막 검증 상태

게이트 결과
desktop tsc --noEmit EXIT 0
web tsc --noEmit EXIT 0
Payple Edge Functions 🔲 미배포
DB migration 🔲 미배포
웹 결제 E2E 🔲 미테스트
대시보드 시각 확인 🔲 미확인
git push 미완

🎯 다음 세션 시작 프롬프트

D3RO-VOICE Phase 3.2-B Payple 결제 연동 테스트 + 대시보드 확인.

지난 세션에서 Payple 결제 연동 코드 구현 완료 (27파일 커밋).
아직 테스트/배포 미완.

## 시작 전 반드시
1. /session-handoff resume
2. memory/handoff-latest.md
3. memory/project_status.md

## 첫 액션 — dev 서버 기동
pgrep + lsof로 생존 확인, 죽어있으면 nohup 기동.

## 우선순위
A) Payple 테스트 (가맹점 등록 완료 시)
   - supabase db push (migration)
   - supabase secrets set PAYPLE_*
   - supabase functions deploy payple-checkout payple-webhook payple-manage
   - 웹 billing 페이지에서 테스트 결제
   - Electron 업그레이드 버튼 → 웹 열기 확인

B) 대시보드 시각 확인
   - Premium LLM LED, 백엔드 카드, 쿼터 바

C) 세션 만료 버그 수정

D) 관리자 백엔드 CRM (백로그)

🔗 참고 문서

  • memory/project_status.md — 전체 현황
  • server/supabase/functions/_shared/payple.ts — Payple API 래퍼
  • server/supabase/functions/payple-checkout/index.ts — 결제 Edge Function
  • apps/web/src/components/billing/payple-checkout-button.tsx — 웹 결제 컴포넌트
  • apps/desktop/src/renderer/pages/DashboardPage.tsx — 대시보드 Premium UI
  • https://docs.payple.kr/ — Payple 개발자 문서