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

44 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Generation Job 状态落库决策
这份文档用于回答一个关键技术债问题DreamWeaver 是否需要为每次 AI 生成单独建立 `generation_jobs` 表。
## 当前结论
短期不新增 `generation_jobs` 表,继续把求职版状态落在 `stories` 主记录上。
原因是当前 MVP 的生成方式仍然以同步请求为主:后端在一次请求中完成主内容保存,再补全封面、绘本插图或语音。用户最关心的是“这个故事现在能不能读、哪些资产可补全”,而不是一个独立 job 的生命周期。
## 现有状态模型
当前 `stories` 表已承载演示所需状态:
- `generation_status`: 主流程状态,例如 `narrative_ready``assets_generating``completed``degraded_completed``failed`
- `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 表,会比现在提前设计复杂表结构更稳。