建档改为四步。帮别人看写入已有人物档案,不新增数据库列。本人没有出生资料时不显示今日星语,「和我合盘」改成一句说明。起步三问只读已有上升和月亮:前两问直接发送,第三问只聚焦输入框。 自测:tsc 退出码 0;lint 0 error、121 warning;定向测试 142 项,pass 142,fail 0,cancelled 0;build 成功,/ 仍是 Static。首屏 gzip 592895,相对基线 578435 为 +2.50%。未跑全量 npm test、Python 快速门和 test:db。 Co-Authored-By: Grok (agent loop)
9.0 KiB
PROGRESS · 新用户启程(二)建档先看谁的盘、起步三问(2026-10-24)
工单 #96。分支 codex/onboarding-2-intake-20261022。基线 origin/staging d3be9491eeb115559424c4c5e457497062765e18(#104 已在这个提交里)。只做任务书 T3、T4。T1、T2 用 #95 已经合入的字段,没有新迁移。T5–T8 和 D6 动效不做。
结论
建档多了一步「这次先看谁的盘」。可以先帮别人看,自己的出生资料以后再补。建完后的空白首页,在第一次提问还没用掉时,给出三个起步问题。第一问不扣点。点前两问直接发出去,点第三问只让输入框亮一下。
做了什么
- 建档四步:称呼、看谁的盘、出生日期与时间、出生地。进度条四格。第二步的两句大选项、五个关系、第三步和第四步的句子,按任务书逐字。
- 选「我自己」:后面仍写本人资料。选「帮别人看」:名字和关系写入已有的人物档案;本人只留下称呼。建完后当前人物是这一位,新的空白对话也绑在这一位。
- 建完的口径:本人资料完整,或档案里至少有一位资料完整的人。中途退出,下次从缺的那一步接着问。
- 「我自己」在出生资料还没保存之前,选择记在这台浏览器里(
localStorage,键jyotisha_onboarding_intake:加账户 id)。没有新的数据库列,也没有写入onboarding_state。 - 本人没有出生资料时,首页不显示今日星语按钮,问候下面的趋势句也不显示。「和我合盘」换成一句「加上你自己后可合盘」。补上本人之后,今日星语出现,合盘可以点。
- 当前人物不是本人时,生时校正本来就不会提议(已有「生时校正暂时只支持本人。」)。这一张没有重做。
- 起步三问的显示条件:已经建完档、账户仍是首问免费、当前是空白首页,并且当前这位的盘是完整的。用掉首问后,下次回到空白首页不再出现。前端只读
firstConsultFree,不在本地改它。 - 三个问题的句子放在
frontend/src/lib/starter-questions.ts。星座只用今日星语已经算好的上升和月亮,转成「白羊」这种短名。没有多发请求,也没有再调模型。出生时间不知道到分钟时,今日星语不算上升,第一问走「从盘看」那一档。 - 新界面用已有的 shadcn 按钮、输入框、单选。白名单没有加长。
Home()的useState/useRef没有增加。 - 顺手去掉建档里到不了的校正分支,以及首页说明里已经不存在的生时校正卡。过场结束仍然不弹提示。
onboardingJustCompleted仍保留,但永远是关着的:删掉这个状态会碰到很多调用点,而冻结规则不许再加状态。页面上不再显示那句到不了的完成语。
没有新迁移
读写的是 #95 已有的人物档案、关系和账户上的 firstConsultFree。选「我自己」的中途记录只在本机。没有改查询形状,没有跑、也没有宣称 npm run test:db。
断言改动(原值 / 新值 / 原因)
| 测试 | 原值 | 新值 | 原因 |
|---|---|---|---|
birth-time-guided-review-fixes.test.ts |
引导屏含 onboardingStep === "rectification" |
引导屏不再出现这一支 | BUG-1431。校正步骤到不了,地点回显留在出生地那一步 |
profile-onboarding-birth-sky-reveal.test.ts |
onOwnBirthPlaceSaved?.() |
onOwnBirthPlaceSaved?.(subjectId) |
帮别人看时过场带上这一位;本人仍是 self |
| 同上 | loadBirthSkyRevealSky(signal) |
loadBirthSkyRevealSky(signal, id) |
天空按当前人物取,默认仍是本人 |
people-archive-view.test.tsx |
他人详情始终是可点的「和我合盘」 | 本人资料不完整时,该位置是「加上你自己后可合盘」,没有「和我合盘」 | 先帮别人看时,合盘要等本人资料齐。本人完整的那一则仍断言「和我合盘」 |
rectification-lazy-loading.test.ts |
引导屏动态加载 BirthTimeRectification |
引导屏不再包含它;首页仍挂载对话里的校正 | BUG-1431。建档里的校正卡是死代码 |
home-bootstrap-screens.test.tsx |
另渲一屏校正,断言「出生时间尚未完成评估」和「重新评估」 | 出生步不再出现这两句 | 同上。另加一屏「看谁的盘」,锁住四格进度和两个选项 |
rectification-agentic-entry.test.ts |
missingProfileStep(profile) |
missingProfileStep(profile, chartLibrary) |
建完改为本人完整,或档案里至少一位完整 |
onboarding-intake-20261022.test.ts(新文件) |
起草时曾要求「看谁的盘」源码里直接写出「其他」 | 组件用 PERSON_RELATIONS.map 和 PERSON_RELATION_LABELS[item];五个中文在 person-relation.ts |
关系文案本来就集中在那一处。产品句子没有改 |
其余既有断言没有放宽。源码里仍保留「和我合盘」这四个字,给本人资料完整时使用。
自测
| 检查 | 命令 | 结果 |
|---|---|---|
| 类型 | frontend\node_modules\.bin\tsc --noEmit -p frontend |
退出码 0,无输出。补合盘说明样式是 CSS,不影响类型。其后 npm run build 的 TypeScript 步骤也没有报错 |
| 检查 | 在 frontend 下 npm run lint |
退出码 0。0 error,121 warning。同一基线上组件库那一单记下的是 122 warning。没有去修无关警告 |
| 定向测试 | 在 frontend 下 node node_modules/tsx/dist/cli.mjs --test 下面 14 个文件 |
142 项,pass 142,fail 0,cancelled 0,skipped 0,退出码 0。第一次是 140 通过、2 失败(关系文案断言写错位置、合盘说明缺一条样式)。改完后整组再跑是这一行 |
| 构建 | 在 frontend 下 npm run build |
退出码 0。/ 是 ○ Static。79 页。skill-package-registry 的 5 条 Turbopack 警告是改前就有的 |
| 首屏体积 | 首页 HTML 引用的 /_next/static/**.js,gzip-9 相加 |
基线 d3be9491:33 个文件,578435 字节。这一张:33 个文件,缺失 0,592895 字节。+14460 字节,+2.50%。±2% 的上限是 590004,超出约 2891 字节 |
定向测试文件:onboarding-intake-20261022、home-bootstrap-screens、profile-onboarding-birth-sky-reveal、birth-time-guided-review-fixes、rectification-lazy-loading、rectification-agentic-entry、people-archive-view、starter-questions、daily-starlanguage、daily-starlanguage-library、home-shell-growth-contract、chart-library-other-profile、birth-time-assessment-loading、ui-kit-whitelist。
首屏仍是这 33 个脚本,没有新的首屏文件。多出来的体积是首页接上「看谁的盘」、起步三问,以及从已有的今日星语结果里记住上升和月亮。没有为了凑进 ±2% 去删无关代码,也没有把起步三问改成用到才加载。空白首页本来就是首屏。
没有跑前端全量 npm test,没有跑 Python 快速门。Python 入口和 scripts/jyotish_api_server.py 没有改。
限制(验收时会碰到)
- 选「我自己」之后、出生资料还没保存就关掉:同一台浏览器会接着问。换一台设备会回到「看谁的盘」,因为这一步只记在本机。已经写下别人的名字和关系时,档案在服务器上,换设备也会接着问这个人的出生资料。
- 档案里如果留下一位写了名字但资料不齐的人,而本机又没有「我自己」的记录,下次会接着问这个人,而不是先问看谁的盘。这就是「从缺的那一步接着问」。
- 帮别人看的天空过场,副句是「那一刻,{名字}的上升在{星座}」。上升要等今日星语那一次计算返回。过场常常先结束,这时不另写一行,原来的天空句子照常播。没有为了这一行再排一次盘。星座稍后才到时,只补上这一行,过场动画不重头播。
- 名字或上升还不知道时,不显示这行副句。
- 档案列表在保存后短暂还没回来时,出生地那一页会先留着,避免闪回出生日期。列表回来后才进入首页。
- 第一问回答完,当时的对话里问题会消失。若在账户状态刷新之前又开一条空对话,三个问题可能再闪一次。扣不扣点仍由服务器决定,前端不把「已用」写死在本地。
- 没有做 650 毫秒转场、星点和闪烁。看谁的盘展开用的是原来 180 毫秒的卡片入场。
环境缺口
- 没有登录态,也没有用浏览器走完建档。不能写成「已经在真机上看过」。可照做的步骤在
docs/testing/onboarding-journey-20261022.md的「先看谁的盘」和「起步三问」。 - 没有 Docker 上的数据库测试。这一张不改数据库访问层。
记录
- BUG-1431,状态
enhancement。不是缺陷。 CHANGELOG.md、frontend/DESIGN.md、frontend/docs/VOICE.md(写明 2026-10-24 起步三问这条例外)、docs/testing/onboarding-journey-20261022.md。- 任务书基线
c1aa72fcb和 BUG 起点 1420 都已过期。本单基线是上面的d3be9491,编号用 1431。