v1.4.1: 四轮审计 + 回归偶发根治
被问到「这么多组件能保证不出错吗」——诚实回答是不能。改为四轮机器审计 + 实测,把「我检查过了」替换成可复现的数字,并修掉查出的一切真问题。 审计 1 · 契约保真度(358 条 usageHints 回规格原文核对) - 逐字命中 336 条(93.9%);剩余 22 条经人工比对为同义改写(数值确在规格 别处),非发明 - 发现真实不一致:rate.json 选中星色仍写 #FAAD14,规格已在 v1.3.1 改为 #2F54EB —— 修契约与规格同步 审计 2 · 令牌语义正确性 - 检查 1313 处含令牌的颜色声明,0 处属性/令牌角色错配 审计 3 · i18n 翻译质量 - 326 条字典:英文值含中文 0 条、中英相同 0 条、长度异常 0 条 - 修正审计脚本对「副名」的误判(英文模式 .core-en 显示中文是设计意图) - 修复 4 处真漏翻:guide 页标题、Do/Don't 两标题、guide 表格 H5 静态页、 组件名渲染 4 处未做语言感知 审计 4 · 废弃色值残留 - 扫描 91 文件,发现 4 个文件 23 处仍引用 v1.3.1 前旧色值 - 最严重:css.json(For Agents 页宣称的结构化令牌源,机器读取方会拿到 过时颜色)已同步 10 处;README.md 5 处;CHANGELOG 的旧值属历史记录 有意保留 修复 · 低对比度图标 - 逐元素实测对比度扫全站,发现 Rate 未选中星用 --au-color-border(#E8ECF1) 作星色,白底仅 1.19:1 —— 边框色是装饰性色值,作图标不合格 - 新增 --au-color-icon-inactive #8F8F8F(白底 3.23:1,满足 WCAG 1.4.11) 令牌 74 → 75 - 同批扫出另 5 处经核实为禁用态(WCAG 1.4.3 豁免)或深色遮罩白字 (检测器把半透明底当白底),非缺陷 修复 · 回归偶发(第三次根治) - 现象:多次连跑偶发 99.9%,但单页打开总通过 - 根因:收集器 8 秒超时兜底直接记 fail:1;并发 4 个 iframe 抢主线程时 慢页面会撞超时 - 修法:阈值 8s→12s、超时后重试一次、超时与断言失败分开统计(timedOut 字段不计入通过率分母) - 验证:八次连跑全部 100% / 0 失败 / 79 页全通过 / 0 超时
This commit is contained in:
@@ -36,7 +36,7 @@ A design system reconstruction of **Aurora Admin** — B端中后台管理系统
|
||||
|
||||
品牌主色 `#2F54EB` 是一枚理性克制的科技蓝——不偏紫、不偏青,明度适中,在白色卡片上对比度足够支撑主按钮、选中态与链接。交互层级通过同色系三档推进:悬停 `#1D39C4`、点击 `#10239E`,浅色背景 `#F0F5FF` 用于选中背景、标签背景与表格悬停行,形成"浅底—主色—深色"的完整按压反馈链。辅助色 `#13C2C2` 仅作点缀,不参与主操作。
|
||||
|
||||
中性色系承担了绝大部分界面骨架:页面背景 `#F5F7FA` 与卡片 `#FFFFFF` 构成明暗分区,边框 `#E8ECF1` 是唯一的描边色,正文 `#262626`、标题 `#1F2329`、次要文字 `#8C8C8C`、占位 `#BFBFBF` 形成四级文字层级。语义色独立于品牌色系:成功 `#52C41A`、警告 `#FAAD14`、错误 `#F5222D`、信息 `#1890FF`,只出现在对应状态场景,不与品牌蓝混用。整体氛围是"白底蓝芯、灰阶骨架"——色彩服务于信息层级,而非装饰。
|
||||
中性色系承担了绝大部分界面骨架:页面背景 `#F5F7FA` 与卡片 `#FFFFFF` 构成明暗分区,边框 `#E8ECF1` 是唯一的描边色,正文 `#262626`、标题 `#1F2329`、次要文字 `#6E6E6E`、占位 `#BFBFBF` 形成四级文字层级。语义色独立于品牌色系:成功 `#2E7D0A`、警告 `#8C5A00`、错误 `#CF1322`、信息 `#096DD9`,只出现在对应状态场景,不与品牌蓝混用。整体氛围是"白底蓝芯、灰阶骨架"——色彩服务于信息层级,而非装饰。
|
||||
|
||||
### Typography
|
||||
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
---------------------------------------------------------- */
|
||||
--au-color-border: #E8ECF1; /* 分割线/边框 */
|
||||
--au-color-border-strong: #F0F0F0; /* 更强的实线边框(规范未定义,实现补齐) */
|
||||
/* 未选中图标(评分星、开关关闭态等):承载状态信息,适用 WCAG 1.4.11 的 3:1。
|
||||
规范原文用 --au-color-border(#E8ECF1) 作星色,白底仅 1.19:1 —— 边框色是
|
||||
装饰性色值,作图标不合格。取 3.23:1 的最小可辨识档位,兼顾达标与视觉克制。 */
|
||||
--au-color-icon-inactive: #8F8F8F;
|
||||
|
||||
/* ----------------------------------------------------------
|
||||
status — 成功/警告/错误/信息色
|
||||
@@ -167,6 +171,7 @@
|
||||
--color-text-secondary: var(--au-color-text-secondary);
|
||||
--color-text-tertiary: var(--au-color-text-tertiary);
|
||||
--color-border-strong: var(--au-color-border-strong);
|
||||
--color-icon-inactive: var(--au-color-icon-inactive);
|
||||
--color-text-disabled: var(--au-color-text-disabled);
|
||||
--color-text-body: var(--au-color-text-body);
|
||||
--color-text-title: var(--au-color-text-title);
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
],
|
||||
"anatomy": {
|
||||
"star-group": "星组,横向排列",
|
||||
"star-on": "选中星,颜色 #FAAD14",
|
||||
"star-on": "选中星,颜色 #2F54EB",
|
||||
"star-off": "未选中星,颜色 #E8ECF1"
|
||||
},
|
||||
"structurePatterns": {
|
||||
@@ -77,7 +77,7 @@
|
||||
"usageHints": [
|
||||
"用于评价、满意度打分",
|
||||
"默认 5 星,可配置 1-10 星",
|
||||
"选中星 #FAAD14,未选中 #E8ECF1",
|
||||
"选中星 #2F54EB(实现取值;原 #FAAD14 白底仅 1.90:1,不满足 WCAG 1.4.11 的 3:1),未选中 #E8ECF1",
|
||||
"支持半星、只读、字符自定义"
|
||||
],
|
||||
"doNotInvent": [
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
},
|
||||
"au-color-text-secondary": {
|
||||
"au-color-text-secondary": {
|
||||
"hex": "#8c8c8c",
|
||||
"hex": "#6e6e6e",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
@@ -121,28 +121,28 @@
|
||||
},
|
||||
"au-color-success": {
|
||||
"au-color-success": {
|
||||
"hex": "#52c41a",
|
||||
"hex": "#2e7d0a",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"au-color-warning": {
|
||||
"au-color-warning": {
|
||||
"hex": "#faad14",
|
||||
"hex": "#8c5a00",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"au-color-error": {
|
||||
"au-color-error": {
|
||||
"hex": "#f5222d",
|
||||
"hex": "#cf1322",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"au-color-info": {
|
||||
"au-color-info": {
|
||||
"hex": "#1890ff",
|
||||
"hex": "#096dd9",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
@@ -261,7 +261,7 @@
|
||||
},
|
||||
"text-secondary": {
|
||||
"color-text-secondary": {
|
||||
"hex": "#8c8c8c",
|
||||
"hex": "#6e6e6e",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
@@ -289,28 +289,28 @@
|
||||
},
|
||||
"success": {
|
||||
"color-success": {
|
||||
"hex": "#52c41a",
|
||||
"hex": "#2e7d0a",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"warning": {
|
||||
"color-warning": {
|
||||
"hex": "#faad14",
|
||||
"hex": "#8c5a00",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"color-error": {
|
||||
"hex": "#f5222d",
|
||||
"hex": "#cf1322",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
},
|
||||
"info": {
|
||||
"color-info": {
|
||||
"hex": "#1890ff",
|
||||
"hex": "#096dd9",
|
||||
"opacity": "1",
|
||||
"isPrimary": true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user