# 进度:组件库修复第 3 轮(issue #111,Claude 直接执行,2026-10-27)
- 修复清单:`TASK-ui-kit-onboarding-fix-20261026.md` 末尾「第 2 轮验收」第 1~7 条,加 U11 第 2、3 项。
- 产品决定(#111,2026-10-27):由 Claude 来修;首屏 +7.54% 接受;为 U11 第 2、3 项允许多读一次已算好的盘。
- 分支 `codex/ui-kit-fix3-20261027`,从 `codex/ui-kit-onboarding-fix-20261026`(`365a623fc`)开出,先合并 `origin/staging`(`9ca933968`,含 #112)。
- BUG 编号:#112 已占 1444~1447。#111 分支原来的 1444~1450 合并时顺延为 1448~1454,本轮新增 1455~1459。
## 逐条
| # | 内容 | 结果 | BUG |
| --- | --- | --- | --- |
| 1 | 建档后整页退回「正在载入账户」 | 建档改用 `refreshSubjectCatalog()`:旧名单保留到新名单到;重读失败保留原来的完整名单。换账户仍用 `invalidateSubjectCatalog()` | 1455 |
| 2 | 对话右栏拖不动 | 右栏不再用分栏组,左缘换成 `useDragWidth` 把手;拖到最窄以下收起。聊天列仍在右栏外,不重挂 | 1456 |
| 3 | 侧栏把手没有键盘 | 侧栏和右栏共用 `useDragWidth`:左右方向键 16px、Home / End,键盘不收起;`role="separator"` 带宽度 | 1457 |
| 4 | 删减断言没写三栏 | 「关闭导出」点按补回;选盘型的源码守卫补回;旧校正组件那条删除补写三栏 | — |
| 5 | 为测试改了线上登录代码 | `modules/identity/client.ts`、`email-otp-login.tsx` 改回合并基线原样。测试替身放进 `login-code-entry.test.tsx`:加载钩子把 `next/image` 换成组件本身;先装好 fetch 替身再动态导入登录页 | — |
| 6 | 清单揭幕后才冒出来 | 新增 `OnboardingChecklistSlot`:胶囊不等弹层代码;读启程状态期间用本机上次的胶囊占位 | 1458 |
| 7 | 无用样式 | 删除旧校正组件独有的 30 个类的规则(`globals.css`、`birth-time-choice.css`),逐个确认 `src/` 无引用、测试无断言 | — |
| U11-2 | 起步第一问「只有月亮」档 | 没有今日星语时读一次星盘页同一份结果;上升只在 `lagnaPrecheck.state === "fixed"` 时用 | 1459 |
| U11-3 | 别人的天空过场上升句 | 过场开始时为别人读同一份结果;上升会换或读不到就不写这句 | 1459 |
## 改动的既有断言(原值 / 新值 / 原因)
| 文件 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `tests/chat-chart-panel-state.test.ts` | split 里要有 `ResizablePanelGroup`、`collapsible` | split 用 `useDragWidth(`,`onCollapse` 调 `onOpenChange(false)` | 组里只剩一个面板时把手拖不动;聊天列不能进组(BUG-1448),改成不依赖分组的把手 |
| `tests/class-name-definition-contract.test.ts` | 白名单含 `chat-chart-resize-handle` | 删掉这一项 | 这个类现在有自己的样式规则 |
| `tests/onboarding-checklist-20261022.test.ts` | 首页 ``,page.tsx 里 dynamic 引入且不给占位 | 首页 ``;dynamic 引入在 slot 文件里,带 `loading` | 不给占位导致揭幕后才冒出来(第 6 条) |
| `tests/report-export-drawer.test.tsx` | (365a623fc)没有「关闭导出」点按 | 补回,点了再关一次 | 按钮还在,是最常用的关法 |
| `tests/chart-type-picker.test.tsx` | (365a623fc)没有源码守卫 | 补回 `doesNotMatch(/