管理コンソールのページと運用
提供済みの各管理ページと、請求、モデレーション、書き込み操作に対する安全策を説明します。
スターターのコミット
2a1a04aと同期しています。
メニューではなく、運用担当者が知りたいことから始めます。「この請求はどの組織のものか」「クレジットが付かないのはなぜか」「このアカウントを停止すべきか」「この上限を誰が変更したか」。管理コンソールはアプリケーション側の証拠を集めますが、Stripe、アクセス解析、問い合わせ管理の代わりにはなりません。
最も安全な手段を選ぶ
- まず事実を確認します。
/usersで正しい認証事業者のアカウントを特定し、/organizationsでテナント、プラン、クレジット、請求を調べます。 - 問い合わせ対応と調査には
admin_roを使い、記録に残る書き込みが必要なときだけadmin_rwを持つ運用担当者へ引き継ぎます。 - Webhook の原因を直した後は Stripe の Resend を使います。担当者がシステム外で処理し、アプリ側のイベントを終端状態にするときだけ Resolve を使います。
- 不正利用への対応でアクセスを止めるならアカウント停止、顧客の依頼による消去にはアカウントのデータライフサイクルを使います。保持する記録とその理由が異なります。
操作完了の条件: 対象のアカウントと組織を確認し、最小権限の操作を選び、正本となるシステムで結果を検証し、すべての書き込みに内容の分かる /audit 記録が残ることです。
管理コンソールは運用作業のための画面であり、プロダクト分析の代わりではありません。概要画面では、直近の登録、有効または支払い遅延中のサブスクリプション、停止中のアカウント、判断待ちの Stripe イベントなど、担当者の次の行動につながる状態を強調します。売上、コンバージョン、解約率は Stripe または分析ツールで扱います。
ワークスペース
/は運用指標、最近のアカウントと注文、対応待ちキュー、手動プランとクレジット付与ツールを表示します。ユーザーを対象にした付与は、そのユーザーの個人組織に適用されます。/usersはメール、UUID、ニックネームで検索し、プロバイダーに紐づく正確なアカウントを特定します。1 つのメールに複数のアカウント行が存在できるため、メールは認可キーではありません。/organizationsは名前、スラッグ、UUID、Stripe 顧客 ID で検索します。組織は、共有クレジット、プラン、サブスクリプション、Stripe 顧客を所有するテナントです。詳細画面では、識別情報、メンバー、現在適用されるプラン、サブスクリプション履歴、クレジット台帳、注文、利用人数上限の上書きを確認できます。
サポートではアカウントと組織の区別が重要です。/users で人物を特定し、/organizations で請求と権限が属するワークスペースを調べます。
売上関連
/ordersは注文番号、サブスクリプション、組織、ユーザー UUID、メールでフィルターまたは検索できます。履行列は、支払い済み注文が約束したクレジットと対応する台帳行を比較し、付与漏れや重複を見えるようにします。/stripe-eventsは Stripe の未加工データを公開せず、記録された Webhook 配信と処理状態を表示します。保留中のイベントは原因を直し、Stripe の Resend を使って外部サービスの現在状態から再実行します。Resolve は、担当者がシステム外で処理したことを記録する操作で、メモが必須です。解決は終端状態であり、イベントの再処理ではありません。/reconciliationは7日、30日、90日の期間について、ローカル側の請求照合を実行します。クレジットのない支払い済み注文、台帳残高のずれ、停止した Webhook イベントを検出します。アプリに一度も届かなかった Stripe の請求は検出できないため、Stripe 側との比較にはpnpm reconcile:stripeを使います。
製品運用
/reservationsは予約番号、サービス、ユーザー、時刻、タイムゾーン、状態を一覧表示します。製品設定で予約が無効なら、停止中の機能を照会せず、その旨を表示します。/feedbacksは顧客の評価、内容、状態、識別情報、送信日時を表示します。/affiliatesは紹介されたユーザー、紹介者、状態、対象注文、支払額、報酬を表示します。
これらはリリース済みコンソールの確認画面です。製品サービスに未実装のワークフロー状態や編集機能を追加するものではありません。
信頼と安全
/moderationはアカウントの停止と復元を行い、完全一致メールまたはドメインの登録ブロックルールを管理します。停止は有効なセッションを無効化してログインを防ぎますが、ユーザー、台帳、アップロード、組織の記録は残します。アカウント削除ではありません。/auditは管理書き込みのページ分割された履歴で、実行者、ロール、操作、対象、状態、メモ、ネットワーク情報、メタデータを表示します。
既定では、停止は同じメールアドレスを共有する全アカウント行を対象にし、ブロックルールも追加します。これにより、新しい OAuth アカウントによる回避を防ぎます。メール照合ではプラス接尾辞を除去し、Gmail ではドットも除去します。ドメインルールは使い捨てメールの大量登録に対応するためのものです。
書き込みの安全策
提供される書き込み機能は、手動クレジット付与、無償プランの付与と取り消し、組織の利用人数上限の上書きとリセット、アカウントの停止と復元、ブロックリスト変更、Stripe イベントの終端解決に限定されています。
すべての提供済み書き込みルートは admin_rw を要求し、同一オリジンのリクエストを検証して、管理操作用の監査ロガーを呼び出します。クレジット付与には冪等性キーが必要です。決定的かつ一意な台帳取引番号を生成するため、同じ操作を再試行しても二重に付与されません。手動のプランとクレジットは既定で無期限です。7日、30日、90日、または任意の有効期限を指定する場合は、未来の日時でなければなりません。
保存済みの Stripe Webhook データを再処理するボタンは意図的に用意していません。原因を修正して Stripe の Resend を使ってください。また、アカウント停止を削除へ変換することもありません。ユーザーの依頼によるデータ出力と消去は、別のアカウントデータライフサイクルに従います。
ローカル開発以外に公開する前に、管理コンソールのセットアップとアクセスを確認してください。
永続 job の復旧
/jobs は payload JSON や dedupe key を出さず、status、attempt、due age、subject、安全な error を表示します。Write operator は監査 note 付きで idempotent failed job の retry または未 claim notification の cancel ができます。Running job は provider effect 済みの可能性があるため取消できません。Credit、storage、account lifecycle、campaign は所有 workflow から復旧します。