📋 KAMUI Admin Dashboard
⚠️ この画面はlocalhost環境専用です。本番環境にはデプロイされません。
📖 プラン変更ロジック
| 変更タイプ | 条件 | 適用タイミング | メッセージ |
|---|---|---|---|
| upgrade | 金額が増える | 即時反映、差額請求 | 「即時反映されます。差額を請求されます」 |
| downgrade | 金額が減る | 現在のプラン終了時 | 「現在のプランが終了時に適用されます」 |
例: KAMUI OS Premium ($98) → Vapor ($30) = downgrade → 期間終了時に適用
Vapor ($30) → KAMUI OS Premium ($98) = upgrade → 即時反映、差額請求
💳 Stripe設定
| 項目 | 値 |
|---|---|
| Vapor Price ID | price_1Spzy9AKXzL5p1a7V7xH7QCk |
| Vapor Payment Link | https://buy.stripe.com/3cI4gygzv7KZ48Lakf6kk03 |
| クーポンコード | LAUNCH50(初月50%OFF = $15) |
| Promo Code ID | promo_1Sq05gAKXzL5p1a7Gu0Jw3JQ |
🔗 Stripe自動紐付けフロー(Step 6 & 6a)
checkout.session.completed Webhookで自動紐付けを実行
| 条件 | 結果 |
|---|---|
| Stripeメール = KAMUI OSメール | ✅ 自動紐付け成功 |
| Stripeメール ≠ KAMUI OSメール | ❌ 紐付けなし(手動Sync Contract必要) |
🧪 手動テストフロー(5パターン)
パターン1: 未購入ユーザー(ログイン済み)
- 未購入のテストアカウントでログイン
- billing画面 → Vaporプラン購入(テストカード使用)
- Stripe Dashboardでcheckout.session.completedイベント確認
- DB確認:
SELECT * FROM core_users WHERE primary_email = 'テストメール' - 期待結果: stripe_customer_idが自動設定されている
パターン2: 購入済みユーザー
- 既に契約済みのアカウントでログイン
- billing画面でプラン状態を確認
- 期待結果: 既存のstripe_customer_idが維持されている
- DB確認: auth_user_idとstripe_customer_id両方が設定済み
- ※ 既存購入者は手動Sync済みのためWebhook不要
パターン3: 未ログインユーザー(新規)
- シークレットウィンドウでvapor.artにアクセス
- 新規アカウント作成(サインアップ)
- billing画面 → Vaporプラン購入(同じメールで)
- Stripe Dashboardでcheckout.session.completedイベント確認
- DB確認: core_usersに新規レコード作成 + stripe_customer_id設定
- 期待結果: auth_user_idとstripe_customer_id両方が自動設定
パターン4: [6a-1] Stripeメール = KAMUIメール(自動紐付け)
- テストアカウント(例: test@example.com)でKAMUI OSにログイン
- billing画面 → 「Select Plan」でVaporを選択
- Stripe決済画面で同じメール(test@example.com)で決済
- 決済完了 → /account/billing?success=true にリダイレクト
- billing画面でVaporカードに「契約中」バッジが表示される
- DB確認:
SELECT stripe_customer_id, stripe_subscription_id, plan_tier, current_price_id FROM core_users WHERE primary_email = 'test@example.com' - 期待結果: 全フィールドが自動設定されている(plan_tier = 'vapor')
パターン5: [6a-2] Stripeメール ≠ KAMUIメール(手動Sync必要)
- テストアカウント(例: kamui@example.com)でKAMUI OSにログイン
- billing画面 → 「Select Plan」でVaporを選択
- Stripe決済画面で異なるメール(stripe@example.com)で決済
- 決済完了 → /account/billing?success=true にリダイレクト
- billing画面でVaporカードは「未契約」状態のまま
- 「Sync Contract」ボタンをクリック
- Stripeメール(stripe@example.com)を入力
- 6桁OTPがstripe@example.comに届く → 入力
- 紐付け完了 → ページリロード
- Vaporカードに「契約中」バッジが表示される
- DB確認: 全フィールドが設定されている
🔒 CORS設定(Supabase Edge Functions)
環境変数 ALLOWED_ORIGINS に以下を設定:
https://4d.kamui.ai,https://kamui.ai,https://vapor.art,https://www.vapor.art,http://localhost:3000,http://localhost:5173