SlotKeeper 設計と品質

Message catalog: reservations/cancel_reservation

API

項目 値
domain reservations
api cancel_reservation
routes POST /reservations/{reservationId}/cancel (cancelReservation)
router src/app/apis/reservations/cancel_reservation/router.py
messages 5
logger wrapper calls 5
levels WARNING:4, ERROR:1

生成・検証方針

  • WARNING以上のMessage catalogは router.py、functions.py または response_builders.py の ops_logger.warning/error(...) kwargsを一次情報にする。
  • api_error_response(...) のstatus/detailとlogger呼び出しのstatus/detailを照合する。
  • 実装中の app.core.logging ラッパー呼び出しを検出し、WARN以上はAPI operation内のemitとcatalog定義の一致を検証する。
  • logging.getLogger(...)、logger.info(...) などの直接呼び出しは許可しない。
  • WARNING以上は運用上の意味を持つ前提で、必要な確認手順・runbook・contextを検証対象にする。

メッセージ一覧

id message_id ログ概要
M001 cancelReservation.caller_cannot_cancel_reservation 呼び出し元が予約者本人でも管理者でもないため、予約取消を拒否した。
M002 cancelReservation.stale_reservation_version 予約の版が現在値と一致しないため、予約取消を拒否した。
M003 cancelReservation.reservation_already_cancelled 予約が取消済みのため、予約取消を拒否した。
M004 cancelReservation.reservation_already_started 予約の開始時刻を過ぎているため、予約取消を拒否した。
M005 cancelReservation.router_api_function_error Routerで捕捉したApiFunctionErrorにより予約取消が失敗した。

ログ詳細

M001 cancelReservation.caller_cannot_cancel_reservation

項目 内容
id M001
message_id cancelReservation.caller_cannot_cancel_reservation
level WARNING
status 403
wrapper calls 1
ログ概要 呼び出し元が予約者本人でも管理者でもないため、予約取消を拒否した。
説明 呼び出し元が予約者本人でも管理者でもない場合。
対応すべきこと actorPrincipalIdとreservationIdの所有者を確認する。
runbook RUNBOOK-authorization-forbidden
実装参照 src/app/apis/reservations/cancel_reservation/functions.py
wrapper: src/app/apis/reservations/cancel_reservation/functions.py (ops_logger.warning)

出力項目

出力項目 型 説明
traceId string | null リクエストとログを横断して追跡する相関IDです。
actorPrincipalId string | null APIを呼び出した認証主体IDです。
api.statusCode integer | null API responseとして返したHTTP status codeです。
resource ErrorResource ログに出力するAPI固有のErrorResourceです。
resource.reservationId string | null 取消対象予約の存在確認、再取得、問い合わせに使用する予約IDです。
error.code string | null エラー分類を表す機械処理向けコードです。
error.message string | null エラー内容を運用者が理解するための説明です。

M002 cancelReservation.stale_reservation_version

項目 内容
id M002
message_id cancelReservation.stale_reservation_version
level WARNING
status 409
wrapper calls 1
ログ概要 予約の版が現在値と一致しないため、予約取消を拒否した。
説明 取消要求のversionが予約の現在の版と一致しない場合。
対応すべきこと 利用者へ予約を再取得して取消し直すよう案内する。
runbook RUNBOOK-optimistic-lock-conflict
実装参照 src/app/apis/reservations/cancel_reservation/functions.py
wrapper: src/app/apis/reservations/cancel_reservation/functions.py (ops_logger.warning)

出力項目

出力項目 型 説明
traceId string | null リクエストとログを横断して追跡する相関IDです。
actorPrincipalId string | null APIを呼び出した認証主体IDです。
api.statusCode integer | null API responseとして返したHTTP status codeです。
resource ErrorResource ログに出力するAPI固有のErrorResourceです。
resource.reservationId string | null 取消対象予約の存在確認、再取得、問い合わせに使用する予約IDです。
error.code string | null エラー分類を表す機械処理向けコードです。
error.message string | null エラー内容を運用者が理解するための説明です。

