Acceptance fix for28113fa0(TASK-consult-conversational-answer-fix-20261006): - F1: chat-answer-detail no longer pins 'Every H2 must start its own line' (first turns carry no H2), assertion change noted in three columns. - F2: Good examples separate paragraphs with a blank line and the shape says so; .message p is pre-wrap, so a single newline only wraps. - Product request: remove the assistant avatar on every surface (consult, rectification, onboarding); --assistant-content-inset back to 0px. Full suite 4941 / fail 24, identical to baseline86cafe68minus a timing flake; build keeps / Static; first-load gzip -0.1%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
100 lines
9.7 KiB
Markdown
100 lines
9.7 KiB
Markdown
# PROGRESS:普通对话首轮改成聊天 — 2026-10-06
|
||
|
||
基线:`origin/staging` `86cafe68`(任务书,只有文档)。形状文件上一次产品提交仍是 `7806c72f` / `6a02e5e9`,没有更新的提交,没有变基。分支 `codex/consult-conversational-answer-20261006`,工作树 `.worktrees/consult-conversational-answer-20261006`。
|
||
|
||
未推 staging,未部署。BUG-1244、BUG-1245 状态是 `fixed-pending-verify`。Skill 版本不变。
|
||
|
||
## 做了什么
|
||
|
||
1. 首轮形状只留在 `frontend/src/lib/consultation-thinking-plan.ts`。`product-voice.ts`、`skill-binding.ts`、`index.ts`、`route.ts` 引用它,不再各写一套标题。首轮不写二级标题;问到几个人就分段落、段首点名;行动不强制;通常三到六段,不设硬截断。追问仍讲清楚为准。换领域或要求完整看时,回到同样的段落形状(BUG-1244)。
|
||
2. Good 示范改成段落。删掉三句会被照抄的行动(书面确认、这周去看小毛病、给妈妈打电话先问近况),也删掉「## 这周」。另加一条只示意结构的汇报体 Bad(BUG-1245)。
|
||
3. 思考计划去掉「这周可以做什么」。正文没有二级标题时,流式中没有任何一节停在进行中,结算后一起完成。写作行是「组织回答」/「正在组织回答…」。历史消息里的旧标题仍能拆开。
|
||
4. 文案:`frontend/docs/VOICE.md` 第七条、首轮只说一遍、对照表;`frontend/DESIGN.md` 写作行。真机清单 `docs/testing/consult-conversational-answer-20261006.md`。
|
||
|
||
## 提示词里还留下的旧标题(允许的兼容命中)
|
||
|
||
`git grep -n "这周可以做的一件事" frontend/src` 只剩:
|
||
|
||
- `frontend/src/lib/consultation-thinking-plan.ts:20`:`REPORT_HEADING.action`。给旧回答拆段、缩短标题用,不拼进新提示词。
|
||
|
||
`git grep -n "骨架不可省略" frontend/src`:无。
|
||
|
||
`git grep -n "REPORT_HEADING" frontend/src` 都在 `consultation-thinking-plan.ts`,没有出现在模板字符串里:
|
||
|
||
| 行 | 用途 |
|
||
| --- | --- |
|
||
| 17–21 | 常量。注释写明只给 2026-10-06 之前的回答用 |
|
||
| 95–97 | `consultationReportHeadings()` 返回这三个字符串,给旧回答对标题 |
|
||
| 140、152 | 思考节 `heading` 字段(schema 必填),值是「盘上依据」。无标题的新回答不靠它推进进度 |
|
||
| 160 | 时间节的 `heading` 字段,值是「时间怎么看」 |
|
||
|
||
`frontend/src` 的 `*.ts` / `*.tsx` 里没有 `## 盘上依据`、`## 时间怎么看`、`## 这周可以做的一件事`。仓库根 `SKILL.md` 里也没有这三句。历史文档、旧任务书、旧真机记录里的标题没有改。
|
||
|
||
## 断言三栏(本单改过的)
|
||
|
||
| 位置 | 原值 | 新值 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| 思考计划节 | 四节,含「这周可以做什么」 | 三节:question / support / timing | T3,BUG-1244 |
|
||
| 无标题时的进度 | 口语开场还没有标题时首节 active | 整篇没有二级标题时没有 active;结算后全部 done | 首轮不再写标题,避免一直转圈 |
|
||
| 时间节出现后的状态 | done, done, done, active | done, done, done | 行动节已删,时间节是最后一节 |
|
||
| 续写 | 要求补三个固定二级标题 | 认出最后一个已有标题,接着用段落写,不再点名三个节名 | D1 |
|
||
| 本命列表 | 并列点必须是 Markdown 列表 | 默认段落;用户要求列举,或三个以上时间窗,才用列表。每日星语仍用列表 | D5 |
|
||
| 首轮指令 | 要求 `## 盘上依据` 等三个标题 | 不要求任何 `##` 节名;含段首点名、行动不强制、三到六段 | D1–D3 |
|
||
| 口吻合同 | 「骨架不可省略」、不设字数上限 | 通常三到六段、不设硬截断;合同里没有「骨架不可省略」 | D1/D3 |
|
||
| 技能骨架句 | Level 2 模板就是回答形状;行动出现一次 | Level 2 只是依据来源;六步宫位和 Yoga 表不贴在标题下 | D1/D2/D6 |
|
||
| 长度句 | There is no length cap | usually three to six paragraphs;There is no hard cutoff | D3,只约束首轮 |
|
||
| 行动句 | 一到三条破折号,只在最后一节 | 行动不强制 | D2 |
|
||
| 父母 / 事业示范 | 带 `##` 和行动清单 | 段落、段首点名、括号只放依据占位 | D1/D4,BUG-1245 |
|
||
| 寒暄合同 | opener-plus-skeleton | paragraph shape | D1。测试名保留 |
|
||
| 写作提示(两份路由测试) | 提示里含三个固定 `##` 标题 | 含段首点名、行动不强制、三到六段,且不含 `##` + 旧节名 | D1–D3。夹具正文仍带旧标题,只测续写和放出 |
|
||
|
||
测试名没有删。新增两条:无标题首轮的思考节与写作行(BUG-1244);示范不含可抄行动和「## 这周」(BUG-1245)。
|
||
|
||
## 验证
|
||
|
||
| 项 | 结果 |
|
||
| --- | --- |
|
||
| `tsc --noEmit` | 0 错 |
|
||
| `npm run lint` | 0 error,126 warning。本单改过的文件里,只有 `consultation-thinking-plan.ts` 的 `_domains` 未使用,这是原来的参数。没有为清 warning 改业务代码 |
|
||
| 定向测试 | `consultation-thinking-plan`、`consultation-voice-contract`、`consultation-smalltalk`、`consultation-run-timeline`、`consult-career-yoga-functional-20261002`、`consult-no-presupposition-20261001`:79 项,79 通过,0 失败,0 cancelled |
|
||
| `npm test` | 4851 项,4706 通过,145 失败,0 cancelled,0 skipped。退出码 1 |
|
||
| 隐私标记 | `tests/test_repo_privacy_markers.py` 通过。进度和 Bug 历史没有写入具体出生资料 |
|
||
| `next build --webpack` | 编译成功(2.9 分钟),TypeScript 检查通过。收集页面数据时在 `/api/birth-time-guide` 失败:现场技能符号链接 EPERM。没有打出路由表,因此没有 `/` 是否 Static、也没有首屏 gzip。这是本机工作树的已知环境缺口,不是这轮文案改动的编译错误 |
|
||
|
||
145 条失败里,和本单相关的文件是整文件加载失败,不是新断言没对上:`consult-answer-the-question-20260927.test.ts`、`consult-single-pass-answer-20260927.test.ts` 在导入 `skill-binding` 时抛 `SkillPackageRegistryError`,Windows 不允许为现场技能创建符号链接(EPERM)。同一原因还打红了 `consultation-workflow-request`、`consult-condensed-checklist`、`consult-evidence-lookup`、`consult-gender-card`、`skill-binding.test.ts` 等。本机工作树里的 `skills/jyotish-vedic-astrology/SKILL.md` 是 14 字节的链接文本(`../../SKILL.md`),不是真正的符号链接,所以「方法来自现场技能树」那一组也会空。数据库、备份、部署脚本失败是这台机器上原有的 Docker / 环境缺口。本轮没有在干净的 `86cafe68` 上再跑一遍全量做逐条对照。
|
||
|
||
写作提示那两条断言没有在测试进程里跑到。静态核对:`frontend/src` 和仓库根 `SKILL.md` 都不含 `## 盘上依据`、`## 时间怎么看`、`## 这周可以做的一件事`。
|
||
|
||
## T5 长度与离线
|
||
|
||
没有模型凭据,四道题(父母、事业、财运、伴侣)没有真跑,不把估计写成实测。新形状要求首轮通常三到六段,不设硬截断。相对旧的约 1,500 字、同一判断说三遍的父母样本,新指令去掉了固定节和行动清单。真机八步在 `docs/testing/consult-conversational-answer-20261006.md`。浏览器登录验收没有做。
|
||
|
||
## 构建
|
||
|
||
`npx next build --webpack`(Next.js 16.3.1):webpack 编译成功,接着的 TypeScript 检查也通过。收集页面数据时失败,原因与测试里的技能链接相同:`SkillPackageRegistryError`,无法为 `skills/jyotish-vedic-astrology/SKILL.md` 创建符号链接(EPERM)。路由表没有打出来。`/` 是否仍为 Static、首屏 gzip 相对基线的变化,本机没有数。没有改用 Turbopack:工作树的 `node_modules` 是联接,Turbopack 会直接拒绝。
|
||
|
||
## 验收修复(Claude 直接执行,2026-10-06)
|
||
|
||
产品要求直接修复,并顺带去掉助手回答旁的头像。修复单 `TASK-consult-conversational-answer-fix-20261006.md`。
|
||
|
||
漏掉的原因:执行方在 Windows 上全量测试有 145 条因技能符号链接 EPERM 整文件加载失败,`chat-answer-detail.test.ts` 混在里面,进度记录也没有和基线逐条比对。
|
||
|
||
| 项 | 做了什么 |
|
||
| --- | --- |
|
||
| F1 | `chat-answer-detail.test.ts`:原值要求 `Every H2 must start its own line` / 新值不再要求 / 原因 首轮不写 ## |
|
||
| F2 | 父母题、事业题 Good 示范段落之间空一行;`NATAL_ANSWER_SHAPE_SUMMARY`、`natalAnswerShapeBody()`、`ANSWER SHAPE` 写明段落之间空一行(单换行在界面上不分段)。英文摘要里「One person or one matter stays one stretch of prose」改成「is not split by person」,避免单对象题被读成只写一段。新增合同测试一条 |
|
||
| 头像 | 删 `AgentAvatar`(对话、生时校正、首次引导三处)与 `.agent-avatar` 样式;`--assistant-content-inset` 两处回到 `0px`,`.message-assistant` 的 gap 删掉。推翻 09-16 `071317f7`「加回头像」。两条既有断言改三栏:`rectification-timeline-20260909.test.ts`、`rectification-agentic-entry.test.ts`(原值 `calc(32px + var(--space-3))` / 新值 `0px` / 原因 产品 10-06 要求去头像)。新增「助手消息没有头像」测试一条 |
|
||
|
||
验证(Linux + Node 22.14,干净 `npm ci`):
|
||
|
||
| 项 | 基线 86cafe68 | 修复后 |
|
||
| --- | --- | --- |
|
||
| `tsc --noEmit` | — | 0 错 |
|
||
| `npm run lint` | — | 0 error / 126 warning |
|
||
| `npm test` | 4936 项 / fail 25 | 4941 项 / fail 24,名单与基线逐条一致(基线多出的 70 s 计时测试是并发抖动,单跑 3/3 通过) |
|
||
| `next build` | `/` ○ Static | `/` ○ Static |
|
||
| 首屏 gzip | 567,642 B | 567,007 B(-0.1%) |
|
||
|
||
环境缺口:无模型凭据,没有真跑新提示词;无浏览器,去头像后的版面没有截图核对,列入真机清单第 9、10 步。
|
||
|