fix(rectification): preserve event date precision
This commit is contained in:
@@ -2098,3 +2098,18 @@
|
||||
- 防复发:任何非唯一候选卡必须由显式选择阶段开启;同一 Agent 回复不得既索取新证据又提供采用操作;候选采用测试必须覆盖幂等、改选、过期结果和 Profile 基线漂移。
|
||||
- 相关记录:BUG-117、BUG-118、BUG-119
|
||||
- 修复版本:待提交与发布
|
||||
|
||||
## BUG-121 | 月份与区间事件在确认工具中被序列化成错误日期格式并耗尽 Agent 步骤
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-04
|
||||
- 最近更新:2026-08-04
|
||||
- 影响面:Agentic 生时校正结束收集、V5 评分/诊断、旧确认门适配、无回复退款兜底
|
||||
- 用户现象:用户明确表示不再补充事件后,接口返回“生时校正没有生成有效回复,本次不会扣除点数,请重新发送”,没有展示最终候选或后续选择。
|
||||
- 触发条件:历史证据同时包含 `year`、`month` 或 `range` 精度;Agent 在结束收集时调用 `rectification-confirm`。月份或年份事件被发送成完整日期,区间事件又可能使用 `/`、`to` 等自然分隔形式。
|
||||
- 根因:共享事件 schema 只检查字符串长度;V5 转换只识别 `..` 区间;`toV3Event()` 又把标准化后的 `YYYY-MM-DD` 与 `month`/`year` 精度一起发送给只接受 `YYYY-MM`/`YYYY` 的旧确认端点。引擎持续返回 `event date does not match its precision`,Agent 在 8 个工具步骤内反复修正和重试,最终没有剩余步骤生成公开文本。该问题是 BUG-116 的输入契约残余变体,提高步骤数只能延后失败。
|
||||
- 修复:事件日期统一复用严格日历范围转换;V5 保留年月日和区间的 `date_start`/`date_end`,并兼容 `..`、`/`、`to`、中文范围符和紧凑年月范围;旧确认端点按精度发送严格的 `YYYY`、`YYYY-MM`、`YYYY-MM-DD`,区间按旧端点能力降级为年份证据且摘要仍保留原区间语义。工具 schema 同时明确推荐日期格式。
|
||||
- 验证:新增 V5 区间归一化和旧确认精度序列化回归;Agentic 工具/入口/会话合同测试 51/51,通过针对性 ESLint、`tsc --noEmit` 和 production webpack build。使用脱敏后的原始长对话本地重放,Agent 在 5 次工具调用内完成 `gate -> score -> diagnostics -> confirm`,工具错误 0,生成 610 字可见候选回复,不再触发空回复退款。
|
||||
- 防复发:任何送往旧事件引擎的日期必须由精度契约测试断言;新增日期表示必须先走共享日历校验,不能在调用端自行拼接或仅增加 Agent 重试步数。
|
||||
- 相关记录:BUG-116、BUG-118、BUG-120
|
||||
- 修复版本:本记录所在 staging 发布提交
|
||||
|
||||
Reference in New Issue
Block a user