# DreamWeaver 求职演示 Checklist **目标**: 演示前用 5-10 分钟确认本地 Docker 环境、核心生成链路和讲解材料处于可展示状态。 --- ## 1. 演示前准备 ### 环境检查 - [ ] 已拉取最新 `main` - [ ] `backend/.env` 存在,且不包含需要提交的真实密钥 - [ ] `DEBUG=true` - [ ] `ENABLE_DEMO_PROVIDERS=true` - [ ] `SECRET_KEY` 已设置 - [ ] Docker Desktop 正常运行 ### 启动命令 ```bash docker compose up -d --build docker compose ps ``` ### 入口 - 用户端:http://localhost:52080 - 本地登录:http://localhost:52080/auth/dev/signin - 语音共创:http://localhost:52080/voice-studio - Admin:http://localhost:52888 - 后端健康:http://localhost:52000/health - Admin 后端健康:http://localhost:52800/health --- ## 2. 自动 smoke 检查 默认检查健康、登录、普通故事、绘本、图片补全和 Provider 能力分层: ```bash ./scripts/demo_smoke.sh ``` 需要检查 TTS 音频时: ```bash SMOKE_AUDIO=1 ./scripts/demo_smoke.sh ``` 需要检查语音共创 Alpha 时: ```bash SMOKE_VOICE=1 ./scripts/demo_smoke.sh ``` 需要同时检查 TTS 和语音共创时: ```bash SMOKE_AUDIO=1 SMOKE_VOICE=1 ./scripts/demo_smoke.sh ``` 通过标准: - [ ] backend health 返回 `ok` - [ ] admin-backend health 返回 `ok` - [ ] dev login 能拿到 session - [ ] `/api/generations` 能生成普通故事 - [ ] 普通故事生成响应返回 `generation_job_id`,且 job 事件可查询 - [ ] 普通故事 provider stats 返回成功率、耗时和成本字段 - [ ] 普通故事封面 retry 后 `image_status=ready` - [ ] 故事详情页能看到生成轨迹和 Provider 调用结果 - [ ] 故事库能看到跨故事 Provider 运营摘要 - [ ] `/api/generations` 能生成绘本 - [ ] 绘本生成响应返回 `generation_job_id`,且 story job history 可查询 - [ ] 绘本 provider stats 返回成功率、耗时和成本字段 - [ ] 绘本图片 retry 后 `image_status=ready` - [ ] 绘本阅读页能看到生成轨迹和资源重试历史 - [ ] `/admin/providers/capabilities` 返回 `text/image/tts/storybook/asr` - [ ] `/api/audio/{story_id}/status` 能查询音频缓存状态且不触发生成 - [ ] 如果启用 `SMOKE_AUDIO=1`,音频 retry 后 `audio_status=ready` - [ ] 如果启用 `SMOKE_VOICE=1`,语音共创会话可完成文本 fallback、上传回合、analytics 和 finalize 到 Story - [ ] 验证结果已记录到 `docs/planning/demo-validation-log.md` --- ## 3. 手动演示路径 ### 路径 A: 普通故事 1. 打开用户端。 2. 使用本地登录。 3. 创建普通故事: - 关键词:`月亮船,小狐狸,学会道歉` - 教育主题:`真诚表达` 4. 进入故事详情页。 5. 展示: - 标题和正文 - 封面状态 - 音频状态 - 音频缓存大小与更新时间 - 资产补全/重试入口 6. 点击音频播放,说明音频缓存复用;必要时清理缓存后重新生成。 ### 路径 B: 绘本 1. 创建绘本: - 关键词:`彩虹邮局,小刺猬,练习说谢谢` - 教育主题:`感恩表达` 2. 进入绘本阅读器。 3. 翻页展示多页文本和插图。 4. 刷新页面或复制 URL,说明绘本已经支持按 ID 恢复。 ### 路径 C: Admin/Provider 1. 打开 Admin。 2. 说明管理端不是用户主链路,而是产品拥有者维护供应链路的辅助能力。 3. 通过接口或页面说明: - Capability: `text/image/tts/storybook/asr` - Provider: 具体供应商配置 - Adapter: API 调用实现 - Routing Policy: 优先级/成本/延迟/轮询 ### 路径 D: 语音共创 Alpha 1. 打开用户端并进入“语音共创”。 2. 创建一个新会话,先使用文本 fallback 快速演示: - 首轮:`我想听一个小熊和星星一起找家的故事` - 修正:`不要让小熊害怕,让月亮姐姐帮它` 3. 展示每轮内容: - 用户表达 / 系统理解 - 系统文字回应 - TTS 语音回应状态 - 最近事件和待处理提示 4. 演示低置信度确认:说明系统会提示“本轮系统理解为”,家长可选择继续、重说或改成文本。 5. 点击结束并保存,确认正式 Story 进入故事库。 6. 打开生成轨迹,说明语音共创 finalize 后的封面资产补全已经接回统一 generation job。 --- ## 4. 3 分钟讲解结构 详细稿见 `docs/planning/interview-pitch.md`。现场建议背结构,不逐字背。 ### 0:00 - 0:40 产品定位 DreamWeaver 是面向 3-8 岁亲子场景的个性化 AI 绘本与陪伴式讲述产品。它不是只生成一次性故事,而是围绕孩子档案、成长主题和故事宇宙,生成可回看、可补全、可聆听的故事体验。 ### 0:40 - 1:30 用户闭环 用户选择孩子档案,输入主题或教育目标,生成故事或绘本。主内容先可读,封面、插图、语音作为资产补全。即使图片或音频失败,故事仍然可读,并且可以后续重试。 ### 1:30 - 2:20 系统设计 系统收敛到统一 Generation Workflow:上下文准备、主记录保存、资产补全、状态回写和后处理。Provider 体系拆成 Capability、Provider、Adapter、Routing Policy,用户不需要理解模型供应商,只感知稳定的产品能力。 ### 2:20 - 3:00 取舍与下一步 求职版优先稳定闭环和可解释性,不做支付、多租户和复杂监控。现在 job/event 已能查询 workflow、资产补全、provider 调用轨迹和聚合指标,统一生成已迁移到后台 worker,取消/重试队列也已打通;用户端可看跨故事运营摘要,管理端可看当前环境跨用户 Provider dashboard。下一步应补跨环境汇聚、断点续跑和更完整监控。 --- ## 5. 风险预案 | 风险 | 现场处理 | | --- | --- | | 网络导致 TTS 失败 | 说明音频是可恢复资产,不阻塞故事阅读;使用已缓存样本或跳过 TTS | | 图片 provider 未补全 | 展示 partial ready,说明主内容已可读、资产可稍后补全 | | 图片 provider 失败 | 展示 degraded completed 与 retry 机制 | | 录音或 ASR 不稳定 | 切到文本 fallback,说明 Alpha 阶段已保留降级路径 | | 语音共创低置信度卡住 | 使用“按这个理解继续”或“改成文本输入”完成本轮 | | Docker 冷启动慢 | 演示前提前运行 smoke 脚本并保持容器运行 | | Admin 页面不适合主展示 | 只用 Provider 分层说明辅助讲系统设计 | | 面试官追问生产部署 | 明确当前是求职版 MVP,本轮重点是产品闭环和系统边界 | --- ## 6. 演示完成标准 - [ ] 面试官能在 30 秒内理解产品定位。 - [ ] 能现场看到普通故事和绘本结果。 - [ ] 能解释失败降级和资产重试。 - [ ] 能解释为什么 Provider 分层是产品设计,而不是单纯技术炫技。 - [ ] 能说明语音共创当前是 Phase A Alpha,而不是实时语音最终形态。 - [ ] 能说明下一步计划,而不是让项目停在 demo。