feat: add generation trace and partial-ready workflow status

This commit is contained in:
2026-04-18 21:53:55 +08:00
parent 96dfc677e2
commit e99a7fbe14
36 changed files with 2597 additions and 144 deletions

View File

@@ -52,9 +52,15 @@ SMOKE_AUDIO=1 ./scripts/demo_smoke.sh
- [ ] admin-backend health 返回 `ok`
- [ ] dev login 能拿到 session
- [ ] `/api/generations` 能生成普通故事
- [ ] 普通故事生成响应返回 `generation_job_id`,且 job 事件可查询
- [ ] 普通故事 provider stats 返回成功率、耗时和成本字段
- [ ] 普通故事封面 retry 后 `image_status=ready`
- [ ] 故事详情页能看到生成轨迹和 Provider 调用结果
- [ ] `/api/generations` 能生成绘本
- [ ] 绘本生成响应返回 `generation_job_id`,且 story job history 可查询
- [ ] 绘本 provider stats 返回成功率、耗时和成本字段
- [ ] 绘本图片 retry 后 `image_status=ready`
- [ ] 绘本阅读页能看到生成轨迹和资源重试历史
- [ ] `/admin/providers/capabilities` 返回 `text/image/tts/storybook`
- [ ] 如果启用 `SMOKE_AUDIO=1`,音频 retry 后 `audio_status=ready`
- [ ] 验证结果已记录到 `docs/planning/demo-validation-log.md`
@@ -117,7 +123,7 @@ DreamWeaver 是面向 3-8 岁亲子场景的个性化 AI 绘本与陪伴式讲
### 2:20 - 3:00 取舍与下一步
求职版优先稳定闭环和可解释性,不做支付、多租户和复杂监控。下一步会继续打磨前端状态体验、旧 API 兼容策略和 generation job 是否落库
求职版优先稳定闭环和可解释性,不做支付、多租户和复杂监控。现在 job/event 已能查询 workflow、资产补全、provider 调用轨迹和聚合指标,用户端和管理端也能展示生成轨迹;下一步会迁移到后台 worker 和进度轮询
---
@@ -126,6 +132,7 @@ DreamWeaver 是面向 3-8 岁亲子场景的个性化 AI 绘本与陪伴式讲
| 风险 | 现场处理 |
| --- | --- |
| 网络导致 TTS 失败 | 说明音频是可恢复资产,不阻塞故事阅读;使用已缓存样本或跳过 TTS |
| 图片 provider 未补全 | 展示 partial ready说明主内容已可读、资产可稍后补全 |
| 图片 provider 失败 | 展示 degraded completed 与 retry 机制 |
| Docker 冷启动慢 | 演示前提前运行 smoke 脚本并保持容器运行 |
| Admin 页面不适合主展示 | 只用 Provider 分层说明辅助讲系统设计 |

View File

@@ -4,6 +4,15 @@
## 2026-04-18
补充验证:
- 后端新增 `partial_ready``text_status` 与迁移 `0012_story_text_status` 后,`backend/.venv/bin/python -m pytest backend/tests -q` 通过82 个测试通过。
- `backend/.venv/bin/python -m ruff check backend/app backend/tests backend/alembic/versions/0012_add_story_text_status_and_partial_ready.py` 通过。
- 用户端与管理端 `npm run build` 均通过。
- `docker compose up -d --build` 已用当前代码重建本地演示栈。
- 当前本地 Docker 数据卷来自早期 `create_all`,缺少 `alembic_version` 且旧 `stories` 表没有 `text_status`;本轮已为演示库补齐 `text_status`、回填状态,并 `alembic stamp head``0012_story_text_status`
- `./scripts/demo_smoke.sh` 通过:普通故事以 `partial_ready` 可读返回,封面补全后仍可读且音频待补;绘本无图时 `partial_ready`,插图补全后 `completed`generation job、story job history 和 provider stats 均可查询。
验证范围:
- 用户前端 Docker 生产构建

View File

