fix(consult): plain wrapping for answer prose; stop reading the analysis checklist aloud
BUG-1252: answer prose drops text-wrap: pretty. WebKit (every iPhone browser)
applies it to the whole paragraph, so lines came out evenly short with a blank
strip on the right and every streamed character re-broke the lines above.
BUG-1253: the condensed checklists and shared reading open with an
analysis-only note; PLAIN_SPEECH_RULE (one definition) tells the writer not to
quote layer names, signal counts, rules or house-counting, caps evidence in
brackets at two, and gives everyday words for card fields with no Chinese name
(no coined names like 合力星). Marriage layers become everyday wording; career,
wealth and health say not to announce layers.
Full suite 4966 / fail 24, identical to baseline d2c22ca2 (4962 / 24); build
keeps / Static; first-load gzip unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d2c22ca206
commit
171a3f25ac
@@ -16749,3 +16749,32 @@
|
||||
- 相关记录:BUG-1165、BUG-1168、BUG-1182(示范被照抄的前几轮)、BUG-1244。
|
||||
- 复发自:BUG-1165 的「示范被当成规则照抄」。旧测试锁的是读法和职业形态,没有锁行动句,所以这次换了一类句子仍能抄出去。
|
||||
- 修复版本:staging `e62d0a32`(含 `da226db1`;2026-10-06 部署核对:health gitCommit=e62d0a32,`/api/account` 401,`/login` 200;`da226db1` 自身门禁 run 1742 测试步失败,日志需 token 未读到,后续 run 1743 同代码通过)。真机清单未走,状态保持 fixed-pending-verify
|
||||
|
||||
## BUG-1252 | iPhone 上回答右侧一条空白,输出时正文抖动
|
||||
|
||||
- 状态:fixed-pending-verify(分支 `codex/consult-readable-20261006`;真机确认前不标 resolved)
|
||||
- 首次发现 / 最近更新:2026-10-06 / 2026-10-06
|
||||
- 来源:产品 iPhone 真机截图(staging,普通对话婚恋题)。
|
||||
- 影响面:所有对话里的助手回答正文(普通咨询、生时校正旁白);首次引导气泡另有规则,未动。
|
||||
- 现象:每行在约 19–20 个汉字处断开、连词也拆开,右侧留出固定空白;流式输出时已显示的行跟着换行位置变化,看起来在跳。
|
||||
- 触发条件:iOS 上任何浏览器(均为 WebKit),回答段落较长时更明显(10-06 改为大段落后加重)。
|
||||
- 根因:`globals.css` 的 `.message p, .message-markdown` 带 `text-wrap: pretty`(2026-07 起)。WebKit 对整段做优化,把各行调成接近等长,代价是每行短于可用宽度;每追加一个字就重算整段折行。Chrome 只调最后几行,所以桌面不明显。用本机 Chrome 按手机宽度渲染真实样式确认容器占满整行(排除宽度上限);WebKit 测试浏览器缺系统库未能起,未在 WebKit 内亲眼复现。
|
||||
- 修复:答案正文去掉 `text-wrap: pretty` 与 `word-break: auto-phrase`(后者 WebKit 不支持),普通折行。
|
||||
- 验证:`tests/consult-plain-speech-20261006.test.ts` 锁定该规则不含 `text-wrap`,且其他回答正文选择器不再加回 `pretty`。全量 4966 项 fail 24,与基线 d2c22ca2(4962 / 24)逐条一致;build 后 `/` Static,首屏 gzip 567,175 → 567,175 B。
|
||||
- 防复发:同上测试;`frontend/DESIGN.md` 字体段写明答案正文例外。
|
||||
- 相关记录:BUG-1244(首轮改大段落,放大了此现象)。
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1253 | 情感等回答把内部分析清单原样念给用户,看不懂
|
||||
|
||||
- 状态:fixed-pending-verify(分支 `codex/consult-readable-20261006`;无模型凭据,真机复核前不标 resolved)
|
||||
- 首次发现 / 最近更新:2026-10-06 / 2026-10-06
|
||||
- 来源:同 BUG-1252 截图。
|
||||
- 影响面:普通咨询各领域回答的措辞;工具结果里的精简清单、通用读法;首轮与追问轮指令。不改证据卡、工具、打分。
|
||||
- 现象:「先说心动这一层」「再看成对居住的那一层」「宫主火星落在从它数起的第 6 位」「这条只说这颗星自己有劲,不说明事情就顺」「合力星」;括号里一次列四条信号。
|
||||
- 根因:①婚恋精简清单写「分三层说:①心动接触 ②关系成对 ③社会法律落地」,是给模型分步判断的,模型把层名当成说法;②通用读法的受冲条件「宫主落在从该宫数起的第 6、8、12 宫」、规则句「旺弱只说明这颗星自己有没有力气」被搬进正文;③证据卡字段 `yogakarakas` 只有英文名,名词规则又禁音译,模型自造「合力星」;④`AFFLICTION_RANGE_RULE` 要求「括号里写是哪几条」,与「每段最多一处括号、一两条依据」冲突,模型选了列全。清单比「人话自检」更具体,压过了它。
|
||||
- 修复:`consultation-thinking-plan.ts` 新增 `CHECKLIST_ANALYSIS_ONLY_NOTE`(清单开头一行:分析用,不写进回答)与 `PLAIN_SPEECH_RULE`(清单只用来想;括号最多两条;没有日常叫法的字段白话对照,不自造译名),进首轮、追问、ANSWER SHAPE 与英文形状摘要;婚恋三层改为「遇到喜欢的人、谈恋爱 / 定下来、长期在一起 / 结婚、领证」并写「不报层名和编号」,事业、财运、健康同样注明;受冲规则括号改为「只写最能说明问题的一两条,用白话,不列全」。
|
||||
- 验证:新增 `consult-plain-speech-20261006.test.ts` 4 条;改断言 4 处(三栏写在测试里)。无模型凭据,没有真跑新提示词,真机复核见 `docs/testing/consult-readable-20261006.md`。
|
||||
- 防复发:测试锁清单不含旧层名(心动接触 / 关系成对 / 社会法律落地 / 分三层说 / 压力窗 / 恢复窗)、每份清单以用途说明开头、白话对照与括号上限存在。
|
||||
- 相关记录:BUG-1148(名词只用中文;本次补上没有中文叫法时怎么说)、BUG-1244、BUG-1160~1163(通用读法与精简清单)。
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# PROGRESS:回答铺满一行、输出不抖、不念分析清单 — 2026-10-06
|
||||
|
||||
产品看真机截图后要求直接执行(无任务书,诊断见本记录与 BUG-1252 / BUG-1253)。基线 `origin/staging` `d2c22ca2`,分支 `codex/consult-readable-20261006`,Claude 实现并自验。
|
||||
|
||||
## 做了什么
|
||||
|
||||
| 项 | 改动 |
|
||||
| --- | --- |
|
||||
| BUG-1252 | `globals.css`:`.message p, .message-markdown` 去掉 `text-wrap: pretty`、`word-break: auto-phrase`。首次引导气泡的 `.onboarding-message .message-markdown p` 规则保留(短句、有词组保护逻辑,不在本次范围) |
|
||||
| BUG-1253 | `consultation-thinking-plan.ts` 新增 `CHECKLIST_ANALYSIS_ONLY_NOTE`、`PLAIN_SPEECH_RULE`,进首轮正文指令、追问指令、`product-voice.ts` ANSWER SHAPE 与英文形状摘要;`natalSpokenReportContract` 的 Never 加一条不复述清单;`AFFLICTION_RANGE_RULE` 括号改为一两条白话 |
|
||||
| BUG-1253 | `consultation-condensed-checklist.ts`:通用读法与每份领域清单开头一行用途说明;婚恋「冻结判定对象」与三层改生活说法;事业、财运、健康三层注明不报层名(健康「压力窗 / 恢复窗」改为「压力集中的时段 / 恢复得好的时段」) |
|
||||
|
||||
## 断言三栏
|
||||
|
||||
| 位置 | 原值 | 新值 | 原因 |
|
||||
| --- | --- | --- | --- |
|
||||
| `consult-affliction-reading-20261001` T1 | 通用读法以「1. 先看受冲」开头 | 先是用途说明一行,再「1. 先看受冲」 | BUG-1253 |
|
||||
| `consult-gender-card-20260927` | 清单行数 = 条数 | 条数 + 1 | 同上 |
|
||||
| `consult-condensed-checklist-20260927` | 婚恋必含「心动接触 / 关系成对 / 社会法律落地」 | 必含三件事的生活说法与「不报层名和编号」 | 同上 |
|
||||
| `consult-no-presupposition-20261001` | 受冲规则「括号里写是哪几条」 | 「括号里只写最能说明问题的一两条,用白话,不列全」 | 同上 |
|
||||
|
||||
## 验证(Linux + Node 22.14)
|
||||
|
||||
| 项 | 基线 d2c22ca2 | 本分支 |
|
||||
| --- | --- | --- |
|
||||
| `tsc --noEmit` | — | 0 错 |
|
||||
| `npm run lint` | — | 0 error / 126 warning |
|
||||
| `npm test` | 4962 项 / fail 24 | 4966 项 / fail 24,失败名单逐条一致(无 Docker 的数据库 / 部署类) |
|
||||
| `next build` | `/` ○ Static,首屏 gzip 567,175 B | `/` ○ Static,567,175 B |
|
||||
|
||||
## 环境缺口
|
||||
|
||||
- WebKit:本机 Playwright WebKit 缺 `libevent` 等系统库起不来,没有在 WebKit 内亲眼复现与复核;Chrome 按手机宽度渲染确认容器占满整行。真机清单第 1、2、7 步。
|
||||
- 模型:无模型凭据,新提示词没有真跑;真机清单第 3~6 步。
|
||||
@@ -426,3 +426,4 @@
|
||||
| `TASK-rectification-delivery-dup-adopt-20261006.md` | `PROGRESS-rectification-delivery-dup-adopt-20261006.md` | **校正交付一次两段回答 + 点「改用…盘解读」被拒 `adoption_not_allowed`**(10-06 真机):收尾补位按文字子串防重,遇采用旁白 Agent 改写版失效(BUG-1153 复发);accept/GET 调 `decideFromDossier` 不带出生日期,未成年探针复活致判定与出卡时相反(BUG-598/680 同族);卡片按钮不看公开 can_adopt、拒绝码直出英文。不放宽采用门,判定入参统一 + 结构防重 + 按钮判据 + 中文提示(BUG-1241~1243) | **已验收,待推 staging**(Claude 10-06:首版 `b977f482` 验收 T1/T3 过、T2 未过;修复单 F1 由 Claude 直接执行——防重改为「上一条包含交付句」,真实答题路径测试修前红修后绿;F2 疑似 BUG-1246 复核不成立已撤回、留守护测试。全量 npm 失败名与基线逐名相同、tsc 0、lint 0 error;PG17 重放未做,见 PROGRESS) | 分支 `codex/rectification-delivery-dup-adopt-20261006`;修复单 `TASK-rectification-delivery-dup-adopt-fix-20261006.md` |
|
||||
| `TASK-consult-conversational-answer-20261006.md` | `PROGRESS-consult-conversational-answer-20261006.md` | **普通对话首轮去汇报骨架,改成聊天**(10-06 产品反馈「像机器在汇报」):首轮取消全部 `##`(三个固定节 + 按对象标题,多人改分段落点名)、行动不强制(盘上有具体指向才顺口一句,问「怎么办」再展开)、首轮三到六段;示范删可抄的行动句(实测被逐字照抄);思考栏去「这周可以做什么」。推翻 10-01 D2 与 D8 首轮部分(BUG-1244~1245) | 已验收 | 28113fa0 验收未过 → 修复单 `TASK-consult-conversational-answer-fix-20261006.md` 由 Claude 直接执行(含去掉助手头像),复验通过后推 staging;真机清单 10 步待产品 |
|
||||
| `TASK-rectification-in-chat-step1-20261006.md` | `PROGRESS-rectification-in-chat-step1-20261006.md` | **生时校正并入聊天 · 第一步**:删首页「生时校正」按钮与文字口令;普通对话里用户说不准时由 agent 分清读法 / 时间问题,时间问题出提议卡(本人、开关、价格服务端校验,同会话最多主动提一次);点卡带来源打开校正;采用 / 未采用 / 手动返回都回到原对话,分隔线 + 旧回答标「按校正前的时间」+ 点了才发的「按新时间重新看」;模型历史标注旧时间。须等 dup-adopt 单合入后开工;第二步(卡片嵌进同一对话)另立单(BUG-1247~1251) | 待领取 | — |
|
||||
| —(直接执行,无任务书) | `PROGRESS-consult-readable-20261006.md` | **回答铺满一行、输出不抖、不念分析清单**(10-06 真机截图):答案正文去 `text-wrap: pretty`(WebKit 整段等长 + 逐字重排,BUG-1252);清单开头写明只用于分析、婚恋三层改生活说法、字段白话对照、括号最多两条(BUG-1253) | 已验收 | Claude 直接执行;真机清单 `docs/testing/consult-readable-20261006.md` 待产品 |
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# 真机清单 · 回答铺满一行、输出不抖、不念分析清单(2026-10-06)
|
||||
|
||||
对应 BUG-1252、BUG-1253。在 staging 上用 iPhone 走(任意浏览器都行),deepseek-v4-flash 走一遍,再换一个模型走一遍。回答原文不记进仓库。
|
||||
|
||||
| 步 | 怎么做 | 通过标准 |
|
||||
| --- | --- | --- |
|
||||
| 1 | 新开对话问「我和我的伴侣能走下去吗」,看回答 | 每行基本写到右边,右侧没有一条固定空白 |
|
||||
| 2 | 第 1 步回答生成时盯着已出现的几行 | 前面已经显示的字不跳动,新字只往后接 |
|
||||
| 3 | 读第 1 步的回答 | 没有「心动这一层」「成对」「落地」这类层名;没有「从它数起第几宫/第几位」;没有「合力星」或其他自造名词;没有「这条只说明……不说明……」这类讲规则的话 |
|
||||
| 4 | 看括号 | 每个括号最多两条依据,读得懂大意 |
|
||||
| 5 | 新开对话问「我今年财运怎么样」「我的事业接下来怎么走」 | 同第 3、4 步 |
|
||||
| 6 | 问「我身体怎么样」 | 没有「压力窗」「恢复窗」这类词 |
|
||||
| 7 | 桌面浏览器再看一次第 1 步 | 排版正常,没有变挤或变稀 |
|
||||
Reference in New Issue
Block a user