Files
ycode/docs/协作/B02-验收-01.md
T

76 lines
7.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.
# B02 验收 01:推荐技能卡片与底部入口
日期:2026-10-21(Asia/Shanghai)。对应 [需求](B02-需求.md) 和 [交付 01](B02-交付-01.md),固定受测代码 **`14a1354c95a2081fb32e36917a1b05873b2a662b`**。
**结论:本次已安装推荐卡片及底部重复入口的功能修复通过;Windows 受控 UI 62 项、DOM 45 项通过。原仓库 UI 命令在 hover selector 上失败,测试可移植性需补;原版完整像素与真实宿主安装/使用端到端未验证,不将 B02 全量关闭。**
## 1. 固定版本与隔离
在新建 `b02-accept-01` managed worktree 检出指定提交,独立执行 npm ci、Electron 安装脚本和完整构建。起止 Git 受控文件均无修改;未使用正在运行的用户 dev,也未复用上一轮固定验收检出来替换用户窗口。
Windows 11 IoT 企业版 LTSC 64 位,10.0.26100;Node 24.21.0、npm 11.19.0、Electron 37.10.3、独立 `.tmp/b02-dom` 的 jsdom 30.1.3。所有 UI 夹具自建 userData,受控 IPC、推荐目录和技能列表,不下载真实技能、不调用模型或修改真实用户技能。
本轮之后的 `a839d23` 测试清理、B03 需求及其 merge 没有被混入该 SHA 的产品验收。B03 没有交付,不能据此认定完全访问问题已修。
## 2. AC 结果
| AC | 结论 | 已验证范围 |
| --- | --- | --- |
| AC5.1 current 动作与卡壳 | 通过 | 安装后 `sm-card--installed`、原动作槽 `sm-use-btn` 出现,Plus/添加按钮不渲染;不再保留卡片下方重复使用动作 |
| AC5.2 已恢复样式 | 通过已测样式;原版完整对照未验证 | 24×24 动作槽、16×16 SVG,默认透明、浅深 hover 颜色变化、可聚焦与尺寸稳定;720px 窄窗无溢出。未证明当前 WorkBuddy 同状态逐像素一致 |
| AC5.3 状态刷新 | 通过受控宿主场景 | 安装、重开、外部安装/卸载/旧 progress 等现有回归通过;不要求重启 |
| AC5.4 身份与异常 | 通过指定 DOM/受控状态矩阵 | 禁用、仅模型调用、损坏、不同来源/版本、修改与 workspace 不冒充 current;没有改身份/安装后端 |
| AC5.5 替换与重复确认 | 通过受控场景 | 安装/更新/替换/修复动作区分;确认、取消及 current 防重复回归通过,后端覆盖保护没有放宽 |
| AC5.6 使用 | 通过组件与 callback;完整宿主端到端未验证 | current 使用回调、禁用先启用/启用失败,以及卡片动作去重通过;成功 toast 使用动作保留。没有实际下载后进入主应用新草稿并验证不发送的完整链路 |
| AC6.1~6.4 footer/导航 | 通过指定场景 | footer DOM/专用 props 与样式移除;顶部已安装计数和切换保留;错误/空目录及重试恢复通过,旧测试不再依赖 footer |
已人工查看:[安装后浅色](evidence/B02-review-01/installed-light.png)、[深色使用 hover](evidence/B02-review-01/installed-dark-hover.png)、[窄窗](evidence/B02-review-01/installed-narrow.png)。右上顶部“已安装(1)”与安装成功 toast 是保留的导航/瞬时使用动作,不是用户要求移除的底部永久入口。
## 3. T02:原 UI 入口的 hover 选择器断言不可用
原命令 `npm run test:recommended-skills:ui` 本轮实际退出 **1**,停在:
```text
light pointer enters use action: false
```
不能将原命令记为通过,也不能仅凭这条失败认定使用按钮不可点击。
独立诊断发现:
- 原生鼠标输入后的按钮背景已从透明变为 `rgb(230, 230, 230)`;命中测试返回按钮内部 SVG,pointer-events 为 auto。
- `button.matches(':hover')` 返回 false,`document.querySelectorAll(':hover')` 为空。
- 同页添加完全独立的普通 button 对照后,鼠标输入命中该 button,CSS `:hover` 背景准确变化为 `rgb(50, 60, 70)`,但其 `matches(':hover')` 同为 false。这是本环境/事件与 selector 观察边界,不能归为仅 YCode 组件特有问题。
- 显示/聚焦窗口及独立 CDP Input 鼠标事件也复现相同 selector 结果;没有通过更换产品源码消除。
[原始失败](evidence/B02-review-01/original-ui-runner.txt)、[对照结果](evidence/B02-review-01/hover-control.json)、[卡片命中与样式诊断](evidence/B02-review-01/hover-diagnostics.json)。
验收端仅在 `.tmp` 的独立探针中,把这条 predicate 换成**原生 `pointerenter` 事件 `isTrusted=true`、`pointerType=mouse`**,保留其他安装、错误/重试、导航、浅深色、实际背景变化、尺寸、焦点和窄窗断言,没有修改产品或正式测试。此入口完整执行 **62 项通过**;浅色 hover 为 `rgb(230, 230, 230)`,深色为 `color(srgb 1 1 1 / 0.08)`。
开发端应修正式 UI 入口的可移植性/诊断,不删除真实 hover 验收目标或改为仅检查 class。focus 本轮验证了实际 activeElement 与槽位;未额外证明完整原生键盘导航或屏幕阅读器行为。
证据:[独立探针](evidence/B02-review-01/pointer-ui-probe.mjs)、[62 项与计算样式](evidence/B02-review-01/native-report.json)、[运行日志](evidence/B02-review-01/pointer-ui-runner.txt)。重跑时在固定 SHA 安装依赖,将该探针复制成 `.tmp/b02-acceptance/recommended-skills-ui-pointer.mjs` 后执行;它的 Electron 子进程使用该固定路径,自建临时数据。
## 4. 全部命令与证明范围
| 命令 | 结果 |
| --- | --- |
| `npm ci --legacy-peer-deps --no-audit --no-fund`、Electron 安装、`npm run build` | 独立 Windows 通过,未改依赖/锁文件 |
| `npm run test:recommended-skills:dom`,设置独立 DOM 模块 | 45 项通过,是真实 React DOM/受控宿主,不是布局或真实安装 |
| `npm run test:alignment`,设置 DOM 模块 | 通过;SDK 部分为 mock,不作真实授权结论 |
| `npm run test:recommended-skills` | 退出 0,但 real-package 缺失而 SKIP;紧随的通用 PASS 不能解释为真实发布包验证通过 |
| `npm run test:composer-capabilities` | 退出 0 |
| 原仓库 `test:recommended-skills:ui` | **退出 1**,T02;独立 pointer 入口另行 62 项通过,二者分别记账 |
| `check:tokens` | 退出 1,同六个既有文件;本批 relevant 裸 px 计数下降,没有刷新 baseline |
| `test:fold-summary` | 退出 1,既存 Windows CRLF 摘要问题;未修改生成文件/manifest |
证据:[构建](evidence/B02-review-01/build.txt)、[DOM 报告](evidence/B02-review-01/dom-report.json)、[alignment](evidence/B02-review-01/alignment.txt)、[其他结果](evidence/B02-review-01/test-results.json)、[后端及真实包 SKIP](evidence/B02-review-01/recommended-backend.txt)、[token](evidence/B02-review-01/token-check.txt)。
UI 日志中的“下载失败”“安装取消”“目录不可用”是夹具刻意注入并检查恢复的场景,不是本次真实网络故障;没有发起网络技能安装。
## 5. 回传
本次用户指出的“已安装仍保留添加按钮”和“底部查看已安装技能”已获得独立修复证据,不要求重复实现。开发端补 T02 正式自动化入口;完整原版对照、宿主安装/使用端到端、键盘/辅助技术边界继续列为未验证,不以组件 62 项冒充全链路通过。
本验收只提交文档、日志、截图与独立验收探针,不修改产品/正式测试/依赖/配置。新需求 B03 和后续测试清理按各自记录处理。本文推送成功后,推送窗口交回开发端。