Page Import テーブル
概要
1 件の public URL capture に対する、backend-owned lifecycle と source metadata を保存します。詳細な DOM、computed style、asset、screenshot evidence は S3 に保存し、PostgreSQL には Code2Des の開始に必要な source request、lifecycle fence、artifact pointer を保存します。
テーブル定義
| 論理名 | 物理名 | カラム名 | データ型 | 主キー | リレーション | ユニーク | NULL 許可 | デフォルト値 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| Page Import | page_import | id | string | ◯ | Backend UUIDv7 (varchar(255))。API の pageImportId および worker の page_import_id |
||||
| organization_id | number | organization:id | Organization scope。update/delete 時に cascade | ||||||
| project_id | number | project:id | Project scope。update/delete 時に cascade | ||||||
| source_kind | string | public_url |
Capture source discriminator (varchar(32))。現在は常に public_url |
||||||
| source_url | string | Normalize 済みの public HTTP(S) URL (text)。保存前に fragment を除去 |
|||||||
| viewport_width | number | CSS pixel 単位の browser viewport width (integer) |
|||||||
| viewport_height | number | CSS pixel 単位の browser viewport height (integer) |
|||||||
| device_scale_factor | number | 1 |
Browser device scale factor (real) |
||||||
| ready_selector | string | ◯ | 任意の readiness selector (varchar(512)) |
||||||
| status | enum | '0' |
page_import_status。型コード参照 |
||||||
| attempt | number | 1 |
Worker attempt fence (integer)。retry path を追加するまでは 1 固定 |
||||||
| nonce | string | Job ごとの callback/manifest correlation fence (varchar(255))。User API には公開しない |
|||||||
| result_url | string | ◯ | 成功時の capture artifact または失敗時の artifact pointer (varchar(1000)) |
||||||
| capture_hash | string | ◯ | 完了した capture JSON の exact bytes を識別する SHA-256 (varchar(80)) |
||||||
| screenshot_url | string | ◯ | Full-page screenshot artifact pointer (varchar(1000)) |
||||||
| error_message | string | ◯ | Client に公開可能な terminal failure detail (text) |
||||||
| created_at | datetime | CURRENT_TIMESTAMP |
Shared audit field | ||||||
| updated_at | datetime | CURRENT_TIMESTAMP |
Shared audit field | ||||||
| deleted_at | datetime | ◯ | Shared soft-delete field | ||||||
| created_by | string | Cognito subject または backend actor (varchar(50)) |
|||||||
| updated_by | string | Cognito subject または backend actor (varchar(50)) |
|||||||
| deleted_by | string | ◯ | Cognito subject または backend actor (varchar(50)) |
リレーション
organization_id→organization.id。update/delete 時に cascadeproject_id→project.id。update/delete 時に cascadecode2des.page_import_id→page_import.id。Non-unique foreign key のため、1 件の completed capture を複数 Code2Des job から再利用可能
インデックス
- PRIMARY KEY (
id) - INDEX
page_import_project_status_idx(project_id,status) - INDEX
page_import_org_project_idx(organization_id,project_id)
型コード
Database enum は page_import_status です。
| 値 | 意味 |
|---|---|
'0' |
processing |
'1' |
completed。Code2Des source として利用可能 |
'2' |
failed |
備考
- Backend は processing row を insert してから SQS message を publish します。Worker は source request と correlation field を受け取りますが、PostgreSQL credential は持ちません。
- Webhook は永続化された job の
id、attempt、nonceと一致する必要があり、manifest も同じ identity を持つ必要があります。Database update は row が processing かつ non-deleted であることも要求します。 - 成功 callback は
result_url、capture_hash、screenshot_urlを保存します。失敗 callback は安全なerror_messageと、存在する場合は failureresult_urlを保存します。 - Code2Des は Page Import が completed で、
result_urlとcapture_hashが non-null であることを要求します。Code2Des trigger は Page Import row を変更・消費しません。