@@ -31,10 +31,13 @@ AI 生成产品最大的问题不是“能不能调模型”,而是结果不
后端通过统一状态字段表达结果:
- `generation_status`
- `text_status`
- `image_status`
- `audio_status`
- `last_error`
其中 `partial_ready` 表示主内容已经可读但资产还可以继续补全,`degraded_completed` 表示主内容可读但某个资产失败,需要用户稍后重试。
服务层也抽出了 `AssetCompletionResult`,用来表达资产补全类型、状态、结果值、错误信息和是否阻塞主结果。
---
@@ -58,7 +61,7 @@ AI 生成产品最大的问题不是“能不能调模型”,而是结果不
目前本地 Docker 可以跑通完整链路,并且有 smoke 脚本验证健康检查、登录、生成、资产重试、故事列表和 Provider 能力分层。
下一步我会继续打磨前端状态体验,让生成中、部分完成、失败重试这些 AI 产品特有状态更清楚;同时明确旧 API 兼容层和 generation job 是否需要落库
现在 generation job 已经能查询完整事件流,包括 workflow、资产补全和 provider 调用;用户端和管理端都能展示生成轨迹,也能看到 provider 成功率、耗时和成本视角
我希望通过这个项目展示的是:我不只是会接 AI API而是能把不确定的模型能力收敛成稳定、可解释、可恢复的产品体验。
@@ -80,4 +83,4 @@ AI 生成产品最大的问题不是“能不能调模型”,而是结果不
### 这个项目下一步怎么上线?
我会先完成演示级前端状态体验和旧 API 兼容策略,再决定 generation job 是否落库。生产上线前还需要补真实用户鉴权配置、密钥管理、监控告警和部署策略。
我会先把当前轻量 job/event 模型迁移到后台 worker 和进度轮询,再补跨时间窗口的 provider 运营分析。生产上线前还需要补真实用户鉴权配置、密钥管理、监控告警和部署策略。

View File

@@ -49,7 +49,7 @@ Week 2 的目标不是做“完整商业产品”,而是做出一个面试时
- 会员、支付、商业化
- 多租户 Provider 市场
- 大规模视觉重做
- 复杂 generation job 落库
- 复杂工作流引擎和生产级任务编排
- 生产级部署、高可用、监控大盘
- 新增大量第三方 Provider
@@ -89,6 +89,7 @@ Week 2 的目标不是做“完整商业产品”,而是做出一个面试时
| W2-14 | Frontend | 同步管理端生成状态与资产补全体验 | 用户端/管理端状态体验不再分叉 | P1 | 0.5d | Done |
| W2-15 | Security | 移除管理后台弱默认密码 | 非 debug 管理后台拒绝空/弱密码 | P1 | 0.5d | Done |
| W2-16 | Workflow | 轻量落库 generation job/event 与 retryable assets | 生成/资产补全过程可追踪,前端按标准字段展示 CTA | P1 | 1.0d | Done |
| W2-17 | Workflow | 落地 `partial_ready``text_status` 细粒度状态 | 主内容可读、资产待补全、资产失败三类状态可明确区分 | P1 | 0.5d | Done |
---
@@ -129,12 +130,13 @@ Week 2 的目标不是做“完整商业产品”,而是做出一个面试时
## 7. Definition of Done
- [ ] smoke 脚本能在本地 Docker 栈中完成健康检查、登录、生成、重试和读回验证。
- [ ] 用户端主链路可手动演示,不需要打开数据库或日志解释状态。
- [ ] 故事和绘本的主要失败降级态有清楚展示和重试方式。
- [ ] README、docs index、演示 checklist 与当前代码一致。
- [ ] 面试讲解能在 3 分钟内说明产品价值、技术工作流和取舍。
- [ ] 全量后端测试、ruff、Docker build 在演示前可通过。
- [x] smoke 脚本能在本地 Docker 栈中完成健康检查、登录、生成、重试和读回验证。
- [x] 用户端主链路可手动演示,不需要打开数据库或日志解释状态。
- [x] 故事和绘本的主要失败降级态有清楚展示和重试方式。
- [x] README、docs index、演示 checklist 与当前代码一致。
- [x] 面试讲解能在 3 分钟内说明产品价值、技术工作流和取舍。
- [x] 全量后端测试、ruff、Docker build 在演示前可通过。
- [x] `partial_ready``text_status`、job progress 和 Provider stats 在 API、前端与文档中保持一致。
---