Files
Jyotisha/docs/tasks/PROGRESS-ui-kit-6-rectification-20261023.md
T
jesse-uxandGrok (agent loop) 728ead8844
Independent Staging Quality Gate / validate (push) Failing after 9m5s
Independent Staging Quality Gate / publish (push) Skipped
校正的选项卡片换成组件库(#110)。
题目、计分、扣点和保存没有改。明确说要校正的人仍然直接开始,没做完的仍然接着做。选项改用单选标签,确定程度改用圆点,其余按钮改用已有组件。动效只淡入。

自测:tsc 通过;frontend lint 0 error(122 条原有警告);校正前端测试 2291 条,通过 2270、失败 21,与改前名单一致;Python test_rectification_*.py 26 个文件退出码 0;next build 后 / 仍是 Static;首屏 JS gzip-9 644683,相对 1516ad56 记下的 642174 增加 0.39%。隐私标记测试通过。

Co-Authored-By: Grok (agent loop)
2026-10-25 06:29:38 +08:00

72 lines
5.8 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.
# PROGRESS · 组件库 K6 生时校正界面(2026-10-25)
工单 #110。分支 `codex/ui-kit-6-rectification-20261023`。基线 `origin/staging` `1516ad56ec66c5e80ef2a1f0ef4d82152b163699`(#109 报告、星历、登录和 #103 校正入口都在这个提交里)。只做任务书 **K6 生时校正界面**。K7 没收尾。没有重做校正入口、报告、登录、星盘页。
## 结论
校正的选项卡片换成了组件库的单选标签。题目、计分、扣点和保存都没改。明确说要校正的人仍然直接开始,没做完的仍然接着做。
## 做了什么
- 选项卡片(引导题和对话里的判断卡)改用 `ToggleGroup`,一次只选一个。原来的圆角、浅底描边、题干和选项原文都留着。不写「已选择」,卡片自己也不抢焦点。
- 「你对这个时间有多确定?」改用 `RadioGroup`,仍是三个圆点。「选一个最接近的范围」改用 `ToggleGroup`。
- 其余确认、暂停、重试、关闭、重新打开、采用,改用已有的 `Button`。关闭盘面仍是 Lucide 的叉,读屏名仍是「关闭盘面」。没有用字符当图标。
- 经历草稿的精度改用已有下拉。可见文字仍是「记得的精度」,触发按钮用 `aria-labelledby` 指到这句,方便读屏。对照 `frontend/docs/VOICE.md`:没有新文案,没有改题目。
- 题目出现时,若 Motion 在这次挂载之前已经载入,用已有的 `disclosure` 预设只淡入。减少动态效果时时长用预设里的 0.15 秒淡入,没有位移。没有新增循环。动效还没载入时不包一层,避免已经在屏幕上的内容再闪一次。
- 盘面探头仍用原来的 `createPortal` 挂到顶栏,没有改成弹窗。`rectification-agentic-chat.tsx` 因此仍留在白名单里。
- 白名单去掉 12 个校正文件,没有加长。测试里写死的基线名单没有改。
- 没有改 `page.tsx`,没有把整段校正拆出首页。`Home()` 的 useState / useRef 没有增长。没有给 `scripts/jyotish_api_server.py` 加方法。没有改 `.gitea/**`,没有改生产部署,没有改数据库,没有升级依赖。
移出白名单的 12 个文件:`birth-time-candidate-result.tsx`、`birth-time-choice-question.tsx`、`birth-time-evidence-draft-card.tsx`、`birth-time-guide-turn.tsx`、`birth-time-intake.tsx`、`birth-time-legacy-rectification.tsx`、`birth-time-rectification.tsx`、`rectification-board.tsx`、`rectification-choice-card.tsx`、`rectification-composer-reopen.tsx`、`rectification-range-delivery.tsx`、`rectification-segment-delivery.tsx`。
## 断言改动(原值 / 新值 / 原因)
| 位置 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `frontend/tests/rectification-agentic-entry.test.ts` 持久化选择题的选项 class | `class="birth-time-choice-option is-primary"` 整段恰好 4 次 | 同一串作为 class 的一部分出现 4 次 | K6 选项改用 ToggleGroup,组件库会合并上自己的类。选项文案和读屏名称不变 |
选中态源码 `data-selected={selectedKey === option.key ? "true" : "false"}` 没有改。卡片仍不得出现 `Check`、「已选择」和 `.focus(`。
## 自测
改前先在同一批测试上记过一笔。Windows 上本来就有 21 条失败。改完再跑,失败名单没有变长,通过的没有变少。
| 检查 | 命令 | 结果 |
| --- | --- | --- |
| 类型 | 仓库根 `frontend\node_modules\.bin\tsc --noEmit -p frontend` | 退出码 0 |
| 检查 | 在 `frontend` 下 `npm run lint` | 退出码 0。122 个警告,0 error。警告数和上一张记下的一样 |
| 校正前端 | 在 `frontend` 下 `node node_modules/tsx/dist/cli.mjs --test`,233 个 `rectification-*` / `birth-time-*` 测试文件加 `ui-kit-whitelist.test.ts` | 2291 条。通过 2270,失败 21,取消 0。与改前一致 |
| Python | `.venv\Scripts\python.exe -m pytest`,`tests/test_rectification_*.py` 共 26 个文件 | 退出码 0,进度到 100% |
| 构建 | 在 `frontend` 下 `npm run build` | 退出码 0。编译 10.3s,TypeScript 30.5s。79 个静态页。`/` 仍是 ○ Static。5 条既有 skill-package-registry 警告,没有改 |
| 首屏体积 | 首页 `index.html` 引用的 `/_next/static/**.js`,gzip-9 相加,不含 CSS | 基线是 #109 在 `1516ad56` 记下的 35 个文件、642174 字节。本张 37 个文件,缺失 0,644683 字节,多 2509(+0.39%)。±2% 大约是 629331 到 655017。没有把校正拆出首页 |
改前就失败、改完仍是这 21 条(没有新增):
1. public code never imports the internal dynamic choice contract(路径被拼成 `G:\G:\...`)
2. candidate scores stay out of the specified client ownership boundary(同上)
3. A · typed answer to a pending choice(BUG-1045,`getComputedStyle`)
4. A · collect denial with a next choice(BUG-1045)
5. B · failed choice submit 409(BUG-1046,`window is not defined`)
6. B · failed choice submit network error(BUG-1046)
7. B · typed answer that never reaches the server
8. D3 · live focus moves to the latest message(BUG-635)
9. D3 · persisted question with no asked turn
10. D3 · standalone block fallback
11. D4 · willContinue
12. D4 · send() settle
13. C · superseded focus(BUG-1135)
14. C · client guard(BUG-1135)
15. C · stem left in the body(BUG-1135)
16. Skill bump 10.0.32 keeps Cases pinned(BUG-621)
17. D3 · first stage line
18. D3 · turn.rejected
19. opening on the real surface · body only
20. opening on the real surface · body + stem
21. agent pins the dedicated rectification skill and its fixed version
没有跑前端全量 `npm test`,没有跑 Python 快速门,没有跑 `test:db`。没有为了让测试通过去改计分或落库。
## 环境缺口
- 没有登录态,没有模型凭据。没有在浏览器里走完一次校正。不写成通过。可照做的步骤在 `docs/testing/ui-kit-migration-20261023.md` 的「生时校正」一节。