fix(rectification): offer times under the agent bubble
Independent Staging Quality Gate / validate (push) Successful in 11m52s
Independent Staging Quality Gate / publish (push) Successful in 10m10s

Keep the natal house table as a live snapshot outside chat, and show candidate times only after selection is allowed, attached to the latest settled reply.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-19 22:13:48 +08:00
co-authored by Cursor
parent 053e63effa
commit 4d872c68b2
5 changed files with 184 additions and 63 deletions
+36 -4
View File
@@ -4660,9 +4660,41 @@
- 用户现象:Agent 正文和赞踩操作栏缩在头像右侧,本命宫位标题和表格贴着对话左缘,和头像齐平。
- 触发条件:校正对话出现本命宫位表。
- 根因:宫位表是 `.message-list` 里消息行的兄弟节点,不走 `.message-assistant` 的头像 + `gap` 列,也没有补上同一条起始线。
- 修复:`.message-list` 定义 `--assistant-content-inset: calc(32px + var(--space-3))`,宫位表用 `padding-inline-start`,候选卡和已采用说明用同一 inset 的 `margin-inline-start`
- 验证:`frontend/tests/rectification-agentic-entry.test.ts` 锁定 inset 等于头像宽加 assistant gap
- 防复发:宫位表和后续结果块不得再与头像左缘齐平;起始线必须来自头像尺寸加 `.message-assistant` 的 gap,不能另写一个魔法像素
- 相关记录:BUG-307
- 修复:当时用 `--assistant-content-inset` 把头像宽加 gap 补到表上,让它先和正文齐。后续在 BUG-311 改成快照卡片,不再用消息缩进冒充气泡
- 验证:`frontend/tests/rectification-agentic-entry.test.ts` 锁定 inset;现由 BUG-311 的快照卡片合同接替
- 防复发:宫位表不是聊天气泡。不要再把它缩进成 Agent 正文;结果块要用独立卡片表面
- 相关记录:BUG-307、BUG-311
- 复发自:BUG-307(表作为消息兄弟落地,未接入 assistant 列)
- 修复版本:`053e63ef`
## BUG-311 | 生时纠正宫位表被当成聊天正文,而不是随线索更新的当前盘面
- 状态:resolved
- 首次发现:2026-08-19
- 最近更新:2026-08-19
- 影响面:生时纠正对话的宫位表
- 用户现象:本命宫位出现在最后一条 Agent 回答下面,看起来像那条回复的一部分;补充经历后表格其实会整表替换,界面没有把这一点说清楚。
- 触发条件:校正已经有 Candidate Snapshot,对话里同时出现 Agent 正文和宫位表。
- 根因:表来自 Case 快照、挂在消息列表末尾,却按聊天气泡的起始线排版,标题也只说“本命宫位”。
- 修复:宫位表单独放在消息列表后的 `rectification-snapshot`,表面与结果卡同类。标题改为“当前本命宫位”,并写明补充经历后会按新线索重算。时间选择卡不再进这个快照,见 BUG-312。
- 验证:`frontend/tests/rectification-agentic-entry.test.ts` 锁定快照容器在 `ChatMessageRow` 之外、不含候选卡、`aria-live`、重算文案,以及成功回合后 `loadCandidate`
- 防复发:宫位表必须在消息气泡外;文案必须说明随新线索重算。不得再用 `--assistant-content-inset` 把它扮成 Agent 正文。
- 相关记录:BUG-307、BUG-310、BUG-312
- 复发自:BUG-310(对齐 Agent 正文后更像一条聊天)
- 修复版本:待提交
## BUG-312 | 生时纠正时间选择卡在线索未齐时直接出现,且不在 Agent 气泡下方
- 状态:resolved
- 首次发现:2026-08-19
- 最近更新:2026-08-19
- 影响面:生时纠正对话的候选时间卡、`selectionAllowed`、Case 快照
- 用户现象:当前可能的出生时间作为独立盘面模块直接出现;没有等线索齐到可以给出代表性时间,也不挂在刚说完的 Agent 气泡下面。
- 触发条件:Case 已有快照或宫位表;引擎尚未 `selection_allowed`,或 Agent 回合仍在生成。
- 根因:候选卡和宫位表被捆在同一块始终可见的 `rectification-snapshot` 里。宫位表应当随线索更新;时间选择是“可以给出代表性时间”之后的采用动作,应对齐当轮 Agent 回复。
- 修复:候选卡只在 `selectionAllowed`、存在最近一条已落地且未失败的 Agent 正文、且当前不 busy/不重跑时,画在该条气泡和操作栏下方。生成中隐藏,避免挂在上一条气泡下。`--assistant-content-inset` 只用于这块卡片,不用于宫位表。
- 验证:`frontend/tests/rectification-agentic-entry.test.ts` 锁定候选卡在消息循环内、操作栏之后、快照容器之外,以及 `selectionAllowed` / `latestOfferMessageKey` / `!busy` 门。
- 防复发:时间选择卡不得进 `rectification-snapshot`;不得在 `selectionAllowed` 之前或回合生成中显示。宫位表仍是消息外的 live 快照。
- 相关记录:BUG-120、BUG-179、BUG-304、BUG-311
- 复发自:BUG-120(过早出示采用卡);BUG-311(与宫位表捆成始终可见模块)
- 修复版本:待提交