予約承認 ヘルプ
概要
予約承認ページでは、承認制プランへの予約リクエスト(ステータス: 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: 承認
予約を確定します。
手順
- 承認したい予約カードの「承認」ボタンをクリックします
- 予約のステータスが
confirmed(確定)に変更されます - 操作内容は内部の
reservation_approvalsテーブルに記録されます(決定者・日時)
⚠ 通知は現状送信されません (Issue #1127 B5)。承認したことはゲストに自動連絡されないため、別途メール・LINE 等で個別に通知してください。
機能3: 拒否
予約を拒否します。拒否する際は理由の入力が必要です。
手順
- 拒否したい予約カードの「拒否」ボタンをクリックします
- 理由入力フィールドが表示されます
- 拒否理由を入力します(必須)
- 「却下を確定」ボタンをクリックします
- 予約のステータスが
cancelled(キャンセル)に変更されます - 入力した拒否理由が
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-bookingEF) はapproval_modeをまだ参照していません (Issue #1127 B2)。現状pending_approvalに入るのは ホスト経路 (reservation-create-host) 経由の予約のみで、apps/bookingから直接予約したゲストはapproval_mode='manual'のプランでも従来通りpending→confirmedに進みます。
既知の制限事項
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:159 で status !== '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 拒否してください。タイムアウト挙動は今後定義予定です。