docs(tasks): #112 fix brief and #111 second-round review (agent loop)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
Jesse_Chen
2026-10-27 07:14:34 +08:00
co-authored by Claude Opus 5.5
parent ef62aa490f
commit efede95bfd
3 changed files with 58 additions and 0 deletions
+1
View File
@@ -537,3 +537,4 @@
| `TASK-full-data-parity-1-b-fix-20261023.md` | `PROGRESS-full-data-parity-1-b-20261023.md` | **#91 B 段修复**:K1–K3 已交;K4 年运键序与 Yogini 子运字段已补(BUG-1425、BUG-1426) | 已合入 staging | `codex/full-data-parity-1-20261021` |
| — | `PROGRESS-full-data-parity-1-fix2-20261022.md` | **#91 A 段第 2 次打回**(Claude 口头修复单 F1~F4):11 节只印「未判定」和键名改读真实记录;测试只认非第一列真实值、禁止键名格;中文瑜伽组合句由中文源给出(BUG-1418);六章降为 `##`、节 `###`(BUG-1419) | 本地完成,待验收 | `codex/full-data-parity-1-fix2-20261022` |
| `TASK-lagna-precheck-20261027.md` | — | **#112 选 A**:星盘页页头告诉用户上升在其时间精度内会不会换(复用现成的 D1 窗口扫描,纯计算);校正开场说清能做 / 不能做(BUG-1444、BUG-1445) | 待执行 | `codex/lagna-precheck-20261027` |
| `TASK-lagna-precheck-fix-20261027.md` | — | **#112 第 1 次打回**:已有进行中的校正时点链接报冲突(应走首页续上);别人的星盘页不该给校正链接 | 待执行 | `codex/lagna-precheck-20261027` |
@@ -0,0 +1,38 @@
# 修复单:上升交界预检(issue #112,第 1 次打回,2026-10-27)
- 被验提交:`903d206f3`(分支 `codex/lagna-precheck-20261027`)
- 原任务书:`TASK-lagna-precheck-20261027.md`
- 执行方:Grok。同一分支继续,开工前 `git merge origin/staging`(不 rebase)。BUG 编号开工时核对最大号 +1(#111 的分支也在用 1444 起的号,以合入 staging 时的实际最大号为准,撞号由合并方改)。
## 验收结论(Claude,Linux)
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错(换新 `.next` 后) |
| `npm run lint` | 0 error |
| `npm test` 全量 | 5183 项,失败 25,与 staging 已知名单逐条相同;Windows 上那条技能路径失败在 Linux 通过 |
| `next build` | `/` 仍 Static;首屏 gzip 727,726,staging 727,249,+0.07% |
| Python 快速门 | 通过 |
| 文案、窗口、失败不挡星盘、开场限度、断言三栏 | 都对 |
未通过两条,都在「出生时间校正」这个链接上。
## F1 · 已有进行中的校正时,点链接会报错(必修)
`use-rectification-surface.ts` 里 `?rectify=1` 调的是 `startNewRectification` → `openRectificationCase("new", …)`。数据库函数 `open_agentic_rectification_case_v2` 在 `p_intent = 'new'` 且有可续的进行中校正时**直接抛 `agentic_rectification_active_case_conflict`**(`20260812010000_agentic_rectification_v9_runtime.sql`,「restarting with an active case must surface a safe conflict」)。上升会换的人恰恰最可能已经开过一次校正,他们点链接看到的是报错,而不是回到自己那次校正。
修法:链接走首页入口的同一路径——`openRectificationCase("homepage", null, null)`(有进行中的就续上,没有就新建;即本文件里现成的那个 homepage 打开函数)。不要新建 intent,不改数据库。
验收:加一条测试——已有可续校正时,`?rectify=1` 走 `homepage` 意图、不出现冲突提示;没有时新建。
## F2 · 别人的星盘页不要给链接(必修)
现在人物档案里别人的星盘页也显示「出生时间校正」链接,点进去只得到「生时校正暂时只支持本人。」——一个点了没用的入口(产品口径:多余入口宁可删除)。
修法:`subjectId` 不是本人时,`lagnaPrecheckLine` 的「会换」「不知道时间」两种情况**不带链接、也不写「想定下来可以做一次出生时间校正」那半句**,句子止于「(大约 HH:MM 换座)。」或「上升星座定不下来。」;本人不变。
验收:组件测试——非本人两种情况 DOM 里没有链接、没有「出生时间校正」字样;本人照旧有。
## 交回前必跑
`tests/lagna-precheck*.test.ts`、`tests/chart-page-view.test.tsx`、`tests/chat-session-url.test.ts`、校正开场三份测试;全量与构建由 Claude 复验。
@@ -114,3 +114,22 @@
- `npm run test:db`(U6、U7 改了表的读写路径)。
- Python 快速门 `run_quality_gate.py --profile quick`。
- `docs/testing/ui-kit-migration-20261023.md`、`onboarding-journey-20261022.md` 补上本单的真机步骤(桌面加载不闪、中英切换能看出选中、老用户无启程动画)。
## 第 2 轮验收(2026-10-27,被验 `365a623fc`;同一单第 2 次未过,按规则交产品负责人决定由谁修)
验收数字(Claude,Linux):`tsc` 0 错;lint 0 error;`npm test` 5196 项、失败 25,与 staging 已知名单逐条相同(比 staging 多 20 项测试);`/` 仍 Static;首屏 gzip 694,941(基线 `0f66d92d4` 646,201,+7.54%;当前 staging 727,249,−4.4%);`test:db` 83 项过 81,2 条为本机环境已知;Python 快速门通过。U2、U3、U4、U6、U7、U9 通过。
还要修的(按严重度):
1. **揭幕后整页回到「正在载入账户」**(违反 AGENTS §6「揭幕后不得出现加载」,也是 U1 同类的整页卸载)。`page.tsx` 的加载判断新加了 `account && !subjectCatalogReady`;而 `use-profile-onboarding.ts` 两处(为别人建档补地点后、`chooseOnboardingOther`)调用 `invalidateSubjectCatalog()` 把 `catalogReady` 置回 false,于是整页聊天被换成加载屏;那次重载失败时 `useCurrentSubjectReady` 只在挂载时重试,页面会一直停在加载屏。修法:只有**首次**未就绪才走加载屏(已揭幕过就保留旧名单直到新名单到),重载失败要能恢复。加测试:揭幕后调用 `invalidateSubjectCatalog()` 不出现 `app-loading`。
2. **对话右栏盘面拖不动宽度**(读代码判断,未在浏览器复现)。`chat-chart-split.tsx` 的 `ResizablePanelGroup` 里只剩一个面板加固定 `style={{ width }}`,把手两边没有可交换的面板,`onWidth` / 拖到最小收起都不会触发。修法:让聊天列仍是组里的另一个面板,但**不随右栏加载换位**(U1 的要求),或改用不依赖分组的拖宽把手;加一条测试证明拖动会调用 `onWidth`。
3. **侧栏拖宽把手没有键盘操作**:原组件的左右方向键没了。补回方向键调整宽度。
4. **测试删减没写三栏**(AGENTS §7.3):`report-export-drawer.test.tsx` 删了「关闭导出」按钮那条;`chart-type-picker.test.tsx` 删了 `doesNotMatch(source, /<dialog|<button|ToggleGroup|role="tablist"/)`;`birth-time-guided-review-fixes.test.ts` 整条删除(组件删了可以删,但要写原值 / 新值 / 原因)。补回或补三栏。
5. **为了让测试能跑改了线上登录代码**:`modules/identity/client.ts` 加 `customFetchImpl: globalThis.fetch`、`email-otp-login.tsx` 加 `NextImage.default` 兼容。这两处碰真实登录路径且不在任务书里;改回去,把替身放在测试里。
6. 启程清单入口改成延后加载后,揭幕后才冒出来(第二次变化)。给它预留位置,或与首屏一起出现。
7. 小:删掉的旧校正画面在 `globals.css` 和 `birth-time-choice.css` 里留下的无用样式,确认无引用后删除。
需要产品负责人定的:
- **首屏 +7.54%**:多出来的是组件库外壳与整站样式,延后加载已经做了。是接受(写进 BLOCKED / DESIGN 的体积说明),还是继续压到 ±2%?
- **U11 第 2、3 项**(月亮开场、给别人看时天空过场的上升句):执行方说现有资料里没有这两个值、本单又不许新增请求,所以没做。是放弃,还是允许为此多读一次已算好的盘?