M003 cancelReservation.reservation_already_cancelled

項目 内容
id M003
message_id cancelReservation.reservation_already_cancelled
level WARNING
status 409
wrapper calls 1
ログ概要 予約が取消済みのため、予約取消を拒否した。
説明 予約の状態がcancelledの場合。
対応すべきこと 予約詳細の履歴で取消済みであることを確認する。
runbook RUNBOOK-reservation-conflict
実装参照 src/app/apis/reservations/cancel_reservation/functions.py
wrapper: src/app/apis/reservations/cancel_reservation/functions.py (ops_logger.warning)

出力項目

出力項目 型 説明
traceId string | null リクエストとログを横断して追跡する相関IDです。
actorPrincipalId string | null APIを呼び出した認証主体IDです。
api.statusCode integer | null API responseとして返したHTTP status codeです。
resource ErrorResource ログに出力するAPI固有のErrorResourceです。
resource.reservationId string | null 取消対象予約の存在確認、再取得、問い合わせに使用する予約IDです。
error.code string | null エラー分類を表す機械処理向けコードです。
error.message string | null エラー内容を運用者が理解するための説明です。

M004 cancelReservation.reservation_already_started

項目 内容
id M004
message_id cancelReservation.reservation_already_started
level WARNING
status 409
wrapper calls 1
ログ概要 予約の開始時刻を過ぎているため、予約取消を拒否した。
説明 予約の開始時刻が現在時刻以前の場合。
対応すべきこと 開始済み予約は取消できないことを利用者へ案内する。
runbook RUNBOOK-reservation-conflict
実装参照 src/app/apis/reservations/cancel_reservation/functions.py
wrapper: src/app/apis/reservations/cancel_reservation/functions.py (ops_logger.warning)

出力項目

出力項目 型 説明
traceId string | null リクエストとログを横断して追跡する相関IDです。
actorPrincipalId string | null APIを呼び出した認証主体IDです。
api.statusCode integer | null API responseとして返したHTTP status codeです。
resource ErrorResource ログに出力するAPI固有のErrorResourceです。
resource.reservationId string | null 取消対象予約の存在確認、再取得、問い合わせに使用する予約IDです。
error.code string | null エラー分類を表す機械処理向けコードです。
error.message string | null エラー内容を運用者が理解するための説明です。

M005 cancelReservation.router_api_function_error

項目 内容
id M005
message_id cancelReservation.router_api_function_error
level ERROR
status
wrapper calls 1
ログ概要 Routerで捕捉したApiFunctionErrorにより予約取消が失敗した。
説明 ROUTER_HANDLED_EXCEPTIONSを捕捉した場合。
対応すべきこと 同一routeの5xx率、直近deploy、DB状態を確認する。
runbook RUNBOOK-unexpected-api-failure
実装参照 src/app/apis/reservations/cancel_reservation/functions.py
wrapper: src/app/apis/reservations/cancel_reservation/functions.py (ops_logger.error)

出力項目

出力項目 型 説明
traceId string | null リクエストとログを横断して追跡する相関IDです。
actorPrincipalId string | null APIを呼び出した認証主体IDです。
api.statusCode integer | null API responseとして返したHTTP status codeです。
resource ErrorResource ログに出力するAPI固有のErrorResourceです。
resource.reservationId string | null 取消対象予約の存在確認、再取得、問い合わせに使用する予約IDです。
resource.version integer | null 取消要求で指定した予約の版です。
error.code string | null エラー分類を表す機械処理向けコードです。
error.message string | null エラー内容を運用者が理解するための説明です。
error.exceptionType string | null 捕捉された例外の型名です。

strict検証で要求する項目

Level 必須項目
WARNING why_production
ERROR check_procedure, context_model, runbook
CRITICAL remediation_procedure, context_model, runbook, escalation