訪問介護でキャンセルや緊急依頼が発生したとき、管理者が直面する問いは「誰を代わりに配置するか」ではない。
「確定済みの配置を崩さずに、影響範囲だけをどう再調整するか」だ。
この二つは問題の構造が根本から異なる。
前者は全体を再検討する問題であり、後者は確定済みの状態を前提として部分的に探索する問題だ。

なぜ確定済みの配置を崩してはいけないのか。
訪問スケジュールが介護職員・利用者に共有された時点で、その配置は約束になっている。
キャンセルや緊急依頼への対応のたびに確定済みの配置が動けば、その配置にいた別の介護職員にも連絡が必要になる。
1件のキャンセルが連鎖的に複数件の再調整を引き起こす。
さらに訪問介護では、確定済みの訪問スケジュールは介護職員の移動計画の基盤でもある。
確定済みの配置が変わるたびに移動ルートの整合性を再確認しなければならない。
これが毎日発生するとすれば、現場で運用することはできない。
確定済みの配置は固定したまま、影響範囲だけを再調整する必要があるのはこのためだ。

確定済みの配置を崩さずに再調整するとはどういう仕組みか。
キャンセルや緊急依頼の発生がシステムに記録されると、その状態情報に基づいて影響を受ける訪問枠と代替候補となる空き介護職員だけが探索対象(変数)として自動的に定義される。
それ以外の確定済み配置は全て前提条件(定数)として固定される。
代替候補は拘束時間上限・勤務間インターバル・移動時間・訪問エリアという制約を全て満たす範囲で提示される。
管理者が数百件に及ぶ既存の配置を一つひとつ固定指定しなくても、システムが業務の文脈から自動的に探索範囲を決定する。
管理者は提示された候補を確認し、承認するだけになる。
こうした仕組みに基づいて、shiftect.は確定済みの配置を固定したままキャンセル・緊急依頼への再調整を自動化することを目指している。

この仕組みが成立するのは、全体生成・再生成・キャンセル緊急依頼への再調整が同一の制御構造で処理されているからだ。
全体生成では全リソースが探索対象になる。
キャンセル・緊急依頼への再調整では確定済みの配置が固定対象になり影響範囲だけが探索対象になる。
業務の状態に応じて探索対象と固定対象を自動的に切り替えるという制御の仕組みが、確定済みの配置を崩さない再調整を可能にしている。