<!-- https://unlockos.io/ja/manual/reservation-approvals -->

# 予約承認 ヘルプ

## 概要

承認制プラン（`approval_mode='manual'`）への予約リクエスト（ステータス: `pending_approval`）を、施設オーナーが承認または拒否する機能です。

以前は「予約承認」という独立したメニュー・画面がありましたが、現在は **「フォーム」ページの「回答」タブに統合** されています。旧URL `/reservation-approvals` および `/guest-submissions` にアクセスした場合は、自動的に `/forms?tab=responses` へリダイレクトされます（旧URLをブックマークしていても問題ありません）。

このページ（フォーム → 回答タブの「仮予約 / 承認待ち」カード）でできること：

- 承認待ち予約の一覧確認（Default Pending Reservation Form の回答として表示）
- 予約の承認（無料プラン・会員枠は即確定、有料プランは承認後に支払いリンクを送付）
- 予約の拒否（理由の入力が必須。ゲストに却下理由メールが自動送信されます）

> **承認/却下は「予約」ダッシュボードの予約詳細パネルからも行えます。** `pending_approval` 状態の予約を開くと、同じ承認・却下コントロールが表示されます。運用しやすい方をお使いください。

---

## アクセス方法

メインメニュー → 「フォーム」→ 「回答」タブ → **「仮予約 / 承認待ち」** カードをクリックします。

承認待ちの予約がある場合、一覧に **「承認待ち」バッジ** の付いた行が表示されます。行をクリックすると詳細パネルが開き、承認・却下の操作ができます。

承認待ちの予約がない場合は一覧が空になります。

---

## 詳細機能

## 機能1: 承認待ち一覧

`pending_approval` 状態の予約は、Default Pending Reservation Form の回答として一覧表示され、行に **「承認待ち」バッジ** が付きます。行をクリックすると右側（またはモバイルではモーダル）に詳細パネルが開き、フォームの回答内容（ゲスト名など、フォームに設定した項目）と承認・却下ボタンが表示されます。

「フィルター」欄でゲスト名・メールアドレスによる絞り込みもできます（回答タブ共通の機能）。

## 機能2: 承認

詳細パネルの **「承認」** ボタンをクリックすると、その場で（追加入力なしの1クリックで）予約が承認されます。

承認後の動作はプランの料金によって分かれます。

| プランの種類 | 承認後の動作 |
|-------------|-------------|
| 無料プラン、または会員の使い放題枠を消費する予約 | 即座に確定（`confirmed`）し、鍵発行とチェックイン確定メールが送られます |
| 有料プラン | 予約は `pending`（支払い待ち）になり、ゲストに支払いリンクのメールが送信されます。ゲストが支払いを完了すると鍵が発行されます |

いずれの場合も、承認したことを知らせるメールがゲストに自動送信されます（施設側で個別に連絡する必要はありません）。

承認内容は `reservation_approvals` テーブルに記録されます（決定者・日時）。

## 機能3: 拒否

却下する際は理由の入力が必須です。

### 手順

1. 詳細パネルの **「却下」** ボタンをクリックします
2. 理由入力欄が表示されます
3. 拒否理由を入力します（必須。入力するまで確定ボタンは押せません）
4. **「却下」** ボタン（確定用）をクリックします
5. 予約のステータスが `cancelled`（キャンセル）に変わります
6. 入力した拒否理由が `reservation_approvals.rejection_reason` に記録され、**その理由を記載した却下メールがゲストに自動送信されます**

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

---

## 承認モードの設定方法（プラン単位）

プランを「毎回承認」モードにするには、[料金プラン設定](plan-form.md) の編集画面で **「予約の承認」** セクションの **「予約ごとに毎回承認する」** チェックボックスをオンにします。以前のようなSQL直接更新は不要です。

- この設定は **オンライン予約・フロント予約にのみ適用** されます。ウォークインのチェックインには影響しません。
- 「初回のみ承認して以降は自動確定」というモードにしたい場合は、承認モードではなく **会員プラン（入会審査 / apply-first）** を利用してください。会員登録時に1回だけ施設の承認を得れば、以降のその会員の予約は自動確定します。
- 会員の使い放題枠を消費する予約は、プランの承認設定に関わらず **承認をバイパス**して自動確定します（会員登録時点で審査済みという扱いのため）。

Default Pending Reservation Form をプランに自動的に紐付ける仕組みはまだありません。フォームを個別のプランに割り当てたい場合は、[料金プラン設定](plan-form.md) の「適用フォーム」セクションから手動で紐付けてください。

> **重要: このフォームを紐付けていないプランの承認待ち予約は、このページ（フォーム → 回答タブ）には表示されません。** 「仮予約 / 承認待ち」カードの一覧は、Default Pending Reservation Form への回答（=紐付け済みプランの予約）のみを表示する仕組みです。承認モードだけをオンにして Default Pending Reservation Form を紐付けていないプランの場合、承認待ち予約は **「予約」ダッシュボードの予約詳細パネルからのみ** 確認・処理できます。

---

## 既知の制限事項

| 項目 | 状況 |
|------|------|
| 「毎回承認」以外の粒度（例: 3回目まで無審査など） | 未対応。`approval_mode` は `'auto'` / `'manual'` の二値のみ |
| 承認待ちのままの予約が開始時刻を過ぎた場合のタイムアウト処理 | 未実装。`reservation_approvals` に期限カラムが無く、承認/拒否されるまで `pending_approval` のまま残ります |

上記以外（プラン編集UIでの設定、ゲスト経路での承認待ち反映、ゲスト向け承認待ち画面、承認・拒否の通知メール、二重鍵発行防止）は実装済みです（設計の詳細は社内 ADR-0041 を参照）。

---

## よくある質問

### Q: ゲストは承認待ちの間どう見えますか？

予約完了画面に「承認待ちです」という画面が表示され、「承認されるとメールでお知らせします。有料プランの場合は、承認後にお支払いのご案内をお送りします。」という案内が出ます。

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

はい。却下すると、入力した理由を含むメールが自動的にゲストへ送信されます。

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

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

### Q: 会員の予約も毎回承認が必要ですか？

いいえ。会員の使い放題枠（quota）を消費する予約は承認をバイパスして自動確定します。承認が必要なのは、quota を消費しない通常の予約のみです。

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

プランの `approval_mode` 自体には「初回のみ」という値はありません。同等のことを実現したい場合は、会員プラン（入会審査 / apply-first）をご利用ください。入会時に1回だけ承認すれば、以降その会員は自動予約可能になります。

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

現状、自動的な処理はありません。`pending_approval` のままステータスは変わらないため、手動で承認または拒否してください。

### Q: 承認・却下は「予約」ダッシュボードからもできますか？

はい。予約詳細パネル（予約一覧または予約カレンダーから開く詳細モード）でも、`pending_approval` の予約には同じ承認・却下コントロールが表示されます。

### Q: 承認モードをオンにしたのに、フォーム画面の「仮予約 / 承認待ち」に何も出てきません

そのプランに Default Pending Reservation Form が紐付けられていない可能性があります。このタブは同フォームへの回答だけを表示するため、フォームを紐付けていないプランの承認待ち予約はここには出てきません。フォームを紐付けるか（[料金プラン設定](plan-form.md) の「適用フォーム」）、「予約」ダッシュボードの予約詳細パネルから直接処理してください。

---

## 関連ページ

- [フォーム管理](forms.md)
- [料金プラン設定](plan-form.md)
- [予約作成・編集](reservation.md)
