fix(rectification): open cases for uncertain birth times
Independent Staging Quality Gate / validate (push) Successful in 12m32s
Independent Staging Quality Gate / publish (push) Successful in 9m9s

This commit is contained in:
Jesse_Chen
2026-08-15 20:24:43 +08:00
parent 995da2d4b4
commit 5b023e9480
3 changed files with 138 additions and 14 deletions
+15
View File
@@ -3333,3 +3333,18 @@
- 防复发:资料声明完整性和精确分钟校正可启动性必须是两个独立条件;任何 fresh Case 前置条件调整不得删除 period/unknown 资料入口。UI 合同测试必须正向断言两个一级选择、时段选择和跳过路径存在,禁止再用负向断言把产品能力删除写成门禁。
- 相关记录:BUG-127、BUG-196
- 修复版本:本次 staging 修复提交(精确 SHA 以远端分支核验结果为准)
## BUG-198 | 不确定或未知出生时间被错误拒绝创建生时校正 Case
- 状态:resolved(本地候选,待 staging 发布与登录态业务验收)
- 首次发现:2026-08-15
- 最近更新:2026-08-15
- 影响面:`/api/rectification/cases/open`、首页和新建生时校正入口、只有大致时段或完全未知出生时间的用户。
- 用户现象:用户已选择“上午/下午/晚上/深夜”等出生时段,或明确选择“完全不清楚”,资料保存成功,但开始生时校正时仍返回 HTTP 422 `profile_incomplete`,无法进入 Case。
- 触发条件:Profile 的 `reported_birth_time` 为空,且 `birth_time_source``period_only``unknown` 时,以 `homepage/new` intent 创建 fresh Case。
- 根因:BUG-196 将“没有具体分钟不能直接使用 ±15 分钟精细扫描”错误实现为“没有具体分钟不能创建 Case”;`case-service.ts` 的 fresh 候选范围只接受 `reported_birth_time`,没有恢复资料模型已经支持的时段范围和全天范围。对应测试也把该错误边界锁定为预期行为。
- 修复:继续保持 fresh Case 不继承历史 `active_birth_time` 和 uncertainty;有合法 `reported_birth_time` 时仍使用服务器控制的前后 15 分钟范围。`period_only` 改为使用用户已选择的服务器映射时段,包含 `late_night` 的跨午夜 `23:0003:59``unknown` 使用 `00:0023:59`。缺少出生日期、地点、时区,或选择 `period_only` 却没有合法时段等真正不完整组合,仍在调用创建 RPC 前 fail closed。
- 验证:回归测试先证明旧实现对 period/unknown 稳定抛出 `profile_incomplete`,修复后锁定 morning `08:0011:59`、late-night `23:0003:59`、unknown `00:0023:59` 均能传入 `open_agentic_rectification_case_v2`;非法缺时段/缺具体时间组合仍不调用 RPC。既有引擎范围判断支持跨午夜,工具合同已覆盖全天宽范围不伪造中午分钟。
- 防复发:资料完整性、Case 可创建性和是否可以立即执行分钟级扫描必须分层;宽范围应先通过事件问题逐步缩小,不得以 `profile_incomplete` 阻止用户进入,也不得生成虚假具体出生时间。
- 相关记录:BUG-127、BUG-196、BUG-197
- 修复版本:本次 staging 修复提交(精确 SHA 以远端分支与 staging health 验收结果为准)