SlotKeeper 設計と品質

予約作成シーケンス

API単位の詳細な分岐は生成帳票 create_reservation sequence を正とする。本書は画面から永続化までの全体像を示す。

sequenceDiagram
  autonumber
  participant User as 利用者
  participant Web as Astro画面
  participant IdP as Cognito / Keycloak
  participant API as FastAPI (Lambda)
  participant DB as Aurora DSQL / PostgreSQL
  User->>Web: 資源・時間・目的を入力
  Web->>IdP: PKCEでaccess token取得(未取得時)
  Web->>API: POST /reservations(Bearer, Idempotency-Key)
  API->>API: JWT検証(署名・issuer・client・用途・期限)
  API->>DB: 同じIdempotency-Keyの成功記録を確認
  alt 同じ入力の成功記録あり
    API-->>Web: 元の成功応答を返す
  else 新規要求
    API->>DB: 資源control_versionを更新(同一資源の書込み境界)
    API->>DB: 重複するconfirmed予約を確認
    API->>DB: 予約・作成履歴・要求キーを同一transactionで保存
    alt OCC競合・一時障害
      API->>API: rollbackして再試行(上限超過で503)
    end
    API-->>Web: 201 予約
  end