Replace the minute-row delivery card with up to three compare columns so users can pick the time that fits, and apply the adult-year floor on inspect fallbacks. Co-authored-by: Cursor <cursoragent@cursor.com>
57 lines
4.5 KiB
Markdown
57 lines
4.5 KiB
Markdown
# PROGRESS · 生时校正交付卡三列对照(2026-09-08)
|
||
|
||
工作树:`.worktrees/rectification-candidate-compare-columns-20260908`
|
||
分支:`codex/rectification-candidate-compare-columns-20260908`
|
||
任务书:`docs/tasks/TASK-rectification-candidate-compare-columns-20260908.md`
|
||
基线:`origin/staging` @ `a9125e3d`(任务书已在该提交)
|
||
|
||
本单状态:**待验收**。代码在执行分支,尚未 commit / push。
|
||
|
||
未改:采用 RPC、确认门、各道门槛、`minute_step`、`_relative_support`、`page.tsx`。Skill 从 10.0.17 升到 **10.0.18**(只改 `references/candidate-comparison.md` 的卡片描述)。采集题「没有」按钮未做,等产品答复。
|
||
|
||
主仓仍停在 `codex/minute-rectification-p0` 且有脏文件,未 checkout / reset。本单在独立 worktree 基于 `origin/staging` 做。
|
||
|
||
## 做了什么
|
||
|
||
- **决策 1** 区间卡改成一行至多三列。按 `inference_state.candidates` 后验概率排序,精确 HH:MM 去重,最多三列。超过三列末尾写「还有 N 个分钟可能性更低,已并入范围」。不预标「排盘用」。
|
||
- **决策 2** 每列五段全由服务端算好:时间 + 相对可能性;D9/D10 类型表全文 + 月宿边界 traits;经历强/中/弱计数与最不吻合一件(年-月+领域,不写摘要);往后 12 个月 1–2 窗或「未来一年没有明显的窗口」;「更像这个」走现有 accept RPC,选择不计分。
|
||
- **决策 3** 卡底边界句与收起的「查看验证报告」保留。交付正文仍三句,不再写代表分钟「排盘用」。
|
||
- **决策 4** compare 同一次返回 `event_dasha_ledger_by_time` 与 `prospective_windows_by_time`(HH:MM 键,≤3 分钟),与代表分钟 ledger 并存;耗时写入 `column_compare_ms`。
|
||
- **BUG-598** `inspectDiscriminatorProbes` 接收 `birthDate`,与 followup 共用 `adult-floor.ts`。inspect 回退不再漏过成年下限。
|
||
- **P2「没有」按钮** 跳过,等产品。
|
||
|
||
## 三栏(被触碰断言)
|
||
|
||
| 用例 | 原值 | 新值 | 理由 |
|
||
| --- | --- | --- | --- |
|
||
| 交付卡形态 | 每个候选分钟一行,点行采用 | 至多三列,「更像这个」采用 | BUG-597 决策 1 |
|
||
| 「排盘用」 | 代表分钟预标 | 不预标 | BUG-597 决策 1 |
|
||
| 列文案 | 只写与代表分钟不同的 D9/D10 | 三列写全 D9/D10/月宿 + 经历计数 + 未来窗 | BUG-597 决策 2 |
|
||
| 引擎 compare | 只有代表分钟 ledger | 另有 by_time ledger 与 windows | BUG-597 决策 4 |
|
||
| Skill | 10.0.17 | 10.0.18 | 任务书 |
|
||
| inspect 成年下限 | 仅 followup 过滤 | inspect 同样 `below_adult_floor` | BUG-598 |
|
||
| 采集「没有」按钮 | 无 | 仍无 | 等产品 |
|
||
|
||
## 测试
|
||
|
||
- `frontend` `./node_modules/.bin/tsc --noEmit`:exit 0
|
||
- `npm run lint`:0 errors / 108 warnings(仓库基线 warning,无新 error)
|
||
- 任务书指定 TS 切片:1040 tests / 1040 pass / 0 fail
|
||
- `tests/test_rectification_v5_services.py`:35 passed
|
||
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
|
||
- 浏览器真人走查:无登录态,记 blocked
|
||
|
||
Skill 10.0.18 SHA256:`ad209a7824d7eb65f35efd7d6245e9a3752a8b32972de0fbafb751691e86a1ad`。live `SKILL.md` + `references/` 与 `versions/10.0.18` 字节一致。
|
||
|
||
## 偏离
|
||
|
||
1. **不按 `cluster_range` 合并不同分钟。** 任务书写「同簇合并取代表」。04:53 与 04:59 若同簇会被合成一列,正好把本单要对照的差别藏掉。实现按精确 HH:MM 去重。
|
||
2. 引擎 `column_times` 取 `candidate_decisions` 前 3 个唯一分钟(引擎分序)并保证代表分钟在列里。卡片列按后验排序。后验前三若与引擎前三不一致,缺的分钟回退代表 ledger / 空窗口句。
|
||
3. `prospective_windows_for_time` 用该分钟月曜起的未来 12 个月 Vimshottari 起始月,领域目前标 `career`;没有 static context / 月曜则空列表,卡片写固定句。
|
||
4. 采集题「没有」按钮未做。
|
||
5. BUG-598 真实 Case 出生年:本工作树没有该 Case 档案,不能用出生资料核对。按年份公式:2015 年迁居题越线当且仅当出生年 > 1997。≤1997 年生在 2015 年已满 18 岁,不越线。
|
||
6. 本机主仓停在 `codex/minute-rectification-p0` 且有脏文件,未动。
|
||
7. 预检系统 Python 缺 swisseph/pytest;不把预检失败写成云端未同步。
|
||
8. `.venv` 与 `frontend/node_modules` 是指向主仓的 symlink,不提交。
|
||
9. 浏览器真人走查:本会话无登录态,记 blocked。见 `docs/testing/rectification-scenarios-20260907.md` §5。
|