# 报告生成进度:真实环境走查清单(2026-09-09,BUG-601) 执行环境没有登录态、没有 Chrome、没有模型凭据,因此**没有任何一次真实报告生成被观察过**。下面每一条都需要一位有真实账号的人在 staging 上照做。自动化替代证据见 `frontend/tests/personal-report-progress.test.ts`(16 项,纯函数 + 源码锁)。 前置:staging 已部署含本轮改动的 SHA;账号点数足以生成一份个人报告。 ## 1. 三个阶段各自出现过 生成一份个人报告,停在 `/reports/` 不要离开,全程录屏或每 30 秒截一张。 - [ ] **准备阶段**:屏幕上是一个转圈 + 「正在准备你的星盘证据」。没有章节清单,没有「已完成 0 / 0 章」。 - [ ] **写作阶段**:转圈消失,换成「已完成 N / M 章」大字 + 一条按章分格的进度条 + 章节清单。M 等于本次生成的主题数(默认 5:事业、婚恋、财富、应期、健康)。 - [ ] **收尾阶段**:清单消失,回到转圈 + 「正在整理成文」。 - [ ] 完成后自动跳到报告正文。 如果**从头到尾没有出现过写作阶段**,说明分章行没有下发,这是本轮最可能的失败模式,请把 `/api/reports/` 的响应体(去掉正文)贴给开发。 ## 2. 章节名对得上,而且不错位 这是本轮最容易做错的一条,请特别留意。 - [ ] 清单里同一时刻**至多一章**显示「正在写」。 - [ ] 那一章的名字,与几十秒后变成「已完成」的那一章,**是同一章**。(如果它写完后变成已完成的却是清单里的另一行,就是错位,必须报回来。) - [ ] 已完成的章按完成先后逐个变成「已完成」,不会一次跳变两章以上(除非确实很快)。 - [ ] 章节名是中文(事业 / 婚恋 / 财富 / 应期 / 健康),不是 `career` 这样的英文 id。 ## 3. 进度条与清单不打架 - [ ] 进度条的格数 **等于** 清单的行数。 - [ ] 深色格数 = 清单里「已完成」+「写作失败」的行数。 - [ ] 进度条不会自己平滑地往前爬——它只在某一章状态变化时跳一格。盯着看 30 秒,没有变化时它应该纹丝不动。 ## 4. 慢章节的文案 需要碰到一次某章写得久(超过 90 秒)。可遇不可求,遇到就记下来。 - [ ] 该章文案从「正在写」变成「用时较长,仍在写」。 - [ ] 该文案**没有**出现「第 2 次尝试」「重试」这类字样。 - [ ] 恢复推进后,下一章回到正常的「正在写」。 ## 5. 有章节失败时 需要一次部分失败的生成(不易构造,若一直没遇到请在清单上写「未遇到」,不要打勾)。 - [ ] 失败的那一章显示「写作失败」。 - [ ] 进度条对应格仍然是深色(失败也算完成的工作),整体继续前进。 - [ ] 最终页面出现「M 个主题中 N 个写作失败:…」这类说明,**不是**只说一句「完成」就跳走。 ## 6. 长等待与离开 - [ ] 等到超过 8 分钟:页面出现「生成时间超出预期」,有「继续等待」和「返回报告中心」两个按钮。 - [ ] 点「继续等待」后,等待计时归零,进度重新开始显示(不是空白)。 - [ ] 中途切到别的标签页再切回来:进度继续,没有重复计时或倒退。 - [ ] 中途刷新页面:进度接着显示,不是从头开始。 ## 7. 手机上 - [ ] iPhone Safari 竖屏:章节清单每行「主题名 — 状态」左右对齐,不换行错位、不溢出。 - [ ] 进度条在窄屏下每格仍然可见(5 格不会挤成一条)。 ## 8. 深色模式 - [ ] 系统切到深色:已完成 / 正在写 / 待写 三种颜色仍然区分得开,进度条深色格与底色对比足够。 --- 未打勾的项一律写成「未验证」,不要因为"看起来应该没问题"就打勾。发现错位、卡住不动、或章节名不对,直接把现象和 `/api/reports/` 响应(去掉正文)贴回。