右上角「启程 n/N」按真实使用打勾,收费项读计价表。八条提示一次一条,看过写入已有的 onboarding_state。没有新表、新接口,也没有增加 Home 的状态。 自测:tsc --noEmit 通过;frontend 下 npm run lint 是 0 error、121 warning;定向测试 94 项全过,清单测试在最后一次改动后再跑 12 项全过;npm run build 后 / 仍是 Static。首屏 JS gzip-9 是 617860 字节,相对 592895 增加 4.21%,原因写在进度里。没有跑全量 npm test,没有跑 Python 快速门,没有宣称 test:db。 Co-Authored-By: Grok (agent loop)
6.7 KiB
PROGRESS · 新用户启程(三)启程清单与一次性提示(2026-10-24)
工单 #97。分支 codex/onboarding-3-checklist-20261022。基线 origin/staging 4d63475cafe6112ca08432c758676e45e2808c16(#96 已在这个提交里)。只做任务书 T5、T6。T1–T4 用已合入的字段和页面,没有新迁移。T7 动效不做。
结论
建完档之后,首页右上角出现「启程 n/N」。七项按真实使用打勾,合盘和个人报告写出计价表上的价格。八条提示一次只出一条,看过就不再出现。
做了什么
- 胶囊在首页顶栏右侧、点数按钮左边。手机是底部抽屉,平板和桌面是弹出层。视口还没分清之前,胶囊不可打开,避免先弹出错误的一层。
- 本人路径和帮别人看的路径,句子、顺序、「做过」的判定和「去做」去哪里,按任务书的表。本人资料完整就用本人的句子;只有别人完整时才用帮别人看的句子。名字用最早建档的那一位完整他人;没有建档时间时用列表里的第一位,再没有就写 TA。
- 「先不看了」写入已有的
checklistDismissedAt。七项在这一次使用里刚满时,再打开一次「都走过一遍了」,关掉后同样写入。进站时已经满的账户,胶囊和这一屏都不出现,也不写入。 - 合盘行在
product.compatibility开启时出现,价格读synastry.full。个人报告行在product.report_center和PERSONAL_REPORT_ENABLED都开启时出现,有report.full的价格才写「· N 点」。读不到开关时,这两行不出现,也不把账户当成已经做完。 - 八条提示用同一个
useOneTimeHint。点「知道了」、点页面别处或按 Esc 写入已有的hintsSeen。被天空过场、兑换窗、弹窗、抽屉或正在生成的回答挡住时先不出,条件过去再出。提示不抢焦点。 - 问过之后、还没打开星盘时,侧栏「星盘」和手机菜单按钮带一个 8px 小圆点。星盘四个页签没看过时右上角也有小点,各自记住。
- 打开星盘且盘已经出来,写入已有的
chartVisitedAt。当前人物不是本人时,本命盘那句的「你的」换成「{名字}的」。 Home()的useState/useRef没有增加。白名单没有加长。新界面用已有的按钮、抽屉和弹出层。没有改.gitea/,没有改生产部署配置。
没有新迁移
读写的是 #95 已有的 onboarding_state,以及已有的档案、会话、报告和产品开关。人物列表多返回已有的 created_at。产品开关的返回里多了报告中心是否开启和报告价格,原来的合盘字段还在。没有新表,没有新接口,没有改查询写法,没有跑、也没有宣称 npm run test:db。
断言改动(原值 / 新值 / 原因)
没有改既有断言。新增 frontend/tests/onboarding-checklist-20261022.test.ts。星盘页、侧栏和首页增长合同仍按原断言通过。
自测
| 检查 | 命令 | 结果 |
|---|---|---|
| 类型 | frontend\node_modules\.bin\tsc --noEmit -p frontend |
退出码 0。中间曾有档案列表的 role 被放宽成 string,补上原来的 PersonRow 后通过 |
| 检查 | 在 frontend 下 npm run lint |
退出码 0。0 error,121 warning。与 #96 记下的 121 条相同,没有新增。没有去修无关警告 |
| 定向测试 | 在 frontend 下 node node_modules/tsx/dist/cli.mjs --test 下面 5 个文件 |
94 项,pass 94,fail 0,cancelled 0,skipped 0,退出码 0。清单测试在最后一次改档案页之后又单独跑过,12 项全过 |
| 构建 | 在 frontend 下 npm run build |
退出码 0。/ 是 ○ Static。79 页。skill-package-registry 的 5 条 Turbopack 警告是改前就有的 |
| 首屏体积 | 首页 HTML 引用的 /_next/static/**.js,gzip-9 相加 |
基线 4d63475:33 个文件,592895 字节。这一张:32 个文件,缺失 0,617860 字节。+24965 字节,+4.21%。±2% 的上限是 604753,超出约 13107 字节 |
定向测试文件:onboarding-checklist-20261022、home-shell-growth-contract、sidebar-contract、chart-page-view、profile-gender-20260927。
首屏脚本少了一个文件,总体积变大。清单胶囊、八条提示和手机底部抽屉都挂在首页外壳上,首页一打开就要看见胶囊,所以它们进了首屏脚本,没有拆成之后再加载。没有为了凑进 ±2% 去删无关页面。
没有跑前端全量 npm test,没有跑 Python 快速门。Python 入口和 scripts/jyotish_api_server.py 没有改。
限制(验收时会碰到)
- 「问过」只看侧栏已经加载的会话:当前人物,默认每页 40 条。更早的页和其他人的对话不会为了打勾再去翻。标题里有「今日节奏」的算打开过今日星语;消息还没展开时,只要标题对得上也算。
- 星历那条提示的「打开三次」,除了上面这些对话,也会把点「今日星语」按钮算进去。点了但没写成一条对话,清单上的「打开今日星语」仍不算做过。
- 合盘「做过」看已经写好的合盘报告,加上旧的合盘列表里有没有记录。生成中或失败不算。新列表最多看三页、每页 10 条。旧列表只看返回的最多 10 条;只要这 10 条里有一条,就算做过。
- 个人报告「做过」先看本人,没有再按别人逐个看,每人最多三页。更早的一份可能暂时没被数到,这时这一行先不打勾,也不会把账户当成已经做完。
- 合盘或报告的数量读失败时,这一行先显示为没做,胶囊仍在,但不会出现「都走过一遍了」。
- 跟进提示只在这一次回答从生成中变成写完、并且这是第一条正式回答时出现。打开页面时历史上已经有回答,不补这一条。寒暄不算。
- 星历提示要等第三次今日星语之后的下一次打开侧栏。当时侧栏已经开着,要先关上再打开。
环境缺口
- 没有登录态,也没有用浏览器走完清单和提示。不能写成「已经在真机上看过」。可照做的步骤在
docs/testing/onboarding-journey-20261022.md的「启程清单」和「一次性提示」。手机 375 宽不横向滚动,由页面overflow: clip、顶栏minmax(0, 1fr)和清单宽度min(22rem, calc(100vw - 2rem))约束,测试锁住这些样式,没有在浏览器里量。 - 没有 Docker 上的数据库测试。这一张不改数据库访问层。
记录
- BUG-1432,状态
enhancement。不是缺陷。 CHANGELOG.md、frontend/DESIGN.md、frontend/docs/VOICE.md、CONTEXT.md、docs/testing/onboarding-journey-20261022.md。- 动效留给后面的单,这一张没有写 650 毫秒、勾飞进环、星点或闪烁。