コンテンツにスキップ

Batch Item テーブル

概要

バッチの 1 項目、子ジョブ ID、永続化した SQS メッセージを保存します。子ジョブ行とメッセージは同じトランザクションで保存します。

テーブル定義

論理名 物理名 カラム名 データ型 主キー リレーション ユニーク NULL 許可 デフォルト値 備考
Batch Item batch_item id string ◯ Backend UUIDv7 (varchar(255))
batch_id string batch:id Owning batch / バッチ (varchar(255))
position number Zero-based input order / 0 始まりの入力順序
request json Validated API request / 検証済み API 入力 (jsonb)
job_id string ◯ Page Import or Code2Des ID / 子ジョブ ID (varchar(255))
message json ◯ Durable worker payload / 永続化したワーカー入力 (jsonb)
dispatched_at datetime ◯ SQS accepted timestamp / SQS 送信確認日時
lease_until datetime ◯ Dispatch claim expiry / ディスパッチ取得の有効期限
dispatch_attempts number 0 Dispatch claim count / ディスパッチ試行数
error_message string ◯ Terminal dispatch error / ディスパッチ失敗理由 (text)
cancelled_at datetime ◯ Cancellation timestamp / キャンセル日時
created_at datetime CURRENT_TIMESTAMP Shared audit field / 共通監査項目
updated_at datetime CURRENT_TIMESTAMP Shared audit field / 共通監査項目
deleted_at datetime ◯ Soft delete / 論理削除日時
created_by string Cognito subject (varchar(50))
updated_by string Cognito subject (varchar(50))
deleted_by string ◯ Cognito subject (varchar(50))

リレーション

  • batch_id → batch.id (delete cascade)
  • job_id resolves to page_import.id or code2des.id according to batch type; no polymorphic foreign key. / バッチ種別に応じた子ジョブ ID。外部キー制約は設定しません。

インデックス

  • PRIMARY KEY (id)
  • INDEX batch_item_batch_idx (batch_id, position)
  • INDEX batch_item_dispatch_idx (dispatched_at, lease_until)

備考

  • 集計ステータスは子ジョブとディスパッチ情報から算出します。重複した集計値を保存しません。
  • ディスパッチは 90 秒の期限付きで取得し、同時取得を行ロックで防止します。送信は最大 3 回試行し、同じジョブ ID とメッセージを再利用します。
  • ワーカーは PostgreSQL に接続しません。完了結果は既存の webhook で子ジョブに反映します。

  • API status は導出値です。"0" 処理中、"1" 完了、"2" 失敗、"3" キャンセル。待機中と実行中は件数で区別し、状態列は追加しません。