コンテンツにスキップ

駐車セッション

駐車セッションは smooth の中核となる機能です。ドライバーが駐車場に入場してから出場・決済が完了するまでの一連のライフサイクルを管理します。

セッションのステータス遷移

stateDiagram-v2
    [*] --> pending_entry: CASE A: 同一プレートを初回認識
    pending_entry --> active: 同一プレートを3回連続認識で入庫確定
    active --> pending_exit: CASE C: OCR失敗を3回連続検知
    pending_exit --> active: CASE B: 同じプレートを再検知(誤検知キャンセル)
    pending_exit --> completed: 5分間プレート未検知で出庫確定 → 決済実行
    active --> completed: CASE B: 別プレートを3回連続検知(強制完了)
    pending_entry --> cancelled: 異常系(未登録プレートなど)
    completed --> [*]
    cancelled --> [*]

ステータスの説明

ステータス 説明
pending_entry 入場を検知したが、同一プレートの3回連続認識待ち
active 駐車中(入場確定・出場待ち)
pending_exit OCR未認識が3回連続し、出庫確認中
completed 出庫確定・決済完了・セッション終了
cancelled キャンセル(未登録プレート・異常系など)

入庫・出庫の判定ロジック

入庫確定(pending_entry → active)

SmoothBox から画像が送られるたびにOCRを実行し、同一ナンバープレートが3回連続認識された時点で入庫確定(active)となります。

出庫確認フロー(active → pending_exit → completed)

  1. OCRでプレートが読めない状態が3回連続続くと pending_exit に遷移
  2. pending_exit 移行後、5分間プレートが見えなければ出庫確定
  3. 出庫確定時の exit_time は決済完了時刻ではなく、最初にプレートが見えなくなった時刻exit_check_started_at)が使われる

pending_exit 中に同じプレートが再検知された場合は active に復帰します(誤出庫判定のキャンセル)。

別プレート検知による強制完了(CASE B)

駐車中(active)に異なるプレートが3回連続検知されると、「車が入れ替わった」と判定し、前の車のセッションを強制完了させます。その後、新しいプレートで入庫フロー(CASE A)が始まります。

この動作は、カメラの視野角が広く隣接スポットの車を誤検知する場合に誤った強制完了を引き起こすことがあります。

料金計算

  • 滞在時間(entry_timeexit_check_started_at)をもとに計算
  • 駐車場ごとの料金設定に従う(時間帯別料金・日最大料金・無料時間)
  • クーポンが適用されている場合は割引後の金額

関連API

エンドポイント 説明
GET /sessions ログインユーザーのセッション一覧
GET /sessions/active 現在のアクティブセッション
GET /sessions/{sessionId} セッション詳細
GET /parking-owner/sessions オーナー向けセッション一覧
GET /parking-owner/sessions/parking-status リアルタイム稼働状況