merge origin/staging into report chart render branch
Keep BUG-607 after 602–606 and retain both 09-09 changelog entries. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -9334,6 +9334,86 @@
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-602 | 时间轴宽度按差值算,卡片与报告按含两端算
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`rectification-timeline-scale.ts` 区间读数 `widthLabel`、`frontend/DESIGN.md` §10
|
||||
- 用户现象:同一屏上时间轴写的宽度比三列卡和验证报告少 1 分钟。例如区间 04:51–04:59 条上写「8 分钟」、卡上写「9 分钟」;05:07–05:09 条上写「2 分钟」;整天窗口写「23 小时 59 分」。
|
||||
- 触发条件:分钟阶段已有 `credible_range`,或时段阶段轴铺满整天窗口。必现。
|
||||
- 根因:`widthLabel` 用 `timelineDurationLabel(bandEnd - bandStart)`,少算两端都计入的那一分钟。BUG-593 已把交付报告与三列卡定为含两端分钟数;任务书示例「05:07–05:09 · 2 分钟」是差值口径,首版时间轴照抄了。
|
||||
- 修复:改为 `timelineDurationLabel(bandEnd - bandStart + 1)`。整天 00:00–23:59 显示「24 小时」,单分钟显示「1 分钟」。DESIGN.md §10 示例改为「05:07–05:09 · 3 分钟」。
|
||||
- 验证:`frontend/tests/rectification-timeline-20260909.test.ts`(含两端宽度表:04:51–04:59 → 9 分钟、05:07–05:09 → 3 分钟、04:51–04:53 → 3 分钟、单分钟 → 1 分钟、整天 → 24 小时);与 `frontend/tests/rectification-delivery-report-facts.test.ts` 的 `width_minutes === 3` 同一形状。
|
||||
- 防复发:时间轴读数必须与报告/卡片同一套含两端分钟数;禁止再把 `bandEnd - bandStart` 当宽度。
|
||||
- 相关记录:BUG-593
|
||||
- 复发自:无
|
||||
- 修复版本:`92e3d5e7`
|
||||
|
||||
## BUG-603 | 被排除的分钟到不了客户端,时间轴空心点画不出来
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`rectification-candidate-result.ts`、`rectification-timeline-scale.ts`、`rectification-agentic-chat.tsx` 的 `timelineView` 候选来源
|
||||
- 用户现象:DESIGN.md §10 写「被排除的点留在原地变空心、不消失」;真实会话里答完一题后那些分钟从条上消失,剩下的全是实心。看不到刚才那一答排掉了哪几分钟。
|
||||
- 触发条件:分钟阶段已有推断层、至少淘汰过一个候选。必现。
|
||||
- 根因:`inference-adapter.ts` 投影只保留 `status !== "eliminated"` 的候选;时间轴把 `candidateResult.candidates.map(time)` 当点,再按是否落在区间带内判 in/out。到达客户端的点都在带内,全是实心;被淘汰的分钟根本不在列表里。测试里的 `["out","in","in","in","out"]` 是合成输入,不是这条数据路径。
|
||||
- 修复:`RectificationCandidateResult` 增加只读 `inferenceMarks: [{time, eliminated}]`,从 `decisionReceipt.inference_state.candidates` 的 `time` / `status` 解析(组件不读原始 receipt)。`state = status === "eliminated" ? "out" : "in"`,不再按点是否落在带内判断。没有 `inference_state` 时退回引擎候选全部实心。
|
||||
- 验证:`frontend/tests/rectification-timeline-20260909.test.ts`:推断层 9 个候选、7 个 eliminated、可信区间 04:51–04:53 → 9 个点、7 空心 2 实心;再淘汰 1 个 → 8 空心 1 实心,key 不变。`frontend/tests/rectification-candidate-result.test.ts`:有 `inference_state` 时解析出全集,无则 `[]`。聊天源码合同:`timelineView` 读 `inferenceMarks`,不读 `decisionReceipt`。
|
||||
- 防复发:时间轴标记必须来自推断层候选全集;禁止再用引擎 active 投影或带内位置当 in/out。空心/实心只看 `status === "eliminated"`。
|
||||
- 相关记录:BUG-560、DESIGN.md §10
|
||||
- 复发自:无
|
||||
- 修复版本:`92e3d5e7`
|
||||
|
||||
## BUG-604 | 开场不讲做法、一次只收一件,同一批经历被拆成多轮计费
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`buildOpeningBrief`、`GENERIC_COLLECT_QUESTION`、`jyotish-birth-time-rectification@10.0.19` OpeningPolicy、口述开场正文
|
||||
- 用户现象:开场不说当前窗口和最后会给什么,也不点出可以讲哪些方面;题干只请人说一件,一条消息里的多件经历被拆成多轮,每轮都要重算。
|
||||
- 触发条件:新建生时校正、进入开场采集。
|
||||
- 根因:opening brief 和 Skill OpeningPolicy 禁止领域清单、禁止一次说完;题干带年份例子。产品决定推翻该口径:列领域不列年份,一条消息可以报多件。
|
||||
- 修复:brief 写入当前搜索窗口与 intake 来源、做法三句要点、六类领域。开场正文不合格时服务端换成模板。首题仍是 `collect:other:*`,题干改为「先说你最容易想起的一两件,年月大概就行」。批量写入路径仍是 `rectification-record-evidence-batch`。Skill 10.0.19。只报一件走既有逐领域采集,不插入「还有吗」追问轮。
|
||||
- 验证:`frontend/tests/rectification-v9-agent.test.ts`(opening brief、落库正文替换)、`frontend/tests/agent-voice-copy-contract.test.ts`(开场模板与六类)、`frontend/tests/rectification-spoken-collect.test.ts`(三件已确认领域不再被逐个追问;单事件开场下一问为逐领域采集且正文不含「还有吗 / 别的吗」)、`frontend/tests/rectification-server-focus.test.ts`(GENERIC 题干)。
|
||||
- 防复发:开场落库正文必须 ≤4 句、至少五类领域、不含四位年份。不得要求先准备材料。不得把具体年份写进开场。不得因只报一件就插入追问轮或重复开场邀请。
|
||||
- 相关记录:BUG-488、BUG-558
|
||||
- 复发自:无
|
||||
- 修复版本:`aa7ccb30`、`1453fb16`
|
||||
|
||||
## BUG-605 | 口述采集只能打字「没有」,没有「记不清」,也不知道可以跳过
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`rectification-agentic-chat.tsx` composer-wrap、`applyCollectFocusDenial`、`isCollectSkipUtterance`、采集回执文案
|
||||
- 用户现象:采集题只有输入框。想说这方面没有或这题记不清时,不知道可以跳过;打字「没有」才能走拒答。
|
||||
- 触发条件:`collect_spoken` 焦点激活且未 busy。
|
||||
- 根因:BUG-595 删掉输入框上方「先这样」后没有替代采集快捷回答。产品不要示例骨架条,只要「没有 / 记不清」。
|
||||
- 修复:composer-wrap 内两个 44px 次要按钮,类名 `rectification-collect-reply`,不复用 `rectification-step-state`。「没有」与打字「没有」同一 POST,走 declined,回执「记下了,这方面先跳过。」「记不清」走 skipped,回执「记下了,这题先放着。」精确这两句不调模型。skipped 领域本会话不再采集;采用后核对仍可碰到 skipped,不碰 declined。
|
||||
- 验证:`frontend/tests/rectification-spoken-collect.test.ts`(按钮只在 collect_spoken、精确「没有 / 记不清」短路分类器、skipped 不再采集、reverse-verify 仍可碰)。
|
||||
- 防复发:采集快捷回答不得画成「先这样」,不得用 `rectification-step-state`。不得在回答条预填年份。
|
||||
- 相关记录:BUG-546
|
||||
- 复发自:无
|
||||
- 修复版本:`aa7ccb30`
|
||||
|
||||
## BUG-606 | 每轮气泡太长:方法句、领先落后、价值评价叠在正文里
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-09
|
||||
- 最近更新:2026-09-09
|
||||
- 影响面:`chat-message-content.tsx`、`consultation-run-timeline.tsx`、`composeChoiceNarration`、`trimEvidenceTurnBody`、`agent-run` 开场/证据守卫
|
||||
- 用户现象:助手气泡里除了记下经历,还写「本轮对照了…」、点选后「这段领先那段落后」,以及「对校正特别有用」之类评价。
|
||||
- 触发条件:证据轮或点选题答完后看助手正文。
|
||||
- 根因:方法句渲在气泡;旁白拼接 `explainScoreMovement`;证据轮只靠提示词,模型仍写三句加评价。
|
||||
- 修复:气泡不再渲染 `vargaSentence`,展开的活动时间线保留。点选旁白只有「已记录,范围没变。」或「已记录,范围收到 / 变为 A–B。」证据轮超过两句只留首句,并去掉「很有帮助 / 很有价值 / 很有分量 / 特别有用」。
|
||||
- 验证:`frontend/tests/rectification-varga-style-copy.test.ts`、`frontend/tests/rectification-answer-choice.test.ts`、`frontend/tests/rectification-v9-agent.test.ts`、`frontend/tests/rectification-collect-prompt.test.ts`、`frontend/tests/agent-voice-copy-contract.test.ts`(机器词表含「领先」「落后」)。
|
||||
- 防复发:用户可见旁白不得出现「领先」「落后」。证据轮落库不得含价值评价四词。方法句不得回到气泡正文。
|
||||
- 相关记录:BUG-545、BUG-585
|
||||
- 复发自:无
|
||||
- 修复版本:`aa7ccb30`
|
||||
|
||||
## BUG-607 | 长报告页分盘标题下没有图
|
||||
|
||||
- 状态:resolved
|
||||
|
||||
Reference in New Issue
Block a user