Files
dreamweaver/docs/technical/generation-job-state.md

2.2 KiB
Raw Blame History

Generation Job 状态落库决策

这份文档用于回答一个关键技术债问题DreamWeaver 是否需要为每次 AI 生成单独建立 generation_jobs 表。

当前结论

短期不新增 generation_jobs 表,继续把求职版状态落在 stories 主记录上。

原因是当前 MVP 的生成方式仍然以同步请求为主:后端在一次请求中完成主内容保存,再补全封面、绘本插图或语音。用户最关心的是“这个故事现在能不能读、哪些资产可补全”,而不是一个独立 job 的生命周期。

现有状态模型

当前 stories 表已承载演示所需状态:

  • generation_status: 主流程状态,例如 narrative_readyassets_generatingcompleteddegraded_completedfailed
  • image_status: 封面或绘本插图状态
  • audio_status: 语音状态
  • last_error: 最近一次资产失败原因

这些字段足够支撑前端展示、smoke 检查、失败降级和资产重试。

什么时候需要落库 job

如果后续进入真实生产化,需要重新评估 generation_jobs

  • 生成流程改成真正异步,前端需要轮询 job 进度。
  • 单个故事会产生多次生成尝试,需要审计每次 provider 调用。
  • 需要展示更细颗粒度步骤,例如 prompt 构建、文本生成、封面生成、每页插图、TTS。
  • 需要按 provider、成本、延迟和失败原因做运营分析。
  • 需要断点续跑,避免 Worker 重启后丢失中间状态。

推荐未来结构

未来可以新增两层记录:

  • generation_jobs: 一次用户发起的生成任务,记录输入、状态、耗时、错误和关联 story。
  • generation_job_events: 任务事件流记录每一步开始、成功、失败、provider、耗时和错误摘要。

这会把“用户可见结果”和“系统执行过程”分开,但目前还不是求职版的最高优先级。

面试表达

我现在没有急着加 job 表,是因为 MVP 首要目标是让故事结果稳定可读,并让资产失败可恢复。等生成链路变成真正异步、需要审计和运营指标时,再把执行过程拆到 job/event 表,会比现在提前设计复杂表结构更稳。