施設の時間貸し運営

22:00 から翌 2:00 は、4 時間であってマイナス 20 時間ではない。

時間貸しの芯は「予約区間に、時間帯別の単価をどう積むか」。spacelog は日跨ぎと二重予約を特別扱いせずに扱える形で、 施設の予約と料金を管理します。

会議室 A

予約 18:00 – 翌 2:00

18202224翌 2

内部表現 18:00 – 26:00開始日 0 時起点の経過時間へ正規化。24 を超えた先は翌日の料金表へ巻き戻す。

※ 施設側が設定する料金表のサンプルです。spacelog の利用料ではありません。

時間貸し特有の事故を、設計で外す

課金単位が「時間」になった瞬間に出てくる難所だけを、正面から扱っています。

01

単価は、区間の途中で切り替わる

平日/休日・昼/夜・深夜割増は予約区間の途中で変わります。一律単価で計算すると毎予約でずれるため、区間を料金帯ごとに分割して積み上げます。18:00 ちょうどがどちらの単価かという境界の扱いも固定しています。

  • 時間帯別単価の積み上げ
  • 境界時刻の扱いを固定
  • 単位時間へ切り上げ・最低利用時間

02

日跨ぎを、特別扱いしない

22:00〜翌 2:00 を素朴に実装すると「終了 < 開始」に見えて負の時間が出ます。時刻を開始日 0 時起点の経過時間に正規化し、深夜帯は 翌9時 を 33 のように 24 を超える値で表現。同じ座標系のまま単価を積めます。

  • 経過時間へ正規化
  • 24 を超える座標で深夜帯を表現
  • 越えた先は翌日の料金表へ巻き戻す

03

二重予約は、現地で客が鉢合わせる

時間貸しで最も許されない不具合です。重なり・内包・日跨ぎ同士のいずれも拒否し、隣接(12:00 終了 → 12:00 開始)は許可します。取消済みの予約は重複判定から外します。再販できないと機会損失になるためです。

  • 重なり / 内包 / 日跨ぎ同士を拒否
  • 隣接は許可
  • 取消済みは判定から除外

重複判定

重なりと内包は拒否し、隣接は通す

重なり

既存 10:00 – 13:00

新規 12:00 – 15:00

409 重複

内包

既存 10:00 – 15:00

新規 11:00 – 12:00

409 重複

隣接

既存 09:00 – 12:00

新規 12:00 – 14:00

許可

料金表に穴がある時間帯は 0 円にせず例外にします。黙って無料にすると取りこぼしに気付けないためです。

時間帯のまま、料金表を作る

施設と料金帯を登録すれば、予約区間からの見積と重複判定はそのまま使えます。