文生视频任务模式
通过组织 entitlement、配额、积分、幂等与退款扩展可选的文生视频演示。
Starter source:
e632762.
视频和图像示例现在都采用持久化付费任务准入。它们仅供开发环境使用;克隆模板不会启用商业生成服务。
启用 ENABLE_DEMO_FEATURES=true 与 ENABLE_TEXT2VIDEO_MOCK=true,运行 pnpm dev:seed -- --paid-examples,再启动 pnpm dev:all。本地种子以幂等方式授予手动套餐权限,不会向 Stripe 购买任何服务。模拟提供器返回内置的八秒 /demo-video.mp4 或 TEXT2VIDEO_MOCK_URL,不会根据提示词、画幅或时长生成真实内容。
POST /api/tasks/text-to-video 要求认证、明确的组织,以及 body 中的幂等键或 Idempotency-Key header。提示词最多 1,000 字符,时长为 1–60 整秒。服务先解析已有请求,再对新操作检查套餐权限。月度配额预留、组织积分扣除、任务创建和队列派发在同一事务中提交;队列写入失败会全部回滚。
受理成功返回 202 和排队中的任务。Worker 使用任务 UUID 作为提供器身份,重试临时故障,并在最终失败前执行幂等的积分退款。通过 GET /api/tasks/[uuid] 查询结果。UI 会重试临时读取故障,刷新页面也会恢复原任务及草稿设置,不会再次提交。“再生成一个视频”明确创建新的请求。
价格位于 src/config/tasks.ts,权限判断统一经过 src/services/entitlements.ts。执行逻辑位于 src/services/tasks/video.ts,提供器适配器位于 src/services/ai/video.ts。每秒积分和套餐上限只是示例,采用时应重新审查。
没有请求指纹的旧同步任务不会自动重提,必须先核实提供器结果再结算。先部署支持 text_to_video 的 Worker,再受理该类型的任务。真实适配器必须保持稳定的提供器身份、取消信号、组织隔离与补偿;不支持幂等的提供器必须先对账再重试。仅替换适配器不会开放生产功能,还需替换页面、路由与服务的演示开关并审查准入。
TEXT2VIDEO_MOCK_URL 缺失、为空或仅有空白时使用 /demo-video.mp4。供应商返回空输出视为失败,不会记录为付费成功;重试耗尽后通过原账本交易补偿。