fix(rectification): honor declared birth-time uncertainty and split windows over two hours (BUG-571–573)

Intake stores how sure the user is; rectification now searches that range, offers a one-click widen when event fit is low at the edge, and trisects windows longer than two hours before the minute grid.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-07 12:17:04 +08:00
parent b2a8d3a005
commit 8e31680b45
49 changed files with 3047 additions and 142 deletions
@@ -0,0 +1,37 @@
# Staging 人肉复核 · 出生时间有多确定只问一次(2026-09-07)
给产品负责人。不要把真实案例里的年份、事件或候选分钟写进任何记录。
对应 `TASK-rectification-declared-uncertainty-20260907.md` / BUG-571~573。测之前先做第 0 条。四个虚构脚本见 `rectification-scenarios-20260907.md`
## 0. 确认测的是新版本
浏览器打开 staging 的 `/api/health`,看 `deployment.gitCommit` 前 8 位是否等于本单合入 staging 后的提交。不一致 = 先别测。本迁移必须先 `Migrate Staging Database`
## 1. intake 三档,家人一小时进校正是两小时窗(P0)
设置 → 星盘资料。出生时间选「家人记得大概时间」,钟点填一个整点,范围点「前后一小时」,保存后开生时校正。
- ✅ 预期:顶部目前范围是该钟点前后各一小时(共两小时)。没有「偏移 / 误差 / 置信度 / 概率」。校正过程不再问你有多确定。
- ❌ 失败:范围仍是 ±15;或校正开场又问不确定度。
## 2. 吻合低且贴边时出放宽卡,点 A 后设置页跟着变(P0)
用上一档资料。口述三件带年月、不同领域、和这个两小时窗明显对不上的经历(不要用真实资料原句)。等到出现放宽卡。
- ✅ 预期:卡在区分卡之前。A 是放宽到前后两小时(或下一档),没有采用。点 A 后顶部范围变宽;再打开设置,家人范围按钮停在更大的档。
- ❌ 失败:没有放宽卡、先出了分钟区分卡;或点 A 后设置页还是前后一小时。
## 3. 医院记录放宽不改档案来源(P1)
另建资料,选「有出生证或医院记录」,走完能出放宽卡的条件后点 A。
- ✅ 预期:窗口变宽,设置页来源仍是医院记录,没有变成「家人记得大概时间」。
- ❌ 失败:来源被改成 approximate。
## 4. 超过两小时先切三段(P0)
资料选「只知道大概时段」填傍晚,或家人「前后两小时」。开校正,说够带年月经历。
- ✅ 预期:先出三段钟点卡,不是分钟或采用。选一段后若仍超过两小时,再出子段卡。
- ❌ 失败:一上来分钟卡;或选傍晚后立刻按分钟比。
@@ -0,0 +1,64 @@
# 生时校正手测脚本(2026-09-07
虚构走查。不要填真实姓名、出生资料或真实经历。对应 `TASK-rectification-declared-uncertainty-20260907.md` 决策 9。
测之前先看 `rectification-declared-uncertainty-20260907.md` 第 0 条。
## 1. 范围:家人说两点到四点
资料:家人记得大概时间,钟点 15:00,范围「前后一小时」。地点任意公开城市。
开场后依次说(均可改年份,保持不同领域):
1. 2016 年 9 月去外地上学
2. 2018 年 7 月入职第一份工作
3. 2023 年夏天搬家
期望:
- 顶部范围 14:0016:00,不是 14:4515:15
- 若三件和这个窗对不上且代表分钟贴边:出现放宽卡,选项是前后两小时 / 不放宽 / 说不好
- 点 A 后范围变成 13:00–17:00,设置页停在「前后两小时」
- 不得出现:偏移、误差、置信度、概率、采用卡(在放宽之前)
## 2. 时段:只知道傍晚
资料:只知道大概时段,开始 18:00 结束 22:59。
经历同上三件,领域仍要两个以上。
期望:
- 第一张卡是三段钟点(例如 18:00—19:xx),不是「更像 20 点」、不是采用
- 选 A/B/C 后范围收到该子段;若仍大于两小时,再出一张子段卡
- 输入框上方是比较时段 / 子段,不是分钟
- 不得出现:全日 00:00–23:59 上的分钟卡
## 3. 完全未知
资料:完全不清楚。
经历三件同上。
期望:
- 先出清晨 / 上午 / 下午 / 傍晚或夜里这类五时段卡(实际露出支持最高的三段)
- 选定后若该时段超过两小时,再切子段,然后才分钟
- 家人线索如果填了,只出现在旁白,窗口仍是全日直到点选
- 不得出现:劝退「以后再做」;不得在全日窗上采用
## 4. 必须停下
资料:家人记得大概时间,钟点任意,范围「差不多准」。
经历故意说不清:
1. 「大概哪年有过事,具体不记得」
2. 「地点也说不准」
3. 连续几道选择题都点「说不好 / 先这样」
期望:
- 到不确定度停止规则时停下,旁白说明再问也分不开
- 不采用、不编唯一出生分钟
- 不得把「先这样,先看当前范围」当成已经选定时间
@@ -22,12 +22,14 @@
- ✅ 预期:出现四选卡,问哪一段更像出生时段(清晨 / 上午 / 下午 / 傍晚或夜里这类)。没有「更像 X 点」,没有采用。输入框上方是「第 1 步·比较时段」。
- ❌ 失败:仍在问经历却已经给出分钟或采用卡;或时段卡上写了代表分钟。
## 3. 选定一段后进入分钟流程P0
## 3. 选定一段后若仍超过两小时,先切子段P0
在时段卡上选 A、B 或 C 中的一段。
在时段卡上选 A、B 或 C 中的一段(例如下午 12:0017:59
- ✅ 预期:旁白说明已选定出生时段,接下来只在这一段里按分钟比较。目前范围变成该时段(不超过大约 6 小时),不再是 00:00–23:59。之后才可能出现分钟区分题
- ❌ 失败:范围仍是全日;选定后立刻采用某个分钟
- ✅ 预期:范围变成该时段,不再是 00:00–23:59。若这一段超过大约两小时,下一张仍是三段钟点卡,不是分钟或采用。收到大约两小时及以内之后,才按分钟比较
- ❌ 失败:范围仍是全日;选定下午后立刻出现分钟或采用卡
更完整的子段与放宽走查见 `docs/testing/rectification-declared-uncertainty-20260907.md`
## 4. 说不好会再收经历,不会结束校正(P1)