概要

予約システムは一般用、管理者用、クーロンに大別される。
ホテル、貸アイテム、レンタルを念頭に置いたシステム。

一般用

  1. 一般・予約カレンダー画面(空状況表画面)
  2. 貸アイテム一覧画面
  3. 予約申請画面
  4. 予約確認・変更画面
  5. キャンセル空予約画面

管理者用

  1. 月間管理画面
  2. 予約カレンダー編集
  3. 貸アイテムマスタ画面
  4. 時間割マスタ画面
  5. 休日マスタ画面
  6. 予約一覧画面
  7. 一般ユーザー管理画面
  8. オペレータユーザー管理画面
  9. 設定画面(キャンセル空き予約締め切り時間)
  10. メール通知履歴画面

クーロン

  1. キャンセル空き・メール通知機能

ER図


draw.io


一般・予約カレンダー画面(空状況表画面)

お客が空状況を見ながら予約を開始する画面。 施設一覧画面から当画面にアクセスできる。
予約カレンダー画面は予約カレンダーが主な機能である。

予約カレンダーテーブルと紐づいている

予約カレンダーについて 一般客はこの予約カレンダーから予約を行う。
予約カレンダーはオペレータ用も存在する。
予約カレンダーは施設と1:1の関係とする。(予約カレンダー一つに複数の施設を組み込まないこと)
予約カレンダーのX軸は単位時間、Y軸は日付、セルは貸アイテム数リンクから構成される。 単位時間とは30分区切り、1時間区切りなどを一区切りとした単位とした数値である。単位時間は時間割テーブルで変更できる。 Y軸の日付は一月分が望ましい。 空部屋数リンクから予約ができる。空部屋数が0であるなら満室として表記するのが良い。
拡張としてキャンセル待ち機能も組み込める。その場合はキャンセル待ち数をセルに追加する。

予約カレンダーまとめ

予約カレンダーのモック

6~9時10~12時13~17時17時~22時
2018-11-1 空:5 空:7 空:1
2018-11-2 空:5 空:7 空:7 空:1
2018-11-3 空:2
2018-11-4 空:5 空:7 空:7 空:1

予約カレンダーに必要なデータ

		施設ID 施設予約日付	時間割ID	施設数(マスタ)	予約数(マスタ)	残数	キャンセル待ち人数	休日フラグ	時間割・稼働フラグ	月間管理フラグ
	

予約カレンダー集計に関するSQL

	SELECT 施設ID、 施設名、	時間割ID、 時間割名
	FROM
		予約・集計
			SELECT 施設ID、日付、時間割ID、SUM(ID) AS 予約数
			WHERE
				施設ID、月初日、月末日、予約状態=予約
			GROUP BY 施設ID、日付、時間割ID
		施設テーブル(予約集計・施設ID=ID)
		時間割テーブル(予約集計・時間割ID=ID)
		
	WHERE
		施設ID
	
	キャンセル待ち集計データ	
		予約状態=キャンセル待ち
	
※ SQLだけでなくロジックで集計する箇所もある。


貸アイテム一覧画面

一般客用の貸アイテム一覧画面。貸アイテム名リンクから予約カレンダー画面に遷移できる。
貸アイテムテーブルと貸数マップに紐づいている。

一覧のモック
貸アイテム名施設数備考
テニスコート2テスト
バスケットボール20テスト
宿泊部屋4テスト
ユニック3テスト

予約申請画面

入力画面、確認画面、結果画面と遷移する画面。
最終的に予約テーブルに登録する。

パスワードなしの手続きについて考察
期間限定のハッシュコードを発行する方法がある。
ハッシュコードが有効である間はマイページを閲覧することができる。


予約確認・変更画面

アカウントなし型の検討
ハッシュコード付きのURLから当ページにアクセスできる。
ハッシュコードがパスワードの代わりである。
ハッシュコードは当然期間限定。

ハッシュコードは管理者も確認できるので、一般客の代わりにオペレータが変更するといったことも可能。

ハッシュコードは漏洩しないようにする工夫が必要。
できれば端末情報の確認をとる。

異なる端末からアクセスされた場合は、注意メールを送信する機能があればないよい。


キャンセル空予約画面

キャンセル待ちの人がキャンセル空通知メールを受け取ったときにアクセスできる画面。
この画面へのURLにはハッシュコードが埋め込まれている。
ハッシュコードには有効期間の概念がある。

一応拡張機能なので、実装するかどうかは要件しだい。


月間管理画面

月ごとに予約カレンダーを作成する画面。
予約カレンダーを月集計したデータを一覧表示する。
予約カレンダーを作成する処理は複雑になるはずである。
詳細な仕様については後日検討する。


旧考察

月先々までの予約可否を制御する機能。
予約カレンダーの作成を制御する機能が考えらえる。

問題点

施設Aが2か月後に最大貸アイテム数が4から2に減るとする場合、どのように実装したらよいだろうか?
施設Aは2か月後の予約受付を停止させることが考えられる。
しかし、これだと一般客は2か月後の予約ができなくなる。
X:施設、Y:日付、セル:最大貸アイテム数からなるマトリクス入力画面を用意する画面も考えられるが煩雑なので避けたい。
貸アイテム数予定変更画面を用意したほうが良い。
貸アイテム数予定変更画面で2か月後先の貸アイテム数を2とすれば、尾客側の予約カレンダーにも反映されるようにするわけだ。
とわいえ、すでに予約のいる日の貸アイテム数を減らした場合、予約オーバー客が出てしまう。
この場合、予約オーバー客リストが必要になる。

予約カレンダーの作成を制御

予約カレンダー作成済み/未作成の概念がある。
自動作成、手動作成の制御がある。
デフォルトでは自動作成。手動作成にすると作成ボタンが表示される。
予約カレンダーの有効/無効の切替も欲しいところ。
自動作成は2か月先までを自動生成という感じで良いかと思わるが、一応、設定できると良い。

モック

年月施設名作成方法予約カレンダー有無稼働
2018年11月テニスコード自動作成稼働中
2018年12月テニスコード自動作成稼働中
2019年1月テニスコード自動作成稼働中
2018年11月バスケットボール手動作成有【再作成ボタン】稼働中
2018年12月バスケットボール手動作成未作成【作成ボタン】稼働中


予約カレンダー編集

予約カレンダーを編集する画面。
月間管理画面カレンダーからアクセスできる。
詳細な仕様は後日。


貸アイテムマスタ画面

貸アイテムマスタのCRUD画面。
貸アイテムマスタは貸アイテムID,貸アイテム名、備考からなる。


時間割マスタ画面

時間割マスタのCRUD画面。


休日マスタ画面

休日マスタのCRUD画面。


一般ユーザー管理画面

お客テーブルのCRUD画面。
ユーザーエージェントなども記録したほうがいいかもしれない。


オペレータユーザー管理画面

CrudBaseに付属する一般的なオペレータ画面


設定画面(キャンセル空き予約締め切り時間)

システムの全体的な設定を行う画面。


メール通知履歴画面

メール送信履歴の一覧表示画面


キャンセル空き・メール通知機能

この機能はキャンセル待ち機能を実装する場合に必要になる。
詳細な設計は後日