コンテンツにスキップ

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 時に cascade
  • project_id → project.id。update/delete 時に cascade
  • code2des.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 と、存在する場合は failure result_url を保存します。
  • Code2Des は Page Import が completed で、result_url と capture_hash が non-null であることを要求します。Code2Des trigger は Page Import row を変更・消費しません。