CLIN開発日記 #018|iCal予約連携と清掃ジョブ自動生成が、実運用テスト直前へ

こんにちは。
清掃業務プラットフォーム「CLIN」の開発を進めています。
前回までで、管理者ダッシュボードは試験運用へ進める形まで整ってきました。
現場の「今、何をすればよいか」が見える画面です。
ただし、その画面に載る清掃ジョブは、まだ人が予約を見て作っている部分が残っていました。
今回は、そこを変えるための大きな区切りです。
宿泊予約のカレンダー連携(iCal)から、清掃ジョブを自動で作る仕組みが、実データでつなぐ直前まで来ました。
なぜ、iCal連携が必要なのか
宿泊施設では、予約が入るたびに清掃の予定も動きます。
予約サイトを見る。
ノートや別の表へ書き写す。
スタッフへ伝える。
この転記が、現場ではまだ残っています。
問題は、予約が一度入って終わりではないことです。
日付が変わる。
キャンセルされる。
延泊になる。
別の部屋へ移る。
その変化を見落とすと、現場は混乱します。
人がいる部屋へ清掃に入る。
空いているはずの部屋が、まだ汚れたまま。
誰が悪いかではなく、予約の事実と清掃予定が別々に動いていることが原因です。
だからCLINは、予約の情報を正本にして、清掃ジョブを自動で作る方向へ進めています。
予約から、清掃ジョブを自動で作る
流れは、施設の担当者が毎日やっていることと同じです。
予約を受け取る。
どの部屋を、いつ掃除するかを決める。
CLINでは、宿泊予約のカレンダー(iCal)を読み取り、チェックイン・チェックアウト・部屋・予約の状態をそろえたうえで、清掃ジョブへ変換します。
目指しているのは、予約のたびに予定表へ手入力しなくて済む状態です。

いま整えているのは、この受け渡しの土台です。
実際の予約サービスとつなぐ確認は、これから行います。
変更・キャンセル・延泊・部屋移動にも追従する
予約は、一度入って終わりではありません。
CLINは、その後の変化も清掃ジョブへ反映します。
- 日程変更
チェックインやチェックアウトが変わったら、清掃予定も合わせます。 - キャンセル
予約がなくなったら、不要な清掃ジョブを残しません。 - 同じ部屋での延泊
チェックアウトが延びただけでは、自動で予定を動かして終わりにしません。管理者の確認を挟みます。 - 別の部屋への移動
空いた部屋のチェックアウト清掃は残します。移った先も、予約に合わせて扱います。
現場が一番困るのは、次の状態です。
「予約は変わったのに、清掃予定だけ昨日のまま」
そこを減らすための仕組みです。
同じ予約を、二重に登録しない
カレンダー連携では、同じ予約が何度も届きます。
届くたびに新しい清掃ジョブを作ると、現場の予定はすぐ膨らみます。
同じ部屋の清掃が二重に並ぶ。
誰が担当か分からなくなる。
CLINは、同じ予約を何度受信しても、清掃ジョブを重複作成しません。
すでに持っている予約として扱い、必要なときだけ更新します。
自動連携で一番怖いのは、動かないことより、予定が増えすぎることです。
AIが勝手に判断しない
自動で進めてよいことと、人の確認が必要なことを分けています。
読み取れないデータ。
自動では判断しにくい変化。
これらは、管理者が確認できる状態に残します。
黙って捨てません。
それらしい予定を推測で作りません。
CLINの考え方は、「全部をAIに任せる」ことではありません。
人が迷わなくて済むところだけを自動化することです。
管理者ダッシュボードへつなぐ
予約から作った清掃ジョブは、最終的に管理者が毎日見る画面へつながります。
これから、iCal由来の清掃ジョブがこの画面の Realtime Progress や管理対応へ載るようにします。
予約の変化が、現場の「今、何をすればよいか」までつながる状態です。
今回できたこと、これから確認すること
今回できたこと
- 安全なiCal取得
- 予約データの正規化
- 清掃ジョブとの連携
- 変更・キャンセル対応
- 重複防止
- 管理者確認への振り分け
これから確認すること
- 実際の予約サービスとの接続
- Realtime Progress
- Next Job
- チャット
- 実施設でのE2E
次は、実データでの接続確認へ
土台は整いました。
ただし、実運用が始まったわけではありません。
次に確認するのは、実際の予約データとの接続です。
予約が入り、変わり、キャンセルされたときに、清掃ジョブが現場の感覚どおり動くか。
その先で、Realtime Progress、Next Job、チャット、実施設でのE2Eへ進みます。
いまは、試験運用へ進むための直前です。
未完成のものを、完成したようには書きません。
目指しているのは、CLINを
「作っているシステム」から「実際に現場で使うシステム」へ
進めることです。
次回の開発日記では、実データとの接続確認の結果をお伝えします。
