メインコンテンツまでスキップ

ジョブライフサイクル

すべてのPROOFジョブは、アップロードからダウンロードまで明確なライフサイクルに従います。

ステータス​

ステータス説明
pendingファイルがアップロード済み、確認待ち
queued確認済み、ワーカーの取得待ち
processingワーカーがアクティブに処理中
done処理完了、結果ダウンロード可能
error処理失敗、error_logを確認
cancelled完了前にキャンセルされた

フロー​

アップロード → pending → 確認 → queued → processing → done
↘ error
  1. アップロード (POST /jobs/upload) — pending状態でジョブ作成、コストプレビュー返却
  2. 確認 (POST /jobs/{id}/confirm) — クレジット差し引き、queuedに移行、Celeryワーカーにディスパッチ
  3. 処理 — ワーカーがページ/ファイルを処理、リアルタイムでdone_pages / done_filesを更新
  4. 完了 — 結果がSupabase Storageに保存、ダウンロード準備完了
  5. ダウンロード (GET /jobs/{id}/download) — 1時間有効な署名付きURL返却

ポーリング戦略​

GET /jobs/{id}を3〜5秒間隔でポーリングします。レスポンスにdone_pagesとtotal_pagesが含まれているため、進捗を表示できます。

import time

while True:
job = get_job(job_id)
if job["status"] in ("done", "error"):
break
print(f"進捗: {job['done_pages']}/{job['total_pages']}")
time.sleep(3)

エラー処理​

statusがerrorの場合、error_logフィールドに詳細が含まれます。一般的な原因:

  • サポートされていないファイル形式
  • 破損したPDFまたはメディアファイル
  • LLM推論タイムアウト
  • クレジット不足(確認ステップで検出)