fix(chat): keep rectification sessions findable and keep the delivery card
Rectification answers now advance chat_sessions.updated_at (BUG-704). A ?c= id missing from the loaded page is fetched before anyone may call it deleted (BUG-705). The range card no longer has a post-card tie-break button; live questions leave the card visible with adopt locked (BUG-706/708). Spoken copy bans 相对支持度 (BUG-709). Task docs assigned 700-704; qizheng already took 700-703.
This commit is contained in:
+85
-5
@@ -8560,8 +8560,8 @@
|
||||
- 根因:`visibleSessions` 只按 `pinned` 排,开着页面时 `updatedAt` 变化不改位置。元数据 PATCH 和服务端 `metadataUpdateValues` 一律写 `updated_at = now()`,非对话操作也会把会话顶到列表头。真正该 bump 的是发问 / 回答落库。
|
||||
- 修复:`sortSessions` 置顶优先、组内 `updatedAt` 倒序且稳定。元数据 PATCH 不再写 `updated_at`;客户端改名 / 收藏 / 归档 / 换模型 / 换资料不再 `timestamp()`。列表改为游标分页,历史按本地日期分组,侧栏标题去掉资料名前缀。
|
||||
- 验证:`frontend/tests/session-groups.test.ts`、`session-cursor.test.ts`、`chat-session-write.test.ts`(`metadataUpdateValues` 不含 `updated_at`)、`sidebar-state.test.ts`(改名不 bump `updatedAt`)、`sidebar-contract.test.ts`、`chart-library-session.test.ts`。
|
||||
- 防复发:元数据 PATCH 不得写 `updated_at`。`updatedAt` 只由对话活动推进。侧栏历史排序必须置顶 + `updatedAt` 倒序,不得只按置顶。打开已有会话不得改 `title` / `updatedAt`,由 BUG-699 与 `frontend/tests/session-open-preserves-identity.test.ts` 执行。
|
||||
- 相关记录:BUG-024、BUG-699
|
||||
- 防复发:元数据 PATCH 不得写 `updated_at`。`updatedAt` 只由对话活动推进,校正答题也算(BUG-704)。侧栏历史排序必须置顶 + `updatedAt` 倒序,不得只按置顶。打开已有会话不得改 `title` / `updatedAt`,由 BUG-699 与 `frontend/tests/session-open-preserves-identity.test.ts` 执行。`?c=` 不在已加载页时先问服务端(BUG-705)。
|
||||
- 相关记录:BUG-024、BUG-699、BUG-704、BUG-705
|
||||
- 复发自:无
|
||||
- 修复版本:`a1956deb`
|
||||
|
||||
@@ -10689,8 +10689,8 @@
|
||||
- 根因:性格题被设计成出卡后的可选入口。另:`varga_style` 被错误要求该领域账本有带年月事件作锚,答「没有」会连带关掉风格题。
|
||||
- 修复:产品拍板放宽版 A(2026-09-14)。出卡前只要参考题可用且没用过就先连问最多两道 `varga_style`(不看分差;仍只 ±1、不淘汰)。删除风格题的事件锚点丢弃;分盘上升星座少于两种时该题仍不出现。仍平时卡上写「这两分钟按现有信息分不开,参考题已经用过。」用过之后不再显示入口按钮。
|
||||
- 验证:`frontend/tests/rectification-tiebreak-before-card-20260914.test.ts`:16/16 与 lead=2 都先问参考题;无事件锚点时风格题仍出现;两道用完才交付。
|
||||
- 防复发:不得把性格题改成淘汰候选。不得为凑满两道而放宽「该分盘至少两种上升星座」。自动进入参考题时不得再写第二条交付消息。
|
||||
- 相关记录:BUG-663、BUG-667、BUG-629、BUG-597
|
||||
- 防复发:不得把性格题改成淘汰候选。不得为凑满两道而放宽「该分盘至少两种上升星座」。自动进入参考题时不得再写第二条交付消息。卡上入口已于 BUG-706 删除,前置收集是唯一路径。
|
||||
- 相关记录:BUG-663、BUG-667、BUG-629、BUG-597、BUG-706、BUG-708
|
||||
- 复发自:BUG-663(入口做成出卡后可选)
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -10866,7 +10866,7 @@
|
||||
- 修复:已有会话的 `title` / `updatedAt` 继承 `existing`,只有新建才 `resolveSessionTitle` + `timestamp()`。错日期标题按 `created_at` 的 Asia/Shanghai 月日修回;对不上正则的手改标题不动。
|
||||
- 验证:`frontend/tests/session-open-preserves-identity.test.ts`、`rectification-session-title-repair.test.ts`。浏览器级验收见 `docs/testing/rectification-open-identity-20260915.md`。staging 标题修回行数见本单 PROGRESS。
|
||||
- 防复发:构造可能作用于已有会话的 `ChatSession` 时,不得无条件写 `updatedAt: timestamp()`。`resolveSessionTitle` 的 `at` 默认墙钟,只能用于新建。
|
||||
- 相关记录:BUG-553
|
||||
- 相关记录:BUG-553、BUG-704、BUG-705
|
||||
- 复发自:BUG-553
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -10934,6 +10934,54 @@
|
||||
- 复发自:无
|
||||
- 修复版本:未修(investigating)
|
||||
|
||||
## BUG-704 | 校正答题不推进 chat_sessions.updated_at,会话边用边下沉
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-15
|
||||
- 最近更新:2026-09-15
|
||||
- 影响面:`agentic_rectification_cases.last_activity_at`、`chat_sessions.updated_at`、侧栏历史排序
|
||||
- 用户现象:一条校正连着答几小时,侧栏位置仍停在创建那天。叠加上被改成今天的标题后,列表变成「名字是今天、排序是旧日期」。
|
||||
- 触发条件:在生时校正里写 turn、点选、采用或停止。打开、刷新、改名、收藏不触发。
|
||||
- 根因:复发自 BUG-553 的另一半。全仓只有咨询 RPC `append_consultation_question` 写 `chat_sessions.updated_at`。校正 turn 走 `append_agentic_rectification_turn` 等,只推 `agentic_rectification_cases.last_activity_at`,不碰会话表。`persistSession` 的 update 按 BUG-553 故意不写 `updated_at`。
|
||||
- 修复:`last_activity_at` 推进时触发器同步把对应校正会话的 `updated_at` 推到同一时刻,且不得回拨。历史冻结行按最后一条 turn / `last_activity_at` 回填。客户端 `persistSession` 仍不写 `updated_at`。
|
||||
- 验证:`frontend/tests/rectification-v9-migration.test.ts` 的 touch-session 迁移合同。浏览器级见 `docs/testing/rectification-open-identity-20260915.md`。staging 回填行数见本单 PROGRESS。
|
||||
- 防复发:校正对话活动必须推进 `chat_sessions.updated_at`。元数据 PATCH、打开、刷新不得推进。不得为了修这个让 `persistSession` 重新写 `updated_at`。
|
||||
- 相关记录:BUG-553、BUG-699、BUG-705
|
||||
- 复发自:BUG-553
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-705 | `?c=` 不在已加载页就被当成已删除
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-15
|
||||
- 最近更新:2026-09-15
|
||||
- 影响面:`resolveBootstrapSessionSelection`、`GET /api/sessions/{id}`、首页 bootstrap、popstate
|
||||
- 用户现象:刷新或从链接进入一条校正,提示「该对话不存在或已被删除」,地址栏 `?c=` 被清掉,侧栏也看不见。没有删除动作发生。
|
||||
- 触发条件:目标会话不在当前已加载的 40 条里(常见于 BUG-704 把它压到旧日期),URL 仍带着它的 id。
|
||||
- 根因:`listedIds` 只覆盖当前页。未命中就 `missing: true` 并 `replace-clear`。服务端单条 GET 存在却从未被问。
|
||||
- 修复:合法 UUID 未在已加载页时改为 `lookup`。`GET /api/sessions/{id}` 200 则并进列表并选中;404 才宣告删除并清 URL;5xx / 网络失败保留 `?c=`,提示「这条对话暂时读不到,请稍后重试。」
|
||||
- 验证:`frontend/tests/session-lookup-unlisted.test.ts`、`chat-session-url.test.ts`。
|
||||
- 防复发:不在已加载页不得等于已删除。`SESSION_MISSING_NOTICE` 只允许在服务端 404 之后出现。
|
||||
- 相关记录:BUG-553、BUG-699、BUG-704
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-706 | 点卡上「再答两道参考题」后交付卡整张消失
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-15
|
||||
- 最近更新:2026-09-15
|
||||
- 影响面:`applyLiveCandidateOffer`、`showSelectionCards`、区间交付卡
|
||||
- 用户现象:范围卡在场时点「再答两道参考题微调排序」,卡消失,只剩一句确认语和一道没有选项的题,上一轮「范围在上面」也对不上了。
|
||||
- 触发条件:交付卡上的参考题按钮;`requestTieBreak` 写入一道未答 `choice` / `collect_spoken`。
|
||||
- 根因:`applyLiveCandidateOffer` 和 `showSelectionCards` 只要有未答题就把每一条 `candidateOffer` 剥掉 / 整卡不画。守卫本意是有活题时不要同时诱导采用,但按钮就长在卡上,点一下必然丢卡。产品原意(BUG-686)是出卡前收集参考题,卡上这条路不该存在。
|
||||
- 修复:删除卡上入口。有活题时卡留下,「更像这个」置灰并写「先答完上面这道,再选时间」。前置收集仍走 `requestTieBreakPersonality`。
|
||||
- 验证:`frontend/tests/rectification-tiebreak-card-loss-20260915.test.ts`、`rectification-candidate-offer-anchor.test.ts`、`rectification-range-delivery-20260907.test.ts`。
|
||||
- 防复发:任何抑制交付卡的守卫都必须有出口。不得再在交付卡上放参考题按钮。新写 turn 仍须并进对话区(BUG-685)。
|
||||
- 相关记录:BUG-685、BUG-686、BUG-688
|
||||
- 复发自:BUG-686(卡上保留了第二条路)
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-707 | 星历页五要素按 Lahiri,星盘页按账户岁差(默认 Raman)
|
||||
|
||||
- 状态:investigating
|
||||
@@ -10949,3 +10997,35 @@
|
||||
- 相关记录:BUG-703
|
||||
- 复发自:无
|
||||
- 修复版本:未修
|
||||
|
||||
## BUG-708 | 参考题按钮能亮,点开却是没有选项的裸题
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-15
|
||||
- 最近更新:2026-09-15
|
||||
- 影响面:`tieBreakPersonalityAvailable`、`buildChoiceCard` / `canRenderYearlessChoice`、`interviewChoiceCardUnavailable`
|
||||
- 用户现象:点参考题后出现「亲密关系里,你更接近哪一种相处方式?」,没有 A/B/C/D。交付卡已被 BUG-706 抹掉,两条路都断。
|
||||
- 触发条件:`tieBreakPersonalityFollowup` 拿得到 followup,但 `styleOptions` 建不出或分盘上升星座少于两种。
|
||||
- 根因:复发自 BUG-686。按钮只看 followup 非空;卡片渲染另走 `completeStyleOptions` + `canRenderYearlessChoice`。两个判据不一致。也落在 BUG-674 / BUG-675 的裸题家族上。
|
||||
- 修复:followup 存在且同一套可渲染性判断通过,才算 available,才允许 persist。焦点已落库但没有 `choice_card` 时走既有 repair-exit,不画裸题。
|
||||
- 验证:`frontend/tests/rectification-tiebreak-card-loss-20260915.test.ts`。`rectification-tiebreak-before-card-20260914.test.ts` 既有断言未减弱。
|
||||
- 防复发:`tieBreakPersonalityAvailable` 必须复用 `vargaStyleFollowupRenderable`,不得再复制第三套条件。建不出选项的题不得提出,也不得渲染成裸题。
|
||||
- 相关记录:BUG-686、BUG-674、BUG-675、BUG-706
|
||||
- 复发自:BUG-686
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-709 | 交付旁白写「相对支持度」,并与卡上入口自相矛盾
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-15
|
||||
- 最近更新:2026-09-15
|
||||
- 影响面:采用/交付旁白、`MACHINE_VOICE_LEXICON`、`validateAdoptNarration`、`VOICE.md`
|
||||
- 用户现象:旁白写「没有年份的分盘题也不再问」「相对支持度都是 16」,同一屏卡上却摆着「再答两道参考题」。
|
||||
- 触发条件:走到区间交付;Agent 旁白引用了内部计分词。
|
||||
- 根因:采用旁白指令允许使用「相对支持度数字」。校验只拦未知数字,不拦禁用词。卡上仍保留参考题按钮,与「不再问」打脸。
|
||||
- 修复:禁用词表与校验都拦「相对支持度」。指令改为「这两个时间按现有信息分不开」。卡上入口删除后,「不再问」与控件不再打架。卡上「相对可能性 %」保持不变。
|
||||
- 验证:`frontend/tests/agent-voice-copy-contract.test.ts`、`rectification-tiebreak-card-loss-20260915.test.ts`。
|
||||
- 防复发:用户可见文案不得出现「相对支持度」。`MACHINE_VOICE_LEXICON` 与 `validateAdoptNarration` 双拦。
|
||||
- 相关记录:BUG-706、BUG-686
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
Reference in New Issue
Block a user