fix(chat): fold natal reports and drop homepage topic cards
Homepage no longer waits on /api/onboarding for six starter questions. Natal answers show the spoken layer first; the Level 2 skeleton sits in a collapsed 完整分析 block. Wide tables scroll sideways on a phone. Form inputs are 16px so iOS does not zoom on focus.
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# PROGRESS · 首页主题卡下线 + 聊天回答两层化(2026-09-15)
|
||||
|
||||
- 执行分支:`codex/chat-reading-load-20260915`
|
||||
- 工作树:`.worktrees/chat-reading-load-20260915`
|
||||
- 基线:任务书写 `ebd5ba68`;开工时工作树从 `41473261` 拉起;中途并入文档 `899f955d`(任务 2.6 / 任务 5)
|
||||
|
||||
## 做了什么
|
||||
|
||||
任务 1:删除首页「从一个主题开始」及 `/api/onboarding` 建议问题链路。问候语、今日星语卡、生时校正卡、出生资料录入链路保留。`guided_topic` 枚举保留并加注释。问候语函数搬到 `frontend/src/lib/starter-greeting.ts`。
|
||||
|
||||
任务 2:本命回答按第一个 H2 切成口语层 / 完整分析。默认收起。流式时折叠块不渲染 children,副标「正在写…」。复制仍走 `message.text` 全文。
|
||||
|
||||
任务 2.6:窄屏下三列表仍卡片化;四列及以上在 `.conversation` 里 `width: auto; min-width: max-content` 以触发横滑,并用 `--color-canvas` 渐隐提示。个人报告表格不在范围内。
|
||||
|
||||
任务 3:口语层定形为一句结论 → 2–3 条短要点 → 一句下一步,≤400 字。`product-voice` / `consultation-thinking-plan` / `skill-binding` / `consult/route` 口径对齐。`VOICE.md` 新增「口语层的形状」。
|
||||
|
||||
任务 5:全局 `input` / `select` 无条件改为 `--type-body-md`(16px)。`.otp-input` 20px、`.composer textarea` 16px 未动。
|
||||
|
||||
任务 4:见下表。真机清单 `docs/testing/chat-reading-load-20260915.md`。
|
||||
|
||||
## BUG-630
|
||||
|
||||
主题卡发出点已删。`guided_topic` 枚举与 `pinsConsultationDomains` 仍可读回历史会话。走查清单不再可执行。状态板改为「入口已下线,机制保留供历史会话」。
|
||||
|
||||
## 测试数字
|
||||
|
||||
| | tests(`test(` 声明) | TAP 全量 | 说明 |
|
||||
| --- | ---: | --- | --- |
|
||||
| 基线 `origin/staging` | 3186 | 本机全量 TAP 无法当作门禁数字 | Windows 上 skill 包 `EPERM` symlink、Docker/DB、`G:\\G:\\` 路径是环境缺口,全量 fail 不是本轮回归 |
|
||||
| 改后工作树 | 3200 | 定向合同 fail=0 | 声明数 +14 |
|
||||
|
||||
定向套件(本轮合同,fail=0):`chat-answer-split` / `chat-answer-detail` / `chat-reading-load-home` / `chat-reading-load-mobile` / `starter-questions` / `home-bootstrap-reveal` / `onboarding-presentation` / `consultation-domain-registry` / `consultation-entrypoint` / `consultation-voice-contract` / `consultation-technique-audit` / `consultation-thinking-plan` / `chat-markdown-split` / `model-catalog`。
|
||||
|
||||
`tsc --noEmit` 0 错。`npm run lint` 0 error(存量 warning 未动)。
|
||||
|
||||
`next build`:编译通过;收集 `/api/daily-starlanguage` 等路由时因 Windows `EPERM` 无法为 `SKILL.md` 建 runtime symlink 而失败。与本轮改动无关。`/` 是否仍 Static、首屏 gzip 留给 Gitea 门禁与 Linux 构建;本机记为环境缺口。
|
||||
|
||||
## 删 / 增断言
|
||||
|
||||
删除的文件(整文件):
|
||||
|
||||
- `frontend/tests/onboarding-route.test.ts`(15)
|
||||
- `frontend/tests/onboarding-client.test.ts`(10)
|
||||
- `frontend/tests/onboarding-cache-policy.test.ts`(8)
|
||||
- `frontend/tests/onboarding-route-fake.ts`
|
||||
- `frontend/tests/starter-theme-layout-contract.test.ts`(1)
|
||||
|
||||
`starter-questions.test.ts`:删除 `keeps starter questions visible while the user edits a draft`。领域注册表两条搬到 `consultation-domain-registry.test.ts`。今日星语卡测试改名,去掉 `guided_topic` 点击断言。
|
||||
|
||||
新增:
|
||||
|
||||
- `chat-answer-split.test.ts` 26
|
||||
- `chat-answer-detail.test.ts` 10
|
||||
- `chat-reading-load-home.test.ts` 6
|
||||
- `chat-reading-load-mobile.test.ts` 7
|
||||
|
||||
既有断言三栏(摘):
|
||||
|
||||
| 位置 | 原值 | 新值 | 原因 |
|
||||
| --- | --- | --- | --- |
|
||||
| `home-bootstrap-reveal` prepare 守卫 | 3(含 onboarding) | 2 | 建议问题请求已删 |
|
||||
| `bootstrapPrepareSettled` | 含 `onboardingSettled` | 只等星语 / 入口摘要 / 校正会话 | 同上 |
|
||||
| `model-catalog` | 断言 `/api/onboarding` + `getOnboardingAgent` | 不再覆盖该路由 | 接口已删 |
|
||||
| `consultation-voice-contract` | 切 `onboardingInstructions` | 断言该常量不存在 | onboarding agent 已删 |
|
||||
| `chat-markdown-split` | `renderMarkdown(spoken)` | `renderProse(spoken, renderMarkdown)` | 口语层与报告层共用解析 |
|
||||
| 全局 input 字号 | `--type-body-sm` | `--type-body-md` | 任务 5,iOS 聚焦放大 |
|
||||
|
||||
## 偏离
|
||||
|
||||
- `grep guided_topic frontend/src` 仍会命中 `personal-report-generation.ts` 的 `guided_topics`(复数,报告模块,不是入口枚举)。发出点已无。
|
||||
- 任务 5 选无条件 16px,不是 `(pointer: coarse)`。
|
||||
- 任务 2.6 横滑提示用 `--color-canvas` 渐隐,深色主题同 token。未让步。
|
||||
- 本机 `next build` / 全量 `npm test` 的失败是 Windows 环境缺口,不是产品回归。
|
||||
- 浏览器与 iPhone 真机项见 `docs/testing/chat-reading-load-20260915.md`,不得写成通过。键盘遮挡见 `docs/testing/ios-keyboard-composer-20260915.md`,本轮不修。
|
||||
|
||||
## 未做
|
||||
|
||||
`TASK-mobile-touch-and-breakpoints-20260915.md`(BUG-695~697)按任务书必须排在本轮合入 staging 之后,本提交不含。
|
||||
@@ -116,8 +116,8 @@
|
||||
| `TASK-agent-voice-20260901.md` | — | Agent 输出语气 | 已合入 | `ed9497e7`(PR #48) |
|
||||
| `TASK-chat-streaming-ux-20260901.md` | `PROGRESS-chat-streaming-ux-20260901.md` | 流式体验与双会话面统一 | 已验收 | `4dc0c8c7`(BUG-473~478) |
|
||||
| `TASK-unified-loading-20260902.md` | `PROGRESS-unified-loading-20260902.md` | 首页一次等待一次揭幕 | 已验收 | `482796fc`(BUG-479) |
|
||||
| — | — | 初始化后点首页「家庭」报运行合同未完成:本命第一步未强制计算工具、主题卡无入口钉死 | 待验收 | `codex/consultation-family-contract-incomplete-20260909`(BUG-630);走查 `docs/testing/consultation-family-contract-incomplete-20260909.md` |
|
||||
| `TASK-chat-reading-load-20260915.md` | — | 首页「从一个主题开始」整段下线(连同 `/api/onboarding` 的 LLM 取数与揭幕闸门);聊天回答改两层可见性:口语层默认展开、第一个 H2 起的骨架进默认收起的「完整分析」折叠块;口语层定形为「结论+2–3 要点+下一步」≤400 字。内容一字不删,只改默认可见性。⚠️ 会让 BUG-630 的走查路径失效(`guided_topic` 入口下线,枚举保留) | 待领取 | `codex/chat-reading-load-20260915` |
|
||||
| — | — | 初始化后点首页「家庭」报运行合同未完成:本命第一步未强制计算工具、主题卡无入口钉死 | 入口已下线,机制保留供历史会话 | `codex/consultation-family-contract-incomplete-20260909`(BUG-630);主题卡发出点已删,`guided_topic` 枚举仍可读回;走查 `docs/testing/consultation-family-contract-incomplete-20260909.md` 不再可执行 |
|
||||
| `TASK-chat-reading-load-20260915.md` | `PROGRESS-chat-reading-load-20260915.md` | 首页主题卡下线 + 回答两层可见性 + 折叠层宽表可横滑 + 输入框 16px。内容一字不删。⚠️ BUG-630 走查路径失效 | 待验收 | `codex/chat-reading-load-20260915` |
|
||||
| `TASK-mobile-touch-and-breakpoints-20260915.md` | — | 消息操作按钮触屏命中区 27×34、相邻仅隔 1px(BUG-695);CSS 平板上限 900px 与 `sidebarViewportForWidth` 的 1024 不一致,901–1023 是混合态(BUG-696);报告域 720/760/860 三个断点互不对齐,761–860 目录已塌、正文还是桌面(BUG-697)。含断点白名单契约测试。**串行在 chat-reading-load 之后** | 待领取 | `codex/mobile-touch-and-breakpoints-20260915` |
|
||||
|
||||
### 个人报告
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# 真机清单 · 聊天阅读负担(2026-09-15)
|
||||
|
||||
代码级合同在 `frontend/tests/chat-answer-*.test.ts`、`chat-reading-load-home.test.ts`、`chat-reading-load-mobile.test.ts`。下面这些必须用真机或浏览器开发者工具做,自动化替代不了。
|
||||
|
||||
地址:`https://staging.jyotisha.chat`。截图不要带真实姓名、出生资料或会话内容。
|
||||
|
||||
## A. 首页主题卡已下线
|
||||
|
||||
1. 登录后进入空首页。
|
||||
2. **看:** 只有问候语、今日星语卡、生时校正卡、底部输入框。没有「从一个主题开始」。
|
||||
3. 打开 Network,刷新。**看:** 没有 `POST /api/onboarding`。
|
||||
4. 用一个没有可用出生分钟的账号再走一遍 A.2。
|
||||
|
||||
## B. 回答两层可见性
|
||||
|
||||
1. 问一句本命类问题(例如「我事业怎么样」),等回答写完。
|
||||
2. **看:** 默认只看到口语层(结论 + 短要点 + 下一步)。下面有一个收起的「完整分析」,副标带章节名。没有转圈、没有骨架、没有「正在加载」。
|
||||
3. 流式过程中。**看:** 「完整分析」保持收起,副标是「正在写…」,不展开。
|
||||
4. 点开「完整分析」。**看:** 章节顺序是统一参数 → 领域 → 技法审计表 → 现代生活,和复制出来的原文一致。
|
||||
5. 点复制。**看:** 剪贴板是全文(含骨架),不是只有口语层。
|
||||
6. 刷新页面再打开这条历史。**看:** 「完整分析」仍是收起的。
|
||||
7. 发一句闲聊(无标题)。**看:** 没有折叠块,渲染与改动前一致。
|
||||
|
||||
## C. 375px 下的宽表(真机或开发者工具)
|
||||
|
||||
视口宽度 375px。展开一条本命回答的「完整分析」。
|
||||
|
||||
1. **三列技法审计表:** 仍是卡片式(技法名 + 状态在第一行,说明在第二行),不是横滑。
|
||||
2. **四列 Yoga 表 / 统一参数宽表:** 可以横向滑动,单元格不被压成竖排单字,也不把页面撑出横向滚动条。
|
||||
3. 右缘有渐隐,提示右边还有内容。
|
||||
4. 页面本身(`.conversation` 外)**没有**横向滚动条。
|
||||
|
||||
模拟器可以看横滑和页面是否溢出。渐隐在深色主题下也看一眼。
|
||||
|
||||
## D. 输入框 16px / iOS 聚焦放大(必须真机)
|
||||
|
||||
模拟器不一定复现 iOS Safari 的聚焦放大。设备:iPhone Safari。
|
||||
|
||||
1. `/login` 点邮箱输入框。**看:** 页面有没有突然放大。
|
||||
2. 验证码框(`.otp-input`)聚焦。**看:** 仍是大号等宽数字,页面不放大。
|
||||
3. 新账号走姓名 → 出生日期 → 出生时间 → 出生地搜索。每一个聚焦时看页面是否放大。
|
||||
4. 设置弹窗里的字段再点一遍。
|
||||
5. 375px 与桌面宽度下,上述表单有没有换行崩坏或溢出。
|
||||
6. 聊天输入框(已是 16px)聚焦时确认行为没变坏。
|
||||
|
||||
iOS 放大测不了就在本页结论里写「未测」,不要写成通过。
|
||||
|
||||
键盘是否挡住输入框见 `docs/testing/ios-keyboard-composer-20260915.md`,不在本单验收范围。
|
||||
|
||||
## 结论
|
||||
|
||||
> 待填。测完写日期 + 设备 + 浏览器 + 逐条正常/有问题。
|
||||
Reference in New Issue
Block a user