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_idresolves topage_import.idorcode2des.idaccording 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"キャンセル。待機中と実行中は件数で区別し、状態列は追加しません。