fix(rectification): allow accepted candidate reselection
This commit is contained in:
@@ -3093,3 +3093,18 @@
|
||||
- 防复发:Activity 只能来自服务端清理后的真实工具生命周期,不得从 Agent 正文、未来步骤或前端猜测生成;工具参数、出生资料、评分、权限、Provider metadata 与内部错误不得进入公开事件;Agent 正文、运行状态、完成凭证和候选卡必须保持单一内容所有权。
|
||||
- 相关记录:BUG-172、BUG-173、BUG-179、BUG-180
|
||||
- 修复版本:本次 staging 发布提交(精确 SHA 以提交与部署结果为准)
|
||||
|
||||
## BUG-182 | 候选卡允许“改选”但数据库把不同分钟误报为“该时间已采用”
|
||||
|
||||
- 状态:resolved(已验证,待 staging 发布与登录态业务验收)
|
||||
- 首次发现:2026-08-13
|
||||
- 最近更新:2026-08-13
|
||||
- 影响面:V9 生时校正候选卡的 `改选为此时间` 操作、Case/Profile/Result 三方采用状态一致性。
|
||||
- 用户现象:一个候选分钟已经采用后,点击同一候选结果中的另一分钟,界面返回“该时间已采用”;卡片明明显示“改选为此时间”,实际却无法切换。
|
||||
- 触发条件:`agentic_rectification_results.selected_time` 已有值,随后以同一个有效 `result_id` 请求另一个候选分钟。
|
||||
- 根因:`accept_agentic_rectification_candidate_for_case` 只实现了首次采用和同分钟幂等重放;只要请求分钟不同,就直接抛出 `agentic_rectification_candidate_already_selected`,没有实现前端合同所承诺的安全改选分支。
|
||||
- 修复:新增前向业务迁移,保留同分钟幂等;仅允许 `candidate_accepted`、未 confirmed、同一有效未过期结果、旧采用时间与 Profile/Case/Result 完全一致时改选。改选原子更新 Profile、Result 与 Case,并强制保持 `user_accepted` / `accepted` / `candidate_accepted`,不绕过显式确认门;终态、已确认、资料漂移、更新结果或非候选时间仍拒绝。
|
||||
- 验证:新增迁移合同回归覆盖顺序、事务、幂等、改选门、Profile 旧值校验、accepted 写入、confirmed/终态不可变及业务迁移隔离;新增 PostgreSQL 集成场景覆盖首次采用、跨分钟改选、三方状态落库与新分钟幂等重放。部署后仍需在 staging 登录态点击候选卡完成真实业务验收。
|
||||
- 防复发:候选卡 CTA 与数据库状态机必须共享同一行为合同;任何“改选”文案都必须有跨分钟成功路径测试,不能只测试按钮未禁用或同值幂等。
|
||||
- 相关记录:BUG-127、BUG-144、BUG-179、BUG-181
|
||||
- 修复版本:本次 staging 发布提交(精确 SHA 以提交与部署结果为准)
|
||||
|
||||
Reference in New Issue
Block a user