keyvox-checkin-statuslisted
Install: claude install-skill Unlock-the-World/keyvox-mcp
# keyvox-checkin-status
ゲストがチェックインしたか(=予約の **`orderStateCode`** が `I` に遷移したか)を確認するスキル。
## ⚠️ 最重要:チェックイン判定は「予約ステータス」で行う
**チェックイン = 予約レコ��ドの `orderStateCode`。ロックの解錠履歴とは無関係。**
| 判定したいこと | 正しい指標 | 使うツール |
|---|---|---|
| **チェックインしたか**(このスキル) | `orderStateCode`(`A`未/`I`済/`O`チェックアウト済) | `listReservations` / `getReservation` |
| 実際に解錠したか/ノーショウか(別概念) | `getLockHistory` の解錠イベント(etype=9) | `keyvox-housekeeping` を参照 |
> ❌ **やってはいけない**: チェックインしたかを `getLockHistory`(解錠履歴)で判定すること。
> 「鍵は開けたが `orderStateCode` は `A` のまま」「`I` に遷移済みだが解錠はまだ」というケースが普通に発生するため、解錠の有無でチェックインを判定すると誤る。
> このスキルでは **`getLockHistory` を呼ばない。**
### `orderStateCode` の意味(`references/keyvox-enums.md` 準拠)
| 値 | 意味 | このスキルでの扱い |
|---|---|---|
| `Q` | 予約申込 | 未確定 |
| `A` | 未チェックイン | ⏳ 未チェックイン(予定前 or 遅延) |
| `I` | チェックイン済み | ✅ チェックイン済み |
| `O` | チェックアウト済み | 退出済み |
| `C` | キャンセル済み | 集計対象外 |
| `B` | 予約拒否 | 集計対象外 |
| `M` | メンテ中 | 集計対象外 |
### 補足フィールド(`getReservation` 取得時)
- `realCheckin`(UNIX秒): 実際にチェックイン処理が行われた時刻。`0` は未チェックイン。`orderStateCode=I` と整合する想定(要検証)。
- `realCheckout`(UNIX秒): 実際のチェックアウト時刻。`0` は未チェックアウト。
- これらは「いつチェックインしたか」を時刻で知りたいときの補助。状態の正否はあくまで `orderStateCode` が一次情報。
### ⚠️ 運用上の前提(重要)
`orderStateCode` が `A→I` に遷移するのは、以下いずれかでチェックイン処理が実行されたとき:
- `checkin(placeId, orderId, unitId)` ツール呼び出し
- タブレット/セルフチェックイン/チャネル連携によるチェックイン
**運用としてチェックイン処理を一切行っていない現場では、ステータスは恒常的に `A` のまま**になる。
その場合「チェックイン状況」を `orderStateCode` で見ても全件 `A` になるため、
- ユーザーに「この物件はチェックイン処理を運用していますか?」を確認するか、
- 「到着確認」を別途やりたいなら実利用判定(`keyvox-housekeeping` の解錠照合)を使う