予約承認 ヘルプ

概要

予約承認ページでは、承認制プランへの予約リクエスト(ステータス: pending_approval)を一覧表示し、施設オーナーが承認または拒否できます。

プランの approval_mode を「手動承認」(manual) に設定すると、ホスト経由 (reservation-create-host) で作成された予約が自動確定せず、施設側の承認を待つステータスになります。

このページでできること:

  • 承認待ち予約の一覧確認
  • 予約の承認(確定)
  • 予約の拒否(理由の入力が必要)

⚠ 実装状況に関する重要な注意 本機能は段階的にリリース中で、現状は DB / Edge Function / admin の承認 UI までが完成しています。プラン編集 UI からのモード切替、ゲスト経路 (reservation-booking) からの pending_approval 経由、承認通知メール、ゲスト側「承認待ち画面」、承認タイムアウトは 未実装です(詳細は 既知の制限事項 を参照)。Issue #1127 で全体の棚卸しを進めています。


アクセス方法

メインメニュー → 「予約承認」を選択してください。

承認待ちの予約がない場合は「承認待ちの予約はありません」と表示されます。


詳細機能

機能1: 承認待ち一覧

pending_approval ステータスの予約がカード形式で一覧表示されます。

各カードに表示される情報

項目 説明
ゲスト名 予約メタデータに含まれるゲスト名(未設定の場合は予約IDの先頭8文字)
リクエスト日時 予約が作成された日時
プランID 紐付いているプランのID(先頭8文字)

表示順序はリクエスト日時の昇順(古いものが先)です。優先度フィルターは未対応です。


機能2: 承認

予約を確定します。

手順

  1. 承認したい予約カードの「承認」ボタンをクリックします
  2. 予約のステータスが confirmed(確定)に変更されます
  3. 操作内容は内部の reservation_approvals テーブルに記録されます(決定者・日時)

⚠ 通知は現状送信されません (Issue #1127 B5)。承認したことはゲストに自動連絡されないため、別途メール・LINE 等で個別に通知してください。


機能3: 拒否

予約を拒否します。拒否する際は理由の入力が必要です。

手順

  1. 拒否したい予約カードの「拒否」ボタンをクリックします
  2. 理由入力フィールドが表示されます
  3. 拒否理由を入力します(必須)
  4. 「却下を確定」ボタンをクリックします
  5. 予約のステータスが cancelled(キャンセル)に変更されます
  6. 入力した拒否理由が reservation_approvals.rejection_reason に記録されます

操作を取り消すには「キャンセル」ボタンをクリックしてください(予約はそのまま承認待ち状態に戻ります)。

⚠ 拒否通知も現状送信されません (Issue #1127 B5)。拒否理由は DB に保存されますがゲストには届きません。


承認制の設定方法

プランを承認制 (approval_mode='manual') にする手段は、本リリース時点では DB 直接更新のみです。

UPDATE plans SET approval_mode = 'manual' WHERE id = '<plan-id>';

PricePlanForm (/plans/:planId) の admin UI には承認モードの toggle は まだ実装されていません (Issue #1127 B1)。Platform Admin の Supabase Studio などから直接更新してください。

⚠ ゲスト経路 (reservation-booking EF) は approval_mode をまだ参照していません (Issue #1127 B2)。現状 pending_approval に入るのは ホスト経路 (reservation-create-host) 経由の予約のみで、apps/booking から直接予約したゲストは approval_mode='manual' のプランでも従来通り pendingconfirmed に進みます。


既知の制限事項

Issue #1127 で全体棚卸し中。現状の partial 実装ギャップ:

# 項目 状況
B0 「毎回承認 / 初回のみ承認」のモード区別 スキーマ上 'auto' | 'manual' の二値のみ。「初回のみ」を表現する column / フラグが存在しない
B1 プラン編集 UI の approval_mode toggle 未実装 — SQL 直接更新が必要
B2 ゲスト経路 (reservation-booking) の pending_approval 対応 未実装 — 常に pending に入る
B3 apps/booking の「承認待ち画面」「ステータスバッジ」 未実装 — ゲスト目線では承認待ちが見えない
B4 Default Pending Reservation Form の Plan 自動 bind 未実装 — 手動 attach のみ可能 (/plans/:planId の「適用フォーム」セクション)
B5 承認 / 拒否時の通知(メール / LINE / webhook) 未実装
B6 鍵発行レース reservation-create-host は承認状態に関わらず reservation-confirm を invoke するが、reservation-confirm/index.ts:159status !== 'pending' を 400 で弾くため 承認前に鍵は発行されません。動作上の対応は不要。将来的には approval_mode='manual' 時に invoke 自体をスキップする方が意図が明確
B7 承認待ちタイムアウト 未定義 — reservation_approvals に期限 column 無し、承認待ちのまま予約開始時刻を過ぎてもステータスは pending_approval のまま

これらの実装は、Issue #1127 の D 章 (メンバーシップ統合) と E 章 (¥0 サブスク) の方針が ADR で決まった後、個別の実装 issue に分割される予定です。


よくある質問

Q: 承認待ち状態のゲストはどう案内されますか?

現状未実装 (B3) です。ゲスト側 UI で「オーナーの承認をお待ちください」を表示する経路はまだありません。施設側から個別に連絡してください。

Q: 承認・拒否の操作はログに残りますか?

はい。承認・拒否の判断は reservation_approvals テーブルに記録されます(decided_by / decided_at / rejection_reason)。

Q: 承認待ちの件数が多い場合、優先度はありますか?

現時点では表示順序はリクエスト日時の昇順(古いものが先)です。優先度フィルターは未対応です。

Q: 拒否理由はゲストに通知されますか?

現状通知は送信されません (B5)。rejection_reason は DB に保存されますがメール・LINE 等への自動送信機能は未実装です。別途連絡してください。

Q: 「初回のみ承認、2 回目以降は自動」というモードはありますか?

現状ありません (B0)。approval_mode'auto' (全自動) または 'manual' (全件手動) の二値のみで、ゲスト単位の承認履歴を保持する仕組みもありません。Issue #1127 D 章でメンバーシップ機構との統合 (¥0 メンバー = 初回承認済みゲスト) として議論中です。

Q: 承認待ちのまま予約開始時刻を過ぎた場合、どうなりますか?

現状自動処理は無し (B7)。pending_approval のままステータスは変わりません。手動で承認 or 拒否してください。タイムアウト挙動は今後定義予定です。


関連ページ