Files
Jyotisha/docs/tasks/PROGRESS-consult-conversational-answer-20261006.md
T
Jesse_ChenandClaude Opus 5.5 da226db1d4
Independent Staging Quality Gate / validate (push) Failing after 18m5s
Independent Staging Quality Gate / publish (push) Skipped
fix(consult): blank-line paragraphs, drop the H2 contract line, remove the assistant avatar
Acceptance fix for 28113fa0 (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 baseline 86cafe68 minus 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
2026-10-06 15:58:40 +08:00

100 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 步。