iter(g314): 抽查清单补拖拽排序与瀑布流两段
This commit is contained in:
@@ -3212,6 +3212,15 @@
|
|||||||
"motivation": "disabled 只拦住了 dragstart 与键盘搬位,界面上一模一样:光标还是 grab、悬停照样变色,用户拖三次没反应只会以为组件坏了。",
|
"motivation": "disabled 只拦住了 dragstart 与键盘搬位,界面上一模一样:光标还是 grab、悬停照样变色,用户拖三次没反应只会以为组件坏了。",
|
||||||
"acceptance": "① 根节点按 disabled 切换 is-disabled 类与 aria-disabled(布尔与信号两种读法都响应);② 禁用时行光标回默认、文字退次级色、把手退到边框色、悬停与按下都不再给底色反馈;③ manifest 的 disabled 说明与手把手补一条,demo 增一个禁用实例;④ audit:visual / audit:contrast 全绿,npm run check 通过。",
|
"acceptance": "① 根节点按 disabled 切换 is-disabled 类与 aria-disabled(布尔与信号两种读法都响应);② 禁用时行光标回默认、文字退次级色、把手退到边框色、悬停与按下都不再给底色反馈;③ manifest 的 disabled 说明与手把手补一条,demo 增一个禁用实例;④ audit:visual / audit:contrast 全绿,npm run check 通过。",
|
||||||
"notes": ""
|
"notes": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "g314",
|
||||||
|
"domain": "tooling",
|
||||||
|
"status": "open",
|
||||||
|
"title": "视觉抽查清单补两段:sortableList / masonry",
|
||||||
|
"motivation": "清单停在十六段(g299 扩过一轮),之后新增的拖拽排序与瀑布流没有抽查位——这两个组件恰好是「靠观感判断做没做对」的类型(拖拽虚影、列边界断卡),照着清单过一遍时会被直接跳过。",
|
||||||
|
"acceptance": "① ITERATION.md 新增两段共 8 条,维度标签落在五类内;② ua.js 的 REQUIRED 从 16 扩到 18(条目下限由段数自动推到 54)、verify OK 文案同步;③ AGENTS 的清单描述同步为十八段 ≥54 条;④ npm run verify / check 全绿。",
|
||||||
|
"notes": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,6 +181,20 @@ qa/probe ──门禁通过──▶ qa/stable ──人工审阅──▶ main
|
|||||||
- [ ] 【过渡】进度变化时环长平滑过渡,不确定态转圈期间中心文字不抖
|
- [ ] 【过渡】进度变化时环长平滑过渡,不确定态转圈期间中心文字不抖
|
||||||
- [ ] 【暗色】暗色下轨道环仍可见(不被页面底吃掉),完成态语义色不刺眼
|
- [ ] 【暗色】暗色下轨道环仍可见(不被页面底吃掉),完成态语义色不刺眼
|
||||||
- [ ] 【焦点环】可聚焦(带 aria 进度语义)时焦点环贴住整个圆环外缘,不被容器裁掉
|
- [ ] 【焦点环】可聚焦(带 aria 进度语义)时焦点环贴住整个圆环外缘,不被容器裁掉
|
||||||
|
### sortableList
|
||||||
|
|
||||||
|
- [ ] 【边框】普通行 1px 描边与卡片描边同色同粗细;拖拽行换成虚线后视觉粗细不变
|
||||||
|
- [ ] 【阴影】拖拽行用 2 档投影抬升,且压过后面的行——投影不被相邻行的底色切掉半截
|
||||||
|
- [ ] 【过渡】悬停底色与把手转色的时长一致,放下后没有残留过渡在跑
|
||||||
|
- [ ] 【焦点环】Tab 进来时环贴住整行、不被容器裁切;禁用态下既不显示环也不给悬停反馈
|
||||||
|
- [ ] 【暗色】暗色下虚线 accent 边与 tint 底都能辨认,行内正文没有被淡底吃掉
|
||||||
|
|
||||||
|
### masonry
|
||||||
|
|
||||||
|
- [ ] 【边框】卡片不被列边界拆成两截,同一列上下两张的圆角都完整
|
||||||
|
- [ ] 【过渡】窗口变宽加列时卡片按序重排,没有「半张卡片」跳到隔壁列
|
||||||
|
- [ ] 【暗色】暗色下列间留白与卡片底能区分,横向不糊成一片
|
||||||
|
|
||||||
## 人工介入点
|
## 人工介入点
|
||||||
|
|
||||||
- 审阅 `qa/stable` 的提交,确认质量后合入 `main`(PR 或本地 merge 后推送)。
|
- 审阅 `qa/stable` 的提交,确认质量后合入 `main`(PR 或本地 merge 后推送)。
|
||||||
|
|||||||
@@ -1510,10 +1510,10 @@ function checkPropsDoc(pkg, comps) {
|
|||||||
return issues;
|
return issues;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** 视觉回归抽查清单校验:ITERATION.md 的清单必须十六个代表组件齐全、每条带合法维度标签、条目数达标 ***/
|
/*** 视觉回归抽查清单校验:ITERATION.md 的清单必须十八个代表组件齐全、每条带合法维度标签、条目数达标 ***/
|
||||||
function checkVisualChecklist() {
|
function checkVisualChecklist() {
|
||||||
const DIMS = ['边框', '阴影', '过渡', '焦点环', '暗色']; // 五个必覆盖维度
|
const DIMS = ['边框', '阴影', '过渡', '焦点环', '暗色']; // 五个必覆盖维度
|
||||||
const REQUIRED = ['button', 'textField', 'select', 'modal', 'dataTable', 'toast', 'layout', 'jsonViewer', 'diffView', 'codeBlock', 'signaturePad', 'heatmap', 'sparkline', 'commandPalette', 'noticeBar', 'progressRing']; // 十六个代表组件:高频六个 + 容器/数据展示/表单录入三类 + 后期新增的浮层类(命令面板)与反馈类(通知条、环形进度)
|
const REQUIRED = ['button', 'textField', 'select', 'modal', 'dataTable', 'toast', 'layout', 'jsonViewer', 'diffView', 'codeBlock', 'signaturePad', 'heatmap', 'sparkline', 'commandPalette', 'noticeBar', 'progressRing', 'sortableList', 'masonry']; // 十八个代表组件:高频六个 + 容器/数据展示/表单录入三类 + 后期新增的浮层类(命令面板)与反馈类(通知条、环形进度)+ 交互类(拖拽排序)与布局类(瀑布流)
|
||||||
const MIN_PER_GROUP = 3; // 每个组件至少三条可勾选要点
|
const MIN_PER_GROUP = 3; // 每个组件至少三条可勾选要点
|
||||||
const MIN_TOTAL = REQUIRED.length * MIN_PER_GROUP; // 总条目下限由组件数推导:加抽查位不用再手改这个数
|
const MIN_TOTAL = REQUIRED.length * MIN_PER_GROUP; // 总条目下限由组件数推导:加抽查位不用再手改这个数
|
||||||
const file = path.join(ROOT, 'ITERATION.md');
|
const file = path.join(ROOT, 'ITERATION.md');
|
||||||
@@ -1630,7 +1630,7 @@ function cmdVerify() {
|
|||||||
console.error(`${issues.length} violation(s)`);
|
console.error(`${issues.length} violation(s)`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
console.log('verify OK (manifest ↔ docs ↔ demo 一致,文档 props ↔ 入参接口双向一致,皮肤无硬编码颜色与未定义令牌、暗色令牌齐全、tokens.json ↔ tokens.css 名字与值双源一致、@keyframes 无复制粘贴的重复帧、滚动容器全在细条规则内,README 组件清单与分组同步,backlog ↔ 留痕一致(编号严格递增、无重复 id、留痕时间线单调且带 +08:00),组合配方结构完整,MCP 工具清单三处一致,视觉回归抽查清单十六组件 × 五维度齐全)');
|
console.log('verify OK (manifest ↔ docs ↔ demo 一致,文档 props ↔ 入参接口双向一致,皮肤无硬编码颜色与未定义令牌、暗色令牌齐全、tokens.json ↔ tokens.css 名字与值双源一致、@keyframes 无复制粘贴的重复帧、滚动容器全在细条规则内,README 组件清单与分组同步,backlog ↔ 留痕一致(编号严格递增、无重复 id、留痕时间线单调且带 +08:00),组合配方结构完整,MCP 工具清单三处一致,视觉回归抽查清单十八组件 × 五维度齐全)');
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** 校验 git 提交信息是否符合 COMMITTING.md 规范(参数为 message 文件路径或直接 message 文本),违规退出码 1 ***/
|
/*** 校验 git 提交信息是否符合 COMMITTING.md 规范(参数为 message 文件路径或直接 message 文本),违规退出码 1 ***/
|
||||||
|
|||||||
Reference in New Issue
Block a user