汎用予約システム
リソース×サービス×時間枠の三軸をダブルブッキング構造防止で統合管理
実際に触ってみる
デモアカウント
概要
「美容室の予約システムを作って」「クリニックの予約・カルテを統合したい」「会議室や設備のレンタルを管理したい」と一言伝えるだけで構築できる汎用予約システムが PostgreSQL + 認証つきで稼働中。リソース(RES-XXXX 形式)・サービス(SVC-XXXX)・顧客(CST-XXXX)・予約(RSV-XXXX)・予約明細(RSI-XXXX)・支払(PAY-XXXX)はすべて Serializable トランザクションで自動採番。予約は pending → confirmed → checked_in → completed のステートマシンで管理され、canceled/no_show は終端かつ locked=true により状態変更がサーバー側で禁止されます(飛び越し遷移も canTransition で拒否)。同一リソース・同一時刻のダブルブッキングは @@unique([resourceId, slotAt]) の DB-level 一意制約と API 側の事前チェックによる二重防御で構造的に防止し、衝突時は 409「この時間帯は既に予約されています」を返却。加えてリソースごとに曜日別営業時間(ResourceSchedule)を持ち、営業時間外・休業日の予約は isWithinBusinessHours がサーバー側で拒否します。キャンセルポリシーは standard24h(24h 前まで無料/当日 50%)/strict(72h 前 50%/当日 100%)/flex(いつでも無料)の 3 種類を予約単位で選択でき、computeCancelFee がスロット時刻と現在時刻からキャンセル料をサーバー側で再計算。支払(PAY)は paid(実支払)/refunded(返金)/pending(保留)を区別し、completed 予約は全額・canceled 予約は再計算したキャンセル料・confirmed 予約は 30% の予約金(deposit)が記録され、支払総額・返金総額が予約詳細でリアルタイム集計されます。3 ロール RBAC(運営管理者/受付・予約担当/お客様)で、お客様は自分の予約のみ閲覧でき、リソース・サービス・営業スケジュール・顧客マスタの管理と経営レポート(予約件数/ステータス別内訳/売上/キャンセル率)の閲覧は運営管理者・受付担当のみ、リソースおよびサービスの新規登録は運営管理者のみとサーバー側で権限制御(職務分掌・PFP-046)。全 CRUD 操作に監査ログを標準装備。