@qilitt-mickey/vue3-temp-skill 1.1.74 → 1.1.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +137 -137
- package/mapping/basic/color.json +35 -35
- package/mapping/basic/radius.json +17 -17
- package/mapping/basic/semantic-values.json +72 -72
- package/mapping/basic/spacing.json +21 -21
- package/mapping/basic/typography.json +21 -21
- package/mapping/component/button.json +90 -90
- package/mapping/component/card.json +31 -31
- package/mapping/component/input.json +42 -42
- package/mapping/component/overlay.json +79 -79
- package/mapping/component/pagination.json +34 -34
- package/mapping/component/table.json +42 -42
- package/mapping/component/tag.json +48 -48
- package/mapping/layout/breakpoint.json +20 -20
- package/mapping/scenes/admin/content.json +497 -494
- package/mapping/scenes/admin/layout.json +577 -574
- package/package.json +1 -1
- package/parser/fixtures/changeset-legacy.json +11 -11
- package/parser/fixtures/changeset-neg1.json +8 -8
- package/parser/fixtures/changeset-neg2.json +10 -10
- package/parser/fixtures/changeset-neg3.json +22 -22
- package/parser/fixtures/changeset-neg5-g8-stub.json +26 -26
- package/parser/fixtures/changeset-neg7-g10-dims.json +57 -57
- package/parser/fixtures/changeset-neg9-g6-token-chain.json +34 -0
- package/parser/fixtures/changeset-pos-g6-token-chain.json +35 -0
- package/parser/fixtures/changeset-pos-theme-nometa.json +260 -260
- package/parser/fixtures/changeset-registry-gap.json +29 -29
- package/parser/fixtures/fake-project/src/styles/app.scss +5 -5
- package/parser/fixtures/fake-project/src/views/list.vue +13 -13
- package/parser/fixtures/registry-bad.json +11 -11
- package/parser/fixtures/registry-g6-token-chain.json +10 -0
- package/parser/fixtures/verify/actual-clean.json +35 -35
- package/parser/fixtures/verify/actual.json +33 -33
- package/parser/fixtures/verify/mockup-g6-content.html +12 -0
- package/parser/fixtures/verify/mockup-neutral.html +26 -26
- package/parser/fixtures/verify/mockup-nometa.html +26 -26
- package/parser/fixtures/verify/snapshot-latest.json +102 -102
- package/parser/index.js +32 -1
- package/parser/loader.js +66 -66
- package/parser/validator.js +206 -206
- package/references/auth-pages.md +217 -217
- package/references/base-code-dict.md +56 -56
- package/references/data-compare.md +509 -509
- package/references/data-writeback.md +124 -124
- package/references/design-apply.md +167 -167
- package/references/detail-page.md +119 -119
- package/references/download-export.md +97 -97
- package/references/feedback-loading.md +104 -104
- package/references/feedback-ui.md +134 -134
- package/references/i18n-localization.md +230 -230
- package/references/layout-theme.md +2 -0
- package/references/project-inventory.md +438 -438
- package/references/rich-text.md +94 -94
- package/references/seamless-scroll.md +47 -47
- package/references/steps/step0-preflight.md +58 -58
- package/references/steps/step1-match.md +5 -2
- package/references/steps/step3-style.md +38 -33
- package/references/steps/step3b-shell.md +2 -0
- package/references/steps/step3c-priority.md +26 -26
- package/references/steps/step4-l3.md +14 -14
- package/references/steps/step5-gates.md +65 -63
- package/references/steps/step6-verify.md +77 -77
- package/references/verify-captcha.md +119 -119
- package/scripts/check.mjs +24 -0
- package/scripts/design-audit.mjs +208 -3
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$comment": "verify 夹具 · 项目实测(clean 全绿对照,与 oracle.json + actual.json 三件配套):全部属性命中、absent 点位已收口(display:none)、states 状态期望命中(disabled 态 opacity 0.4 由浏览器脚本触发后抽取)、无孤儿点位(G15 对账通过)、申报残差点位允许与效果图不同。供 U 步正例(exit 0)与 V 步快照基线段使用。",
|
|
3
|
-
"sids": {
|
|
4
|
-
"admin.content.table.header_cell": {
|
|
5
|
-
"padding": "16px",
|
|
6
|
-
"font-weight": "500",
|
|
7
|
-
"text-align": "left",
|
|
8
|
-
"background-color": "#fafafa",
|
|
9
|
-
"white-space": "nowrap"
|
|
10
|
-
},
|
|
11
|
-
"admin.content.table.cell_amount": {
|
|
12
|
-
"text-align": "right"
|
|
13
|
-
},
|
|
14
|
-
"admin.layout.tabs.item_active": {
|
|
15
|
-
"font-weight": "500",
|
|
16
|
-
"color": "#245bff"
|
|
17
|
-
},
|
|
18
|
-
"admin.layout.header.user_profile": {
|
|
19
|
-
"gap": "12px"
|
|
20
|
-
},
|
|
21
|
-
"admin.layout.header.breadcrumb": {
|
|
22
|
-
"display": "none"
|
|
23
|
-
},
|
|
24
|
-
"admin.layout.sidebar.logo_area": {
|
|
25
|
-
"background-color": "#10214d"
|
|
26
|
-
},
|
|
27
|
-
"$note": "logo_area 背景与效果图期望 #0B1A3C 不同 = 已申报固有残差(oracle.residual_accepted 命中后不计缺口,U 步正例演示)"
|
|
28
|
-
},
|
|
29
|
-
"states": {
|
|
30
|
-
"admin.content.list.batch_delete@disabled": {
|
|
31
|
-
"opacity": "0.4",
|
|
32
|
-
"cursor": "not-allowed"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$comment": "verify 夹具 · 项目实测(clean 全绿对照,与 oracle.json + actual.json 三件配套):全部属性命中、absent 点位已收口(display:none)、states 状态期望命中(disabled 态 opacity 0.4 由浏览器脚本触发后抽取)、无孤儿点位(G15 对账通过)、申报残差点位允许与效果图不同。供 U 步正例(exit 0)与 V 步快照基线段使用。",
|
|
3
|
+
"sids": {
|
|
4
|
+
"admin.content.table.header_cell": {
|
|
5
|
+
"padding": "16px",
|
|
6
|
+
"font-weight": "500",
|
|
7
|
+
"text-align": "left",
|
|
8
|
+
"background-color": "#fafafa",
|
|
9
|
+
"white-space": "nowrap"
|
|
10
|
+
},
|
|
11
|
+
"admin.content.table.cell_amount": {
|
|
12
|
+
"text-align": "right"
|
|
13
|
+
},
|
|
14
|
+
"admin.layout.tabs.item_active": {
|
|
15
|
+
"font-weight": "500",
|
|
16
|
+
"color": "#245bff"
|
|
17
|
+
},
|
|
18
|
+
"admin.layout.header.user_profile": {
|
|
19
|
+
"gap": "12px"
|
|
20
|
+
},
|
|
21
|
+
"admin.layout.header.breadcrumb": {
|
|
22
|
+
"display": "none"
|
|
23
|
+
},
|
|
24
|
+
"admin.layout.sidebar.logo_area": {
|
|
25
|
+
"background-color": "#10214d"
|
|
26
|
+
},
|
|
27
|
+
"$note": "logo_area 背景与效果图期望 #0B1A3C 不同 = 已申报固有残差(oracle.residual_accepted 命中后不计缺口,U 步正例演示)"
|
|
28
|
+
},
|
|
29
|
+
"states": {
|
|
30
|
+
"admin.content.list.batch_delete@disabled": {
|
|
31
|
+
"opacity": "0.4",
|
|
32
|
+
"cursor": "not-allowed"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$comment": "verify 夹具 · 项目实测(故意缺口全家桶,用于 L 步回归):header_cell 字重被压 + 对齐语境错位 + white-space 未取到;cell_amount 选择器落空;user_profile gap 语境错位;breadcrumb 仍渲染可见(G12 存在性缺口);batch_delete@disabled 状态值与期望不符(G14 状态缺口——静态快照取的是激活态 opacity 1,证明状态断言闸必要性);extra_banner 为 oracle 全集未申报的孤儿点位(G15 孤儿缺口——效果图没有、验收范围外、页面却渲染)。logo_area 命中 = L 夹具不制造残差缺口、保持归因计数稳定。",
|
|
3
|
-
"sids": {
|
|
4
|
-
"admin.content.table.header_cell": {
|
|
5
|
-
"padding": "16px",
|
|
6
|
-
"font-weight": "400",
|
|
7
|
-
"text-align": "center",
|
|
8
|
-
"background-color": "#fafafa"
|
|
9
|
-
},
|
|
10
|
-
"admin.layout.tabs.item_active": {
|
|
11
|
-
"font-weight": "500",
|
|
12
|
-
"color": "#245bff"
|
|
13
|
-
},
|
|
14
|
-
"admin.layout.header.user_profile": {
|
|
15
|
-
"gap": "8px"
|
|
16
|
-
},
|
|
17
|
-
"admin.layout.header.breadcrumb": {
|
|
18
|
-
"display": "flex"
|
|
19
|
-
},
|
|
20
|
-
"admin.layout.sidebar.logo_area": {
|
|
21
|
-
"background-color": "#0b1a3c"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"states": {
|
|
25
|
-
"admin.content.list.batch_delete@disabled": {
|
|
26
|
-
"opacity": "1",
|
|
27
|
-
"cursor": "default"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"extra_banner": {
|
|
31
|
-
"display": "flex"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$comment": "verify 夹具 · 项目实测(故意缺口全家桶,用于 L 步回归):header_cell 字重被压 + 对齐语境错位 + white-space 未取到;cell_amount 选择器落空;user_profile gap 语境错位;breadcrumb 仍渲染可见(G12 存在性缺口);batch_delete@disabled 状态值与期望不符(G14 状态缺口——静态快照取的是激活态 opacity 1,证明状态断言闸必要性);extra_banner 为 oracle 全集未申报的孤儿点位(G15 孤儿缺口——效果图没有、验收范围外、页面却渲染)。logo_area 命中 = L 夹具不制造残差缺口、保持归因计数稳定。",
|
|
3
|
+
"sids": {
|
|
4
|
+
"admin.content.table.header_cell": {
|
|
5
|
+
"padding": "16px",
|
|
6
|
+
"font-weight": "400",
|
|
7
|
+
"text-align": "center",
|
|
8
|
+
"background-color": "#fafafa"
|
|
9
|
+
},
|
|
10
|
+
"admin.layout.tabs.item_active": {
|
|
11
|
+
"font-weight": "500",
|
|
12
|
+
"color": "#245bff"
|
|
13
|
+
},
|
|
14
|
+
"admin.layout.header.user_profile": {
|
|
15
|
+
"gap": "8px"
|
|
16
|
+
},
|
|
17
|
+
"admin.layout.header.breadcrumb": {
|
|
18
|
+
"display": "flex"
|
|
19
|
+
},
|
|
20
|
+
"admin.layout.sidebar.logo_area": {
|
|
21
|
+
"background-color": "#0b1a3c"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"states": {
|
|
25
|
+
"admin.content.list.batch_delete@disabled": {
|
|
26
|
+
"opacity": "1",
|
|
27
|
+
"cursor": "default"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"extra_banner": {
|
|
31
|
+
"display": "flex"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!-- G6 层间令牌链对账闸回归专用迷你效果图:只为 changeset-neg9/pos-g6-token-chain.json 提供
|
|
3
|
+
可读、可标注的基线实物(data-sid=admin.layout.content),隔离出唯一闸点。不是真实设计交付件。 -->
|
|
4
|
+
<html lang="zh-CN" data-mockup-theme="钴蓝">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="UTF-8">
|
|
7
|
+
<title>G6 回归夹具 · 内容区</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="app-content" data-sid="admin.layout.content" style="padding: 24px; background: #F5F5F5;"></div>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN" data-mockup-theme="钴蓝" data-mockup-scene="admin" data-mockup-page-type="list">
|
|
3
|
-
<head><meta charset="UTF-8"><title>回归夹具·列表页基线图(中性命名)</title></head>
|
|
4
|
-
<body>
|
|
5
|
-
<div data-sid="admin.layout.sidebar"></div>
|
|
6
|
-
<div data-sid="admin.layout.sidebar.logo_area"></div>
|
|
7
|
-
<div data-sid="admin.layout.sidebar.menu"></div>
|
|
8
|
-
<div data-sid="admin.layout.header"></div>
|
|
9
|
-
<div data-sid="admin.layout.header.lang_switch"></div>
|
|
10
|
-
<div data-sid="admin.layout.header.user_profile"></div>
|
|
11
|
-
<div data-sid="admin.layout.tabs"></div>
|
|
12
|
-
<div data-sid="admin.content.page_header"></div>
|
|
13
|
-
<div data-sid="admin.content.filter_area"></div>
|
|
14
|
-
<div data-sid="admin.content.table.operation_bar"></div>
|
|
15
|
-
<div data-sid="admin.content.table.operation_column"></div>
|
|
16
|
-
<div data-sid="admin.content.table.area"></div>
|
|
17
|
-
<div data-sid="admin.content.table.header_cell"></div>
|
|
18
|
-
<div data-sid="admin.content.table.cell"></div>
|
|
19
|
-
<div data-sid="admin.content.table.cell_status"></div>
|
|
20
|
-
<div data-sid="admin.content.table.cell_amount"></div>
|
|
21
|
-
<div data-sid="admin.content.table.cell_thumb"></div>
|
|
22
|
-
<div data-sid="component.tag.status"></div>
|
|
23
|
-
<div data-sid="component.button.danger"></div>
|
|
24
|
-
<div data-sid="admin.content.pagination"></div>
|
|
25
|
-
</body>
|
|
26
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN" data-mockup-theme="钴蓝" data-mockup-scene="admin" data-mockup-page-type="list">
|
|
3
|
+
<head><meta charset="UTF-8"><title>回归夹具·列表页基线图(中性命名)</title></head>
|
|
4
|
+
<body>
|
|
5
|
+
<div data-sid="admin.layout.sidebar"></div>
|
|
6
|
+
<div data-sid="admin.layout.sidebar.logo_area"></div>
|
|
7
|
+
<div data-sid="admin.layout.sidebar.menu"></div>
|
|
8
|
+
<div data-sid="admin.layout.header"></div>
|
|
9
|
+
<div data-sid="admin.layout.header.lang_switch"></div>
|
|
10
|
+
<div data-sid="admin.layout.header.user_profile"></div>
|
|
11
|
+
<div data-sid="admin.layout.tabs"></div>
|
|
12
|
+
<div data-sid="admin.content.page_header"></div>
|
|
13
|
+
<div data-sid="admin.content.filter_area"></div>
|
|
14
|
+
<div data-sid="admin.content.table.operation_bar"></div>
|
|
15
|
+
<div data-sid="admin.content.table.operation_column"></div>
|
|
16
|
+
<div data-sid="admin.content.table.area"></div>
|
|
17
|
+
<div data-sid="admin.content.table.header_cell"></div>
|
|
18
|
+
<div data-sid="admin.content.table.cell"></div>
|
|
19
|
+
<div data-sid="admin.content.table.cell_status"></div>
|
|
20
|
+
<div data-sid="admin.content.table.cell_amount"></div>
|
|
21
|
+
<div data-sid="admin.content.table.cell_thumb"></div>
|
|
22
|
+
<div data-sid="component.tag.status"></div>
|
|
23
|
+
<div data-sid="component.button.danger"></div>
|
|
24
|
+
<div data-sid="admin.content.pagination"></div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head><meta charset="UTF-8"><title>回归夹具·列表页基线图(中性命名 · 无身份元数据)</title></head>
|
|
4
|
-
<body>
|
|
5
|
-
<div data-sid="admin.layout.sidebar"></div>
|
|
6
|
-
<div data-sid="admin.layout.sidebar.logo_area"></div>
|
|
7
|
-
<div data-sid="admin.layout.sidebar.menu"></div>
|
|
8
|
-
<div data-sid="admin.layout.header"></div>
|
|
9
|
-
<div data-sid="admin.layout.header.lang_switch"></div>
|
|
10
|
-
<div data-sid="admin.layout.header.user_profile"></div>
|
|
11
|
-
<div data-sid="admin.layout.tabs"></div>
|
|
12
|
-
<div data-sid="admin.content.page_header"></div>
|
|
13
|
-
<div data-sid="admin.content.filter_area"></div>
|
|
14
|
-
<div data-sid="admin.content.table.operation_bar"></div>
|
|
15
|
-
<div data-sid="admin.content.table.operation_column"></div>
|
|
16
|
-
<div data-sid="admin.content.table.area"></div>
|
|
17
|
-
<div data-sid="admin.content.table.header_cell"></div>
|
|
18
|
-
<div data-sid="admin.content.table.cell"></div>
|
|
19
|
-
<div data-sid="admin.content.table.cell_status"></div>
|
|
20
|
-
<div data-sid="admin.content.table.cell_amount"></div>
|
|
21
|
-
<div data-sid="admin.content.table.cell_thumb"></div>
|
|
22
|
-
<div data-sid="component.tag.status"></div>
|
|
23
|
-
<div data-sid="component.button.danger"></div>
|
|
24
|
-
<div data-sid="admin.content.pagination"></div>
|
|
25
|
-
</body>
|
|
26
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head><meta charset="UTF-8"><title>回归夹具·列表页基线图(中性命名 · 无身份元数据)</title></head>
|
|
4
|
+
<body>
|
|
5
|
+
<div data-sid="admin.layout.sidebar"></div>
|
|
6
|
+
<div data-sid="admin.layout.sidebar.logo_area"></div>
|
|
7
|
+
<div data-sid="admin.layout.sidebar.menu"></div>
|
|
8
|
+
<div data-sid="admin.layout.header"></div>
|
|
9
|
+
<div data-sid="admin.layout.header.lang_switch"></div>
|
|
10
|
+
<div data-sid="admin.layout.header.user_profile"></div>
|
|
11
|
+
<div data-sid="admin.layout.tabs"></div>
|
|
12
|
+
<div data-sid="admin.content.page_header"></div>
|
|
13
|
+
<div data-sid="admin.content.filter_area"></div>
|
|
14
|
+
<div data-sid="admin.content.table.operation_bar"></div>
|
|
15
|
+
<div data-sid="admin.content.table.operation_column"></div>
|
|
16
|
+
<div data-sid="admin.content.table.area"></div>
|
|
17
|
+
<div data-sid="admin.content.table.header_cell"></div>
|
|
18
|
+
<div data-sid="admin.content.table.cell"></div>
|
|
19
|
+
<div data-sid="admin.content.table.cell_status"></div>
|
|
20
|
+
<div data-sid="admin.content.table.cell_amount"></div>
|
|
21
|
+
<div data-sid="admin.content.table.cell_thumb"></div>
|
|
22
|
+
<div data-sid="component.tag.status"></div>
|
|
23
|
+
<div data-sid="component.button.danger"></div>
|
|
24
|
+
<div data-sid="admin.content.pagination"></div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generated_at": "2026-09-24T07:14:25.807Z",
|
|
3
|
-
"oracle": "E:\\work\\Project\\Template\\skills\\vue3-temp-skill\\parser\\fixtures\\verify\\oracle.json",
|
|
4
|
-
"actual": "E:\\work\\Project\\Template\\skills\\vue3-temp-skill\\parser\\fixtures\\verify\\actual-clean.json",
|
|
5
|
-
"points": {
|
|
6
|
-
"admin.layout.sidebar.logo_area": {
|
|
7
|
-
"verdict": "miss",
|
|
8
|
-
"props": {
|
|
9
|
-
"background-color": {
|
|
10
|
-
"expected": "#0B1A3C",
|
|
11
|
-
"actual": "#10214d",
|
|
12
|
-
"verdict": "residual",
|
|
13
|
-
"kind": "权重被压"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"admin.content.table.header_cell": {
|
|
18
|
-
"verdict": "hit",
|
|
19
|
-
"props": {
|
|
20
|
-
"padding": {
|
|
21
|
-
"expected": "16px",
|
|
22
|
-
"actual": "16px",
|
|
23
|
-
"verdict": "hit"
|
|
24
|
-
},
|
|
25
|
-
"font-weight": {
|
|
26
|
-
"expected": "500",
|
|
27
|
-
"actual": "500",
|
|
28
|
-
"verdict": "hit"
|
|
29
|
-
},
|
|
30
|
-
"text-align": {
|
|
31
|
-
"expected": "left",
|
|
32
|
-
"actual": "left",
|
|
33
|
-
"verdict": "hit"
|
|
34
|
-
},
|
|
35
|
-
"background-color": {
|
|
36
|
-
"expected": "#FAFAFA",
|
|
37
|
-
"actual": "#fafafa",
|
|
38
|
-
"verdict": "hit"
|
|
39
|
-
},
|
|
40
|
-
"white-space": {
|
|
41
|
-
"expected": "nowrap",
|
|
42
|
-
"actual": "nowrap",
|
|
43
|
-
"verdict": "hit"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"admin.content.table.cell_amount": {
|
|
48
|
-
"verdict": "hit",
|
|
49
|
-
"props": {
|
|
50
|
-
"text-align": {
|
|
51
|
-
"expected": "right",
|
|
52
|
-
"actual": "right",
|
|
53
|
-
"verdict": "hit"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"admin.layout.tabs.item_active": {
|
|
58
|
-
"verdict": "hit",
|
|
59
|
-
"props": {
|
|
60
|
-
"font-weight": {
|
|
61
|
-
"expected": "500",
|
|
62
|
-
"actual": "500",
|
|
63
|
-
"verdict": "hit"
|
|
64
|
-
},
|
|
65
|
-
"color": {
|
|
66
|
-
"expected": "#245BFF",
|
|
67
|
-
"actual": "#245bff",
|
|
68
|
-
"verdict": "hit"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"admin.layout.header.user_profile": {
|
|
73
|
-
"verdict": "hit",
|
|
74
|
-
"props": {
|
|
75
|
-
"gap": {
|
|
76
|
-
"expected": "12px",
|
|
77
|
-
"actual": "12px",
|
|
78
|
-
"verdict": "hit"
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"admin.layout.header.breadcrumb": {
|
|
83
|
-
"verdict": "absent-hit",
|
|
84
|
-
"evidence": "display=none visibility=-"
|
|
85
|
-
},
|
|
86
|
-
"admin.content.list.batch_delete@disabled": {
|
|
87
|
-
"verdict": "hit",
|
|
88
|
-
"state": "disabled",
|
|
89
|
-
"props": {
|
|
90
|
-
"opacity": {
|
|
91
|
-
"expected": "0.4",
|
|
92
|
-
"actual": "0.4",
|
|
93
|
-
"verdict": "hit"
|
|
94
|
-
},
|
|
95
|
-
"cursor": {
|
|
96
|
-
"expected": "not-allowed",
|
|
97
|
-
"actual": "not-allowed",
|
|
98
|
-
"verdict": "hit"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"generated_at": "2026-09-24T07:14:25.807Z",
|
|
3
|
+
"oracle": "E:\\work\\Project\\Template\\skills\\vue3-temp-skill\\parser\\fixtures\\verify\\oracle.json",
|
|
4
|
+
"actual": "E:\\work\\Project\\Template\\skills\\vue3-temp-skill\\parser\\fixtures\\verify\\actual-clean.json",
|
|
5
|
+
"points": {
|
|
6
|
+
"admin.layout.sidebar.logo_area": {
|
|
7
|
+
"verdict": "miss",
|
|
8
|
+
"props": {
|
|
9
|
+
"background-color": {
|
|
10
|
+
"expected": "#0B1A3C",
|
|
11
|
+
"actual": "#10214d",
|
|
12
|
+
"verdict": "residual",
|
|
13
|
+
"kind": "权重被压"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"admin.content.table.header_cell": {
|
|
18
|
+
"verdict": "hit",
|
|
19
|
+
"props": {
|
|
20
|
+
"padding": {
|
|
21
|
+
"expected": "16px",
|
|
22
|
+
"actual": "16px",
|
|
23
|
+
"verdict": "hit"
|
|
24
|
+
},
|
|
25
|
+
"font-weight": {
|
|
26
|
+
"expected": "500",
|
|
27
|
+
"actual": "500",
|
|
28
|
+
"verdict": "hit"
|
|
29
|
+
},
|
|
30
|
+
"text-align": {
|
|
31
|
+
"expected": "left",
|
|
32
|
+
"actual": "left",
|
|
33
|
+
"verdict": "hit"
|
|
34
|
+
},
|
|
35
|
+
"background-color": {
|
|
36
|
+
"expected": "#FAFAFA",
|
|
37
|
+
"actual": "#fafafa",
|
|
38
|
+
"verdict": "hit"
|
|
39
|
+
},
|
|
40
|
+
"white-space": {
|
|
41
|
+
"expected": "nowrap",
|
|
42
|
+
"actual": "nowrap",
|
|
43
|
+
"verdict": "hit"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"admin.content.table.cell_amount": {
|
|
48
|
+
"verdict": "hit",
|
|
49
|
+
"props": {
|
|
50
|
+
"text-align": {
|
|
51
|
+
"expected": "right",
|
|
52
|
+
"actual": "right",
|
|
53
|
+
"verdict": "hit"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"admin.layout.tabs.item_active": {
|
|
58
|
+
"verdict": "hit",
|
|
59
|
+
"props": {
|
|
60
|
+
"font-weight": {
|
|
61
|
+
"expected": "500",
|
|
62
|
+
"actual": "500",
|
|
63
|
+
"verdict": "hit"
|
|
64
|
+
},
|
|
65
|
+
"color": {
|
|
66
|
+
"expected": "#245BFF",
|
|
67
|
+
"actual": "#245bff",
|
|
68
|
+
"verdict": "hit"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"admin.layout.header.user_profile": {
|
|
73
|
+
"verdict": "hit",
|
|
74
|
+
"props": {
|
|
75
|
+
"gap": {
|
|
76
|
+
"expected": "12px",
|
|
77
|
+
"actual": "12px",
|
|
78
|
+
"verdict": "hit"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"admin.layout.header.breadcrumb": {
|
|
83
|
+
"verdict": "absent-hit",
|
|
84
|
+
"evidence": "display=none visibility=-"
|
|
85
|
+
},
|
|
86
|
+
"admin.content.list.batch_delete@disabled": {
|
|
87
|
+
"verdict": "hit",
|
|
88
|
+
"state": "disabled",
|
|
89
|
+
"props": {
|
|
90
|
+
"opacity": {
|
|
91
|
+
"expected": "0.4",
|
|
92
|
+
"actual": "0.4",
|
|
93
|
+
"verdict": "hit"
|
|
94
|
+
},
|
|
95
|
+
"cursor": {
|
|
96
|
+
"expected": "not-allowed",
|
|
97
|
+
"actual": "not-allowed",
|
|
98
|
+
"verdict": "hit"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
103
|
}
|
package/parser/index.js
CHANGED
|
@@ -523,6 +523,7 @@ function matchOne(file, dataset, batchSummary, opts = {}) {
|
|
|
523
523
|
checkFormEnum(p.entry, p.change, gateViolations, p.id);
|
|
524
524
|
checkSuppress(p.change, p.entry, p.id, gateViolations);
|
|
525
525
|
checkGeometryContext(p.change, p.entry, p.id, gateViolations);
|
|
526
|
+
checkTokenChainContext(p.change, p.entry, p.id, gateViolations);
|
|
526
527
|
checkInnerOnlyProps(p.change, p.entry, p.id, gateViolations);
|
|
527
528
|
checkFieldForms(p.change, p.entry, p.id, gateViolations);
|
|
528
529
|
printApplyPlan(p.entry, p.change, p.id, index);
|
|
@@ -534,7 +535,7 @@ function matchOne(file, dataset, batchSummary, opts = {}) {
|
|
|
534
535
|
checkFormEnum(p.entry, p.change, gateViolations, p.id);
|
|
535
536
|
checkSuppress(p.change, p.entry, p.id, gateViolations);
|
|
536
537
|
checkGeometryContext(p.change, p.entry, p.id, gateViolations);
|
|
537
|
-
|
|
538
|
+
checkTokenChainContext(p.change, p.entry, p.id, gateViolations);
|
|
538
539
|
checkFieldForms(p.change, p.entry, p.id, gateViolations);
|
|
539
540
|
printApplyPlan(p.entry, p.change, `${p.id}(继承 ${p.parent})`, index);
|
|
540
541
|
printStyleTranslation(p.entry, p.change, `${p.id}(继承 ${p.parent})`, fieldPending, valueDict);
|
|
@@ -1615,6 +1616,36 @@ function checkGeometryContext(change, entry, idLabel, violations) {
|
|
|
1615
1616
|
}
|
|
1616
1617
|
}
|
|
1617
1618
|
|
|
1619
|
+
/**
|
|
1620
|
+
* G6:层间令牌链对账 —— 跨条目的父子两层盒共享同一条令牌链时,同一间距只允许一个权威来源。
|
|
1621
|
+
* 词典 preconditions 含「层间令牌链对账」标记的条目:style 声明几何字段(padding/margin 族)
|
|
1622
|
+
* 时必须同步声明 suppress_inner(同链邻层接管/清零口径),否则父层设计值 + 子层同链令牌值
|
|
1623
|
+
* 物理叠加(失效模式:设计 24px 落父层 .app-main,子层 .main-content 的 --vts-margin 出厂 8px
|
|
1624
|
+
* 原样保留 → 24+8=32px/侧,「边距很大」且与效果图不符)。与 G5 的分工:G5 管「同一条目内
|
|
1625
|
+
* host+inner 两层盒」,本闸管「跨条目的父子两层盒 + 同链令牌」。
|
|
1626
|
+
*/
|
|
1627
|
+
function checkTokenChainContext(change, entry, idLabel, violations) {
|
|
1628
|
+
if (!entry || !Array.isArray(entry.preconditions))
|
|
1629
|
+
return;
|
|
1630
|
+
if (!entry.preconditions.some(p => typeof p === "string" && p.includes("层间令牌链对账")))
|
|
1631
|
+
return;
|
|
1632
|
+
const style = change.style && typeof change.style === "object" ? change.style : null;
|
|
1633
|
+
if (!style)
|
|
1634
|
+
return;
|
|
1635
|
+
const geometryFields = Object.keys(style).filter(k => GEOMETRY_PAD_RE.test(k));
|
|
1636
|
+
if (geometryFields.length === 0)
|
|
1637
|
+
return;
|
|
1638
|
+
const declaredInner = typeof change.suppress_inner === "string" ? change.suppress_inner.trim() : "";
|
|
1639
|
+
if (!declaredInner) {
|
|
1640
|
+
violations.push(
|
|
1641
|
+
`${idLabel}.suppress_inner 缺口:条目 preconditions 标记「层间令牌链对账」(父子两层盒共享同一条间距令牌链,同一间距只允许一个权威来源),`
|
|
1642
|
+
+ `style 几何字段 [${geometryFields.join("、")}] 必须同步声明 suppress_inner(同链邻层接管/清零口径:写明间距由哪层承载、另一层如何归零)`
|
|
1643
|
+
+ ` —— 否则父层设计值 + 子层同链令牌值物理叠加(失效模式:设计 24px 落父层,子层 --vts-margin 出厂 8px 原样保留 → 24+8=32px/侧,内容区边距显著大于效果图)。`
|
|
1644
|
+
+ `施工建议:优先走令牌通道(在消费点作用域重映射同链令牌,两层同变),不抢写物理 padding。`,
|
|
1645
|
+
);
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1618
1649
|
/**
|
|
1619
1650
|
* G5b:内层盒属性族 · 词典完整性闸 —— INNER_ONLY_PROPS 字段(nowrap/text_align/line_height 等)
|
|
1620
1651
|
* 必须能落到 inner 层,否则这些文本控制属性无处可落、必然被 EP 内层 .cell 出厂样式吞掉。
|