feat: allow users to accept rectification candidates

This commit is contained in:
Jesse_Chen
2026-08-04 11:39:33 +08:00
parent 297bd4f4f9
commit 8f6f4f511b
23 changed files with 1249 additions and 120 deletions
+15
View File
@@ -2039,3 +2039,18 @@
- 防复发:公开回复必须同时满足“可见文本 + Session 持久化成功”才能发送完成事件;自动 opening 必须以服务端 Session 历史为准,不能只依赖组件内存。
- 相关记录:BUG-113、BUG-114、BUG-115
- 修复版本:空流修复 `e65c8eeda2ff5916f88f18dd345c02beff045e8b` / Session 持久化待本次 staging 发布
## BUG-117 | 用户采纳最强候选后无法保存为平台排盘时间
- 状态:resolvedlocal
- 首次发现:2026-08-04
- 最近更新:2026-08-04
- 影响面:Agentic 生时校正候选结果、个人资料出生时间、后续咨询排盘时间
- 用户现象:`04:55` 已是最强候选,用户多次明确表示“就用 04:55”,但 Agent 因唯一分钟确认门未通过而拒绝保存,个人资料和后续排盘仍未使用该时间。
- 根因:系统把引擎候选、用户采纳和引擎唯一确认压缩成单一 `confirmed` 状态;没有可持久化的候选身份和用户采纳边界。
- 修复:引入 `candidate / accepted / confirmed` 三态;服务端持久化候选身份、相对支持度、Session 所有权和 Profile 基线;新增 service-role 原子采纳 RPC;前端展示候选卡并允许用户采用;`accepted` 接入个人资料和全平台排盘。
- 数据边界:相对支持度仅表示本次候选间的归一化比较,不是统计概率;保留 `reported_birth_time``accepted` 不冒充引擎唯一确认。
- 安全边界:RPC 校验用户、Session、结果身份、有效期、候选成员、最新结果和 Profile 基线;出生申报资料变化使旧候选失效;采纳不计费。
- 验证:TypeScript 通过;聚焦测试 90/90;完整测试 1221/1221lint 0 error、3 个既有 warningproduction build 通过;本地 PostgreSQL 验证 `04:55` 写为 `accepted`、保留 `05:00` reported time、重复采纳幂等,并验证出生申报时间变化会使结果失效且拒绝再次采纳。
- 相关记录:BUG-113、BUG-114、BUG-115、BUG-116
- 修复版本:待提交与发布