Files
Jyotisha/docs/tasks/PROGRESS-ui-kit-fix3-20261027.md
T
Jesse_ChenandClaude Opus 5.5 8e05e4114b
Independent Staging Quality Gate / validate (push) Successful in 29m5s
Independent Staging Quality Gate / publish (push) Successful in 5m29s
起步问句只在今日星语没带星座时才读盘(BUG-1459 复验补修)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
2026-10-27 10:29:29 +08:00

55 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 进度:组件库修复第 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` | 首页 `<OnboardingChecklistEntry />`,page.tsx 里 dynamic 引入且不给占位 | 首页 `<OnboardingChecklistSlot />`;dynamic 引入在 slot 文件里,带 `loading` | 不给占位导致揭幕后才冒出来(第 6 条) |
| `tests/report-export-drawer.test.tsx` | (365a623fc)没有「关闭导出」点按 | 补回,点了再关一次 | 按钮还在,是最常用的关法 |
| `tests/chart-type-picker.test.tsx` | (365a623fc)没有源码守卫 | 补回 `doesNotMatch(/<dialog\|<button\|ToggleGroup\|role="tablist"/)` | 点按测试拦不住退回手写控件 |
| `tests/birth-time-guided-review-fixes.test.ts` | (365a623fc)整条删除,没写说明 | 补写三栏注释 | 四个旧校正组件已删除,见注释 |
| `tests/onboarding-hint-observer.test.tsx`、`tests/onboarding-motion-gate.test.tsx` | 夹具没有新字段 | 加 `checklistPending: false`、`userId: ""` | 类型新增字段;断言不变 |
## 验收数字(Linux,Node 22)
| 检查 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错(构建前后各一次) |
| `npm run lint` | 0 error,122 warning(与 staging 相同) |
| `npm test` 全量 | 5219 项,通过 5143,失败 25,取消 0。25 条与 staging 已知名单逐条同名,没有新增 |
| `next build` | `/` 仍 `○ Static`。第一次构建在本机内存紧张时报「Failed to type check.」且没有任何类型错误,单独重跑通过 |
| 首屏 gzip-9 | 699,664。产品已接受的新基线 694,941(+0.68%);当前 staging 727,735(−3.9%) |
| 隐私标记 `tests/test_repo_privacy_markers.py` | 通过 |
| 数据库 / Python 快速门 | 本轮没动表、没改 `scripts/**` 与根目录 `tests/**`,未跑 |
首屏多出来的约 4.7 KB:合并了 staging 的 #112 页头一句,清单胶囊(进度圈)和拖宽钩子现在在首屏。读星盘那段代码用到时才载入,不在首屏。
## 留给真机
浏览器手感(拖宽、方向键、清单胶囊不跳、建档不退回加载、月亮问句和别人的上升句)写在 `docs/testing/ui-kit-migration-20261023.md`「第 3 轮修复」。
## 复验补修(Claude 独立复验,2026-10-27)
- 起步问句读盘原本在「今日星语」还没回来时就发起:有出生分钟的新用户每次进首页都会多读一次盘。改为只在今日星语已经结束、却没带星座(没有出生分钟或请求失败)时才读(`StarterQuestions` 的 `chartSignsFallback`,页面传 `dailyStarlanguage.kind === "unavailable"`,不新增状态)。BUG-1459 补记。测试:`starter-chart-signs-20261027.test.ts` 锁住这道门。