可选产品示例
五积分图像生成工作流
跟踪一个完整的异步付费任务如何经过认证、权限、幂等积分、持久任务、私有存储和失败补偿。
已根据 starter 提交
2a1a04a验证。
图像生成是 starter 中最小但完整的生产级付费工作流示例。本地提供器生成 SVG,不调用商业模型;关键价值是它周围的链路。每个被接受的请求固定消耗组织共享的五积分。
ENABLE_DEMO_FEATURES=true
ENABLE_IMAGE_GENERATION_MOCK=true
IMAGE_GENERATION_MOCK_FAILURES=0运行 pnpm dev:all,使用演示账户登录并打开 /zh/tasks/image-generation。UI 使用一个幂等键提交,并轮询组织范围内的任务状态。
可恢复链路
- API 检查同源、限流、认证、
tasks.image_generation和月度任务上限。 (user_uuid, type, idempotency_key)标识任务,请求指纹拒绝用同一键提交其他提示词。task_image:<task uuid>标识五积分消耗,并发重放只返回已有逻辑借记。task_image_generation:<task uuid>去重持久任务;任务、消耗和派发之间的崩溃可通过重放修复。- Worker 用稳定 UUID 调用提供器,写入确定性的私有 Garage/S3 对象,验证后激活文件并完成任务。
- 任务查询只在组织范围解析文件,并返回短时签名 URL;凭据和对象键不会进入公开任务契约。
pending_payment → queued → running → succeeded
↘ refunding → failed提供器最多尝试五次,任务共允许八次,剩余三次专门用于在数据库故障后完成补偿。最终失败先进入 refunding、追加确定性的账本退款,再标记 failed。重放不会重复运行提供器或退款。
设置 IMAGE_GENERATION_MOCK_FAILURES=5 可测试重试与补偿。真实数据库测试证明只有一次消耗和一次退款;Playwright 证明请求重放、精确五积分变化、Worker、Garage 存储和签名下载。
真实提供器只需替换 src/services/ai/image.ts,并保留传入的幂等键、AbortSignal、任务、积分、Worker、存储和错误契约。