任意の製品例

5 クレジット画像生成ワークフロー

非同期の有料タスクを認証、権限、冪等クレジット、永続 worker、非公開 storage、失敗補償まで追います。

コミット 2a1a04a で確認済みです。

画像生成は production-shaped な有料 workflow の最小例です。ローカル provider は商用 model を呼ばず SVG を作ります。価値は周囲の chain にあり、受理された 1 request は組織共有の 5 credit を消費します。

ENABLE_DEMO_FEATURES=true
ENABLE_IMAGE_GENERATION_MOCK=true
IMAGE_GENERATION_MOCK_FAILURES=0

pnpm dev:all を実行し、demo account で login して /ja/tasks/image-generation を開きます。UI は 1 idempotency key を保持して tenant-scoped task を poll します。

  1. API は same-origin、rate limit、auth、tasks.image_generation、月間上限を確認します。
  2. (user_uuid, type, idempotency_key) が task を識別し、fingerprint が別 prompt での key 再利用を拒否します。
  3. task_image:<task uuid> が 5-credit spend を識別し、並行 replay は既存 debit を返します。
  4. task_image_generation:<task uuid> が durable job を重複排除し、task/spend/dispatch 間の crash を replay で修復します。
  5. Worker は安定 UUID で provider を呼び、private Garage/S3 object を書いて検証し、file を activate します。
  6. Task read は organization 内で file を解決して短時間 signed URL を返します。
pending_payment → queued → running → succeeded
                           ↘ refunding → failed

Provider は 5 回、job は 8 回試行し、残り 3 回を compensation 用に確保します。Terminal failure は refunding に入り、deterministic refund を追加してから failed になります。Replay は provider も refund も重複しません。

IMAGE_GENERATION_MOCK_FAILURES=5 で failure path を確認できます。実 DB test は 1 spend/1 refund、Playwright は replay、正確な 5-credit 差、worker、Garage、signed download を証明します。

実 provider は src/services/ai/image.ts だけを置き換え、idempotency、AbortSignal、task、credit、job、storage、error contract を保ってください。

関連: クレジット台帳非公開ストレージ永続ジョブテストと CI

5 クレジット画像生成ワークフロー · Sushi SaaS