<!-- https://unlockos.io/ja/manual/unassigned-reservations -->

# 要対応: 予約の重複 ヘルプ

## 概要

**要対応** タブは、iCal連携（Airbnb・Booking.com等）から取り込んだ外部予約と UnlockOS 上の直接予約が同じ時間帯・部屋で衝突したときに、管理者が対処するための画面です。

### なぜこのタブが必要か

iCal フィードは UnlockOS が外部プラットフォームをポーリングして取り込む仕組みであるため、外部側で予約が作成されてから UnlockOS に届くまでの間に、同じ枠を直接予約するゲストが現れることがあります。この「競合状態」はシステムの構造上完全には排除できません。

UnlockOS はこの衝突を次のように処理します：

1. **先着優先判定** — UnlockOS に先に届いた予約を「勝者」、後から届いた予約を「敗者（未割り当て）」と判定します。敗者の予約はステータスが **「衝突 (要対応)」** となります。
2. **自動検知** — 衝突を検知すると施設オーナーにメール通知を送ります。
3. **ダッシュボード全面への警告表示** — 要対応タブのバッジ、カレンダーの警告バナー、予約一覧の⚠️マーカーにより、どの画面からでも衝突に気付けます。

このタブが安全網として機能することで、ゲストの二重予約による混乱や鍵の誤配布を防ぎます。

このタブでできること：

- 未対処の予約衝突を一覧で確認する
- メールのリンクから直接対象の衝突を開く（ハイライト表示）
- **行をクリック** → 後着（敗者）の予約詳細ドロワーを開いて解決する
- **勝者名のリンクをクリック** → 勝者（先着）の予約詳細ドロワーを開いて内容を確認・編集する
- 解決済み・チェックアウト済みの過去の衝突は自動的に非表示になる

---

## アクセス方法

衝突が発生すると、ダッシュボードの **3 か所** に警告が表示されます。どの画面からでもすぐに気付けます。

| 表示場所 | 内容 |
|---------|------|
| **要対応タブのバッジ** | タブ名の右に赤い件数バッジが表示されます。未解決件数がゼロになると消えます。 |
| **カレンダー（週表示）の警告バナー** | カレンダー上部に赤いバナーが表示されます。クリックすると要対応タブに遷移します。また、衝突に関係する予約バー（後着・勝者いずれも）に ⚠️ マーカーが付きます。 |
| **予約一覧の警告バナーと⚠️マーカー** | 予約一覧の上部に赤いバナーが表示されます。また、後着（衝突 (要対応)）の予約カードと勝者の予約カードはいずれも赤い枠線と ⚠️ マーカーで強調表示されます。 |

要対応タブに直接アクセスするには：

1. 施設管理者宛の通知メールが届いたら、メール内の **「要対応: 予約の重複を確認する」** リンクをクリックします。
2. 管理画面の予約管理ダッシュボードで **「要対応」** タブをクリックします（未解決件数がある場合、赤いバッジが表示されています）。

URLパラメータで直接アクセス: `?audit_id=...`（メールのリンクはこの形式です）

---

## 詳細機能

## 機能1: 衝突一覧の確認

アクション可能な未解決の予約衝突のみが一覧表示されます（チェックアウト済みの過去の衝突は自動的に除外されます）。各行には以下の情報が表示されます：

| 項目 | 説明 |
|------|------|
| 確認コード | 未割り当て（敗者）の予約の確認番号 |
| vs 勝者コード | 優先された（勝者）予約の確認番号。**リンクになっており、クリックすると勝者の予約詳細ドロワーが開きます。** |
| 重複期間 | 衝突している日時の開始〜終了 |
| 敗者ソース | 後着の予約の流入元（例: iCal/Airbnb、直接予約） |
| 勝者ソース | 先着の予約の流入元 |
| 検知日時 | 衝突が検知された日時 |

**行（行全体）をクリック** すると、後着（敗者）の予約詳細ドロワーが右側に開きます。**勝者名のリンク部分をクリック** すると、勝者の予約詳細ドロワーが開きます。メールのリンクから開いた場合、対象の衝突行が赤枠でハイライトされます。

---

## 機能2: 解決手順

### ステップ1: どちらの予約を開くか選択する

衝突カードには 2 つのクリックポイントがあります：

| クリック場所 | 開く予約 | 使うシーン |
|------------|---------|----------|
| **行全体（勝者名以外）** | 後着（敗者）の予約 | 後着の予約をキャンセルまたは部屋変更して解決するとき |
| **勝者名のリンク** | 先着（勝者）の予約 | UnlockOS の先着判定が意図と逆だった場合に、勝者側を編集・キャンセルして解決するとき |

> **ヒント:** 先着判定は機械的であり、本来意図した優先度と逆になる場合があります。勝者側を編集・キャンセルしたいときは、勝者名リンクから勝者の予約を直接開いてください。

### ステップ2: 解決アクションを選択する

開いたドロワー内で以下のいずれかを選択して解決してください：

| 解決方法 | 使うタイミング | 操作 |
|---------|-------------|------|
| **部屋を変更** | 別の空き部屋に移動してゲストを収容できる場合 | ドロワーの「部屋を変更」ボタン（または「編集」）から別の部屋を指定して保存 |
| **キャンセル** | この予約を取り下げる場合 | ドロワーの「キャンセル」ボタンをクリック |

解決後、当該カードは一覧から **即時削除** されます。同時に、タブのバッジ件数・カレンダーの警告バナー・予約一覧のバナーもリアルタイムで更新されます。

---

## 機能3: 過去の衝突の自動非表示

後着（敗者）の予約のチェックアウト日時が過ぎると、その衝突は一覧から自動的に除外されます。「◯件の予約衝突があります」バッジ・バナーのカウントにも含まれなくなります。

これは過去の衝突に対しては実質的な対処ができないためです（例：チェックアウト後にキャンセルしても意味がない）。現在アクション可能な衝突のみに集中できるよう設計されています。

> **注意:** 過去の衝突記録を遡って確認したい場合は [監査ログ](audit-log.md) を参照してください。

---

## よくある質問

### Q: どちらの予約が優先されますか？

UnlockOS に到達した順番（先着）で判定します。「勝者」が先に届いた予約、「敗者（未割り当て）」が後から届いた予約です。外部 OTA の予約か直接予約かによって自動的に有利・不利が決まるわけではありません。

### Q: 先着判定が意図と逆です。勝者を変更するにはどうすればいいですか？

衝突カードの **勝者名のリンク** をクリックして、勝者側の予約詳細ドロワーを開いてください。そこから「部屋を変更」または「キャンセル」を選択することで、勝者側を操作できます。どちらの予約ドロワーから解決しても、解決済みになるとカードは一覧から即時削除されます。

### Q: 解決後にカードがすぐ消えますか？

はい。解決（部屋変更またはキャンセル）した直後に衝突カードは一覧から即時削除されます。同時に、タブのバッジ件数・カレンダーの警告バナー・予約一覧のバナーも更新されます。強制リロードは不要です。

### Q: 古い衝突カードが突然消えました。何が起きましたか？

後着（敗者）の予約のチェックアウト日時が過ぎると、その衝突は自動的に一覧から除外されます。これはチェックアウト後にアクションをとっても意味がないためです。記録を確認したい場合は [監査ログ](audit-log.md) を参照してください。

### Q: メールが来ない場合はどうすれば良いですか？

以下を確認してください：

1. 施設設定で通知メールアドレスが正しく設定されているか確認します。
2. 迷惑メールフォルダを確認します（差出人: `noreply@unlockos.io`）。
3. メールが届いていなくても、衝突は「要対応」タブに表示されています。定期的にタブを確認することを推奨します。
4. メール通知は衝突検知後に送信されます。稀に数分の遅延が発生することがあります（詳細はトラブルシューティングを参照）。

### Q: 外部プラットフォーム側のキャンセルはどこで行いますか？

「キャンセル」を選択した後、Airbnb・Booking.com 等の各プラットフォームの管理画面で手動キャンセル操作を行ってください。UnlockOS はキャンセル操作を外部プラットフォームに対して自動送信しません。

### Q: 一度に複数の衝突を解決できますか？

現在の実装では、1 件ずつ解決アクションを選択する形式です。複数の衝突がある場合は、一覧の上から順に対処してください。

---

## トラブルシューティング

### 解決したのにカードが消えない

画面のリロードは不要です。解決操作が正常に完了すれば、カードは即時削除されます。カードが残っている場合は次を確認してください：

1. ドロワーに「保存されました」または「キャンセルしました」などの完了メッセージが表示されたか確認します。表示されていなければ操作が完了していません。
2. ネットワーク接続を確認し、再度試みます。
3. ブラウザを強制リロード（Ctrl+Shift+R / Cmd+Shift+R）して一覧を再取得します。
4. 問題が続く場合はサポートに連絡してください。

### メール通知が遅延する

UnlockOS の衝突検知メールは、バックグラウンドのスケジュールジョブ（pg_cron）が定期的に未解決の衝突を検知して送信します。このジョブは約 5 分間隔で実行されており、衝突が発生してからメールが届くまで最大 5 分の遅延が発生することがあります。

緊急の場合は、メールを待たずに「要対応」タブを直接確認してください。

### 解決アクションのボタンを押したがエラーが表示される

1. ネットワーク接続を確認します。
2. ブラウザをリロードして衝突一覧を再取得します。
3. 別のブラウザまたはシークレットモードで試します。
4. 問題が続く場合はサポートに連絡してください（エラーメッセージのスクリーンショットを添付してください）。

### 解決後に同じ衝突が再び表示される

iCal フィードが再同期された場合、同じ時間帯の外部予約が再度インポートされ、新たな衝突として検知されることがあります。この場合は、外部プラットフォーム側でキャンセルを完了させてからフィードを再同期することを推奨します。

### バッジ件数がゼロにならない

解決済みおよびチェックアウト済みの衝突は自動的にカウントから除外されます。バッジが残っている場合は、まだアクション可能な未解決の衝突が存在しています。一覧を下までスクロールして未対処のカードがないか確認してください。

---

## 関連ページ

- [iCal連携](ical-config.md)
- [予約管理ダッシュボード](booking.md)
- [予約作成・編集](reservation.md)
- [監査ログ](audit-log.md)
