chore(core/qa): function-audit toolchain + parity/audit reports + pixel-perfect skill
- qa/function-audit: playwright 行为审计工具(audit.mjs/verify-modals.mjs/pages.json) + 18 页审计产出(*.audit.md/json、summary、运行日志) - qa/visual-parity: 调试/测量辅助脚本(_dbg*.mjs/_measure.mjs/_off.mjs) - core/还原度核对报告.md: 18 页 pixelmatch 核对结果(含 vite 代理陈旧坑记录) - core/还原与接口待办.md: 逐页还原度/真实数据/交互接入待办总表 - .claude/skills/pixel-perfect-react: 像素级还原 React 的 SKILL 文档 - frontend/public/_devlogin.html: 临时本地登录辅助页(可删) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
|
||||
[function-audit] dashboard … dead 0 / 30, missing 20
|
||||
[function-audit] products … dead 0 / 25, missing 11
|
||||
[function-audit] product-detail … dead 0 / 23, missing 6
|
||||
[function-audit] product-create … dead 5 / 31, missing 11
|
||||
[function-audit] projects … dead 0 / 30, missing 14
|
||||
[function-audit] projects-new … dead 0 / 15, missing 14
|
||||
[function-audit] pipeline … dead 1 / 29, missing 5
|
||||
[function-audit] library … dead 0 / 26, missing 6
|
||||
[function-audit] account … dead 0 / 26, missing 5
|
||||
[function-audit] team … dead 0 / 17, missing 7
|
||||
[function-audit] messages … dead 0 / 26, missing 11
|
||||
[function-audit] asset-factory … dead 2 / 26, missing 4
|
||||
[function-audit] image-optimize … dead 1 / 24, missing 12
|
||||
[function-audit] model-photo … dead 0 / 37, missing 6
|
||||
[function-audit] model-photo-demo-a … dead 0 / 38, missing 5
|
||||
[function-audit] model-photo-demo-b … dead 4 / 37, missing 5
|
||||
[function-audit] platform-cover … dead 0 / 38, missing 8
|
||||
[function-audit] settings … dead 1 / 26, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'dashboard' │ 30 │ 29 │ 0 │ 0 │ 20 │
|
||||
│ 1 │ 'products' │ 25 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 2 │ 'product-detail' │ 23 │ 21 │ 0 │ 0 │ 6 │
|
||||
│ 3 │ 'product-create' │ 31 │ 26 │ 5 │ 0 │ 11 │
|
||||
│ 4 │ 'projects' │ 30 │ 28 │ 0 │ 0 │ 14 │
|
||||
│ 5 │ 'projects-new' │ 15 │ 15 │ 0 │ 0 │ 14 │
|
||||
│ 6 │ 'pipeline' │ 29 │ 26 │ 1 │ 0 │ 5 │
|
||||
│ 7 │ 'library' │ 26 │ 25 │ 0 │ 0 │ 6 │
|
||||
│ 8 │ 'account' │ 26 │ 23 │ 0 │ 0 │ 5 │
|
||||
│ 9 │ 'team' │ 17 │ 16 │ 0 │ 0 │ 7 │
|
||||
│ 10 │ 'messages' │ 26 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 11 │ 'asset-factory' │ 26 │ 19 │ 2 │ 0 │ 4 │
|
||||
│ 12 │ 'image-optimize' │ 24 │ 23 │ 1 │ 0 │ 12 │
|
||||
│ 13 │ 'model-photo' │ 37 │ 34 │ 0 │ 0 │ 6 │
|
||||
│ 14 │ 'model-photo-demo-a' │ 38 │ 34 │ 0 │ 0 │ 5 │
|
||||
│ 15 │ 'model-photo-demo-b' │ 37 │ 31 │ 4 │ 0 │ 5 │
|
||||
│ 16 │ 'platform-cover' │ 38 │ 36 │ 0 │ 0 │ 8 │
|
||||
│ 17 │ 'settings' │ 26 │ 23 │ 1 │ 0 │ 4 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
[function-audit] dashboard … dead 0 / 30, missing 20
|
||||
[function-audit] products … FAILED page.waitForTimeout: Target page, context or browser has been closed
|
||||
[function-audit] product-detail … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] product-create … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] projects … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] projects-new … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] pipeline … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] library … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] account … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] team … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] messages … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] asset-factory … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] image-optimize … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] model-photo … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] model-photo-demo-a … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] model-photo-demo-b … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] platform-cover … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
[function-audit] settings … FAILED browserContext.newPage: Target page, context or browser has been closed
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'dashboard' │ 30 │ 29 │ 0 │ 0 │ 20 │
|
||||
│ 1 │ 'products' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 2 │ 'product-detail' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 3 │ 'product-create' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 4 │ 'projects' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 5 │ 'projects-new' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 6 │ 'pipeline' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 7 │ 'library' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 8 │ 'account' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 9 │ 'team' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 10 │ 'messages' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 11 │ 'asset-factory' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 12 │ 'image-optimize' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 13 │ 'model-photo' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 14 │ 'model-photo-demo-a' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 15 │ 'model-photo-demo-b' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 16 │ 'platform-cover' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 17 │ 'settings' │ 0 │ 0 │ 0 │ 0 │ 0 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
[function-audit] dashboard … dead 1 / 29, missing 20
|
||||
[function-audit] products … dead 10 / 32, missing 13
|
||||
[function-audit] product-detail … dead 15 / 37, missing 8
|
||||
[function-audit] product-create … dead 9 / 32, missing 13
|
||||
[function-audit] projects … dead 5 / 31, missing 19
|
||||
[function-audit] projects-new … dead 2 / 20, missing 27
|
||||
[function-audit] pipeline … dead 6 / 32, missing 5
|
||||
[function-audit] library … dead 10 / 30, missing 12
|
||||
[function-audit] account … dead 3 / 25, missing 5
|
||||
[function-audit] team … dead 1 / 16, missing 7
|
||||
[function-audit] messages … dead 1 / 42, missing 19
|
||||
[function-audit] asset-factory … dead 17 / 33, missing 6
|
||||
[function-audit] image-optimize … dead 3 / 23, missing 15
|
||||
[function-audit] model-photo … dead 6 / 35, missing 14
|
||||
[function-audit] model-photo-demo-a … dead 17 / 37, missing 5
|
||||
[function-audit] model-photo-demo-b … dead 27 / 47, missing 5
|
||||
[function-audit] platform-cover … dead 2 / 37, missing 15
|
||||
[function-audit] settings … dead 5 / 25, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'dashboard' │ 29 │ 27 │ 1 │ 0 │ 20 │
|
||||
│ 1 │ 'products' │ 32 │ 22 │ 10 │ 0 │ 13 │
|
||||
│ 2 │ 'product-detail' │ 37 │ 20 │ 15 │ 0 │ 8 │
|
||||
│ 3 │ 'product-create' │ 32 │ 23 │ 9 │ 0 │ 13 │
|
||||
│ 4 │ 'projects' │ 31 │ 24 │ 5 │ 0 │ 19 │
|
||||
│ 5 │ 'projects-new' │ 20 │ 16 │ 2 │ 0 │ 27 │
|
||||
│ 6 │ 'pipeline' │ 32 │ 24 │ 6 │ 0 │ 5 │
|
||||
│ 7 │ 'library' │ 30 │ 19 │ 10 │ 0 │ 12 │
|
||||
│ 8 │ 'account' │ 25 │ 19 │ 3 │ 0 │ 5 │
|
||||
│ 9 │ 'team' │ 16 │ 14 │ 1 │ 0 │ 7 │
|
||||
│ 10 │ 'messages' │ 42 │ 39 │ 1 │ 0 │ 19 │
|
||||
│ 11 │ 'asset-factory' │ 33 │ 11 │ 17 │ 0 │ 6 │
|
||||
│ 12 │ 'image-optimize' │ 23 │ 20 │ 3 │ 0 │ 15 │
|
||||
│ 13 │ 'model-photo' │ 35 │ 26 │ 6 │ 0 │ 14 │
|
||||
│ 14 │ 'model-photo-demo-a' │ 37 │ 17 │ 17 │ 0 │ 5 │
|
||||
│ 15 │ 'model-photo-demo-b' │ 47 │ 17 │ 27 │ 0 │ 5 │
|
||||
│ 16 │ 'platform-cover' │ 37 │ 33 │ 2 │ 0 │ 15 │
|
||||
│ 17 │ 'settings' │ 25 │ 18 │ 5 │ 0 │ 4 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] dashboard … dead 0 / 25, missing 20
|
||||
[function-audit] products … dead 0 / 25, missing 11
|
||||
[function-audit] product-detail … dead 0 / 23, missing 7
|
||||
[function-audit] product-create … dead 0 / 31, missing 11
|
||||
[function-audit] account … dead 0 / 26, missing 5
|
||||
[function-audit] team … dead 0 / 17, missing 7
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'dashboard' │ 25 │ 24 │ 0 │ 0 │ 20 │
|
||||
│ 1 │ 'products' │ 25 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 2 │ 'product-detail' │ 23 │ 21 │ 0 │ 0 │ 7 │
|
||||
│ 3 │ 'product-create' │ 31 │ 31 │ 0 │ 0 │ 11 │
|
||||
│ 4 │ 'account' │ 26 │ 23 │ 0 │ 0 │ 5 │
|
||||
│ 5 │ 'team' │ 17 │ 16 │ 0 │ 0 │ 7 │
|
||||
└─────────┴──────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] projects … dead 0 / 24, missing 15
|
||||
[function-audit] projects-new … dead 0 / 15, missing 14
|
||||
[function-audit] pipeline … dead 0 / 29, missing 5
|
||||
[function-audit] library … dead 0 / 26, missing 6
|
||||
[function-audit] messages … dead 0 / 26, missing 11
|
||||
[function-audit] settings … dead 0 / 26, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'projects' │ 24 │ 22 │ 0 │ 0 │ 15 │
|
||||
│ 1 │ 'projects-new' │ 15 │ 15 │ 0 │ 0 │ 14 │
|
||||
│ 2 │ 'pipeline' │ 29 │ 27 │ 0 │ 0 │ 5 │
|
||||
│ 3 │ 'library' │ 26 │ 25 │ 0 │ 0 │ 6 │
|
||||
│ 4 │ 'messages' │ 26 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 5 │ 'settings' │ 26 │ 24 │ 0 │ 0 │ 4 │
|
||||
└─────────┴────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] asset-factory … dead 0 / 24, missing 4
|
||||
[function-audit] image-optimize … dead 0 / 24, missing 12
|
||||
[function-audit] model-photo … dead 0 / 36, missing 6
|
||||
[function-audit] model-photo-demo-a … dead 0 / 37, missing 5
|
||||
[function-audit] model-photo-demo-b … dead 0 / 37, missing 5
|
||||
[function-audit] platform-cover … dead 0 / 38, missing 8
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'asset-factory' │ 24 │ 19 │ 0 │ 0 │ 4 │
|
||||
│ 1 │ 'image-optimize' │ 24 │ 24 │ 0 │ 0 │ 12 │
|
||||
│ 2 │ 'model-photo' │ 36 │ 33 │ 0 │ 0 │ 6 │
|
||||
│ 3 │ 'model-photo-demo-a' │ 37 │ 34 │ 0 │ 0 │ 5 │
|
||||
│ 4 │ 'model-photo-demo-b' │ 37 │ 36 │ 0 │ 0 │ 5 │
|
||||
│ 5 │ 'platform-cover' │ 38 │ 36 │ 0 │ 0 │ 8 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] dashboard … dead 0 / 25, missing 20
|
||||
[function-audit] products … dead 0 / 25, missing 11
|
||||
[function-audit] product-detail … dead 0 / 29, missing 7
|
||||
[function-audit] product-create … dead 0 / 31, missing 11
|
||||
[function-audit] account … dead 0 / 26, missing 5
|
||||
[function-audit] team … dead 0 / 17, missing 7
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'dashboard' │ 25 │ 25 │ 0 │ 0 │ 20 │
|
||||
│ 1 │ 'products' │ 25 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 2 │ 'product-detail' │ 29 │ 28 │ 0 │ 0 │ 7 │
|
||||
│ 3 │ 'product-create' │ 31 │ 31 │ 0 │ 0 │ 11 │
|
||||
│ 4 │ 'account' │ 26 │ 21 │ 0 │ 0 │ 5 │
|
||||
│ 5 │ 'team' │ 17 │ 17 │ 0 │ 0 │ 7 │
|
||||
└─────────┴──────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] projects … dead 0 / 24, missing 15
|
||||
[function-audit] projects-new … dead 0 / 15, missing 14
|
||||
[function-audit] pipeline … dead 0 / 29, missing 5
|
||||
[function-audit] library … dead 0 / 38, missing 6
|
||||
[function-audit] messages … dead 0 / 26, missing 11
|
||||
[function-audit] settings … dead 0 / 26, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'projects' │ 24 │ 22 │ 0 │ 0 │ 15 │
|
||||
│ 1 │ 'projects-new' │ 15 │ 15 │ 0 │ 0 │ 14 │
|
||||
│ 2 │ 'pipeline' │ 29 │ 27 │ 0 │ 0 │ 5 │
|
||||
│ 3 │ 'library' │ 38 │ 35 │ 0 │ 0 │ 6 │
|
||||
│ 4 │ 'messages' │ 26 │ 25 │ 0 │ 0 │ 11 │
|
||||
│ 5 │ 'settings' │ 26 │ 25 │ 0 │ 0 │ 4 │
|
||||
└─────────┴────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] asset-factory … dead 0 / 24, missing 4
|
||||
[function-audit] image-optimize … dead 0 / 24, missing 12
|
||||
[function-audit] model-photo … dead 0 / 32, missing 7
|
||||
[function-audit] model-photo-demo-a … dead 0 / 37, missing 5
|
||||
[function-audit] model-photo-demo-b … dead 0 / 37, missing 5
|
||||
[function-audit] platform-cover … dead 0 / 38, missing 8
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'asset-factory' │ 24 │ 22 │ 0 │ 0 │ 4 │
|
||||
│ 1 │ 'image-optimize' │ 24 │ 24 │ 0 │ 0 │ 12 │
|
||||
│ 2 │ 'model-photo' │ 32 │ 31 │ 0 │ 0 │ 7 │
|
||||
│ 3 │ 'model-photo-demo-a' │ 37 │ 33 │ 0 │ 0 │ 5 │
|
||||
│ 4 │ 'model-photo-demo-b' │ 37 │ 36 │ 0 │ 0 │ 5 │
|
||||
│ 5 │ 'platform-cover' │ 38 │ 35 │ 0 │ 0 │ 8 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
[function-audit] products … dead 1 / 25, missing 11
|
||||
[function-audit] product-detail … dead 0 / 29, missing 7
|
||||
[function-audit] account … dead 2 / 26, missing 5
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'products' │ 25 │ 24 │ 1 │ 0 │ 11 │
|
||||
│ 1 │ 'product-detail' │ 29 │ 21 │ 0 │ 0 │ 7 │
|
||||
│ 2 │ 'account' │ 26 │ 21 │ 2 │ 0 │ 5 │
|
||||
└─────────┴──────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
[function-audit] product-create … dead 2 / 31, missing 11
|
||||
[function-audit] pipeline … dead 0 / 29, missing 5
|
||||
[function-audit] asset-factory … dead 2 / 26, missing 4
|
||||
[function-audit] image-optimize … dead 0 / 24, missing 12
|
||||
[function-audit] model-photo-demo-b … dead 0 / 37, missing 5
|
||||
[function-audit] settings … dead 1 / 26, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'product-create' │ 31 │ 29 │ 2 │ 0 │ 11 │
|
||||
│ 1 │ 'pipeline' │ 29 │ 27 │ 0 │ 0 │ 5 │
|
||||
│ 2 │ 'asset-factory' │ 26 │ 19 │ 2 │ 0 │ 4 │
|
||||
│ 3 │ 'image-optimize' │ 24 │ 24 │ 0 │ 0 │ 12 │
|
||||
│ 4 │ 'model-photo-demo-b' │ 37 │ 36 │ 0 │ 0 │ 5 │
|
||||
│ 5 │ 'settings' │ 26 │ 23 │ 1 │ 0 │ 4 │
|
||||
└─────────┴──────────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
[function-audit] product-create … dead 0 / 31, missing 11
|
||||
[function-audit] asset-factory … dead 0 / 24, missing 4
|
||||
[function-audit] settings … dead 0 / 26, missing 4
|
||||
|
||||
[function-audit] summary
|
||||
┌─────────┬──────────────────┬───────┬───────┬──────┬───────┬─────────┐
|
||||
│ (index) │ page │ total │ works │ dead │ error │ missing │
|
||||
├─────────┼──────────────────┼───────┼───────┼──────┼───────┼─────────┤
|
||||
│ 0 │ 'product-create' │ 31 │ 31 │ 0 │ 0 │ 11 │
|
||||
│ 1 │ 'asset-factory' │ 24 │ 19 │ 0 │ 0 │ 4 │
|
||||
│ 2 │ 'settings' │ 26 │ 24 │ 0 │ 0 │ 4 │
|
||||
└─────────┴──────────────────┴───────┴───────┴──────┴───────┴─────────┘
|
||||
|
||||
报告:core/qa/function-audit/output/summary.md
|
||||
@@ -0,0 +1,479 @@
|
||||
{
|
||||
"name": "account",
|
||||
"route": "/account",
|
||||
"url": "http://127.0.0.1:5173/account",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 26,
|
||||
"works": 21,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 2,
|
||||
"noop": 3,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "recharge-card.",
|
||||
"label": "¥100无赠送",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 9,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "recharge-card.selected",
|
||||
"label": "推荐¥500+ ¥30 赠送",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "recharge-card.",
|
||||
"label": "¥1000+ ¥80 赠送",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 9,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "recharge-card.",
|
||||
"label": "¥3000+ ¥300 赠送",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 9,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.pay-method-btn.pay-wechat",
|
||||
"label": "微信支付",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "skipped-destructive"
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.pay-method-btn.pay-alipay",
|
||||
"label": "支付宝",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "skipped-destructive"
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab.active",
|
||||
"label": "总览",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab.",
|
||||
"label": "项目 6",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab.",
|
||||
"label": "成员 1",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab.",
|
||||
"label": "账单流水 100",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip.active",
|
||||
"label": "日",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "周",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 38,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "月",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 38,
|
||||
"api": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"账单流水 30天"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
# 功能审计 · account
|
||||
|
||||
路由:`/account` · 模式:isolated
|
||||
合计 26 · ✅ works 21 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)2 · ◷ noop-active 3 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 账单流水 30天
|
||||
|
||||
## ⏭ 破坏性按钮(未自动点,需人工验)
|
||||
- 微信支付 `button`
|
||||
- 支付宝 `button`
|
||||
|
||||
@@ -0,0 +1,460 @@
|
||||
{
|
||||
"name": "asset-factory",
|
||||
"route": "/asset-factory",
|
||||
"url": "http://127.0.0.1:5173/asset-factory",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 24,
|
||||
"works": 22,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 2,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "开始生成",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "开始生成",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "开始生成",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "tab.active",
|
||||
"label": "全部 20",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "tab",
|
||||
"label": "生成中 0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "tab",
|
||||
"label": "已完成 15",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "tab",
|
||||
"label": "失败 0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "任务类型",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "网格",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "列表",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# 功能审计 · asset-factory
|
||||
|
||||
路由:`/asset-factory` · 模式:isolated
|
||||
合计 24 · ✅ works 22 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 2 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
|
||||
@@ -0,0 +1,490 @@
|
||||
{
|
||||
"name": "dashboard",
|
||||
"route": "/dashboard",
|
||||
"url": "http://127.0.0.1:5173/dashboard",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 25,
|
||||
"works": 25,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 41,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 27,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "新建项目",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "stat",
|
||||
"label": "余额 ¥¥11116.00已冻结 ¥5.00",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 27,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "more",
|
||||
"label": "[ ALL · 6 ] →",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "recent-row",
|
||||
"label": "9:16真应用验证项目 · 补水面膜种草透真玻尿酸补水面膜 / AI 全生 / 4 镜基础资产继",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 5,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "recent-row",
|
||||
"label": "9:16端到端播放器验证南卡 Lite Pro 蓝牙耳机 / AI 全生 / 4 镜拼接导出继续",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 5,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "recent-row",
|
||||
"label": "9:16桥接测试项目 20260529透真玻尿酸补水面膜 / AI 全生 / 4 镜脚本继续",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 5,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "recent-row",
|
||||
"label": "9:16南卡 · 痛点种草 · v1南卡 Lite Pro 蓝牙耳机 / AI 全生 / 4 镜",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 5,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "recent-row",
|
||||
"label": "9:16南卡 · 痛点种草 · v1南卡 Lite Pro 蓝牙耳机 / AI 全生 / 4 镜",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 5,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "shortcut",
|
||||
"label": "商品库8 SKU",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "shortcut",
|
||||
"label": "资产库67 资产",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 41,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "shortcut",
|
||||
"label": "充值¥11116.00",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 27,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "shortcut",
|
||||
"label": "所有项目6 个",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"总项目 ALL 8 本月 +3",
|
||||
"进行中 WIP 3 2 个待审核",
|
||||
"本月成片 DONE 3 较上月 +33%",
|
||||
"余额 ¥ ¥327.40 已用 ¥162.60 / ¥500",
|
||||
"[ ALL · 8 ]",
|
||||
"9:16 补水面膜 · 痛点种草 · v3 透真补水面膜 / AI 全生 / 7 镜 故事板 待",
|
||||
"9:16 透真防晒 · 通勤对比 透真防晒 / AI 全生 / 6 镜 已完成 打开",
|
||||
"9:16 蓝牙耳机 · 开箱测评 Pro 4 蓝牙耳机 / 自带脚本 / 6 镜 视频生成 4/",
|
||||
"9:16 春日新品 · 立体口红 凝彩立体口红 / 一句话 / 5 镜 资产生成中 继续",
|
||||
"9:16 咖啡冻干 · 早八 冷萃咖啡冻干 / 一句话 / 5 镜 故事板失败 查看",
|
||||
"资产库人 8 · 景 14 · 片 8",
|
||||
"故事板 待确认",
|
||||
"已完成",
|
||||
"视频生成 4/6",
|
||||
"资产生成中",
|
||||
"故事板失败"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
# 功能审计 · dashboard
|
||||
|
||||
路由:`/dashboard` · 模式:isolated
|
||||
合计 25 · ✅ works 25 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 总项目 ALL 8 本月 +3
|
||||
- 进行中 WIP 3 2 个待审核
|
||||
- 本月成片 DONE 3 较上月 +33%
|
||||
- 余额 ¥ ¥327.40 已用 ¥162.60 / ¥500
|
||||
- [ ALL · 8 ]
|
||||
- 9:16 补水面膜 · 痛点种草 · v3 透真补水面膜 / AI 全生 / 7 镜 故事板 待
|
||||
- 9:16 透真防晒 · 通勤对比 透真防晒 / AI 全生 / 6 镜 已完成 打开
|
||||
- 9:16 蓝牙耳机 · 开箱测评 Pro 4 蓝牙耳机 / 自带脚本 / 6 镜 视频生成 4/
|
||||
- 9:16 春日新品 · 立体口红 凝彩立体口红 / 一句话 / 5 镜 资产生成中 继续
|
||||
- 9:16 咖啡冻干 · 早八 冷萃咖啡冻干 / 一句话 / 5 镜 故事板失败 查看
|
||||
- 资产库人 8 · 景 14 · 片 8
|
||||
- 故事板 待确认
|
||||
- 已完成
|
||||
- 视频生成 4/6
|
||||
- 资产生成中
|
||||
- 故事板失败
|
||||
|
||||
@@ -0,0 +1,464 @@
|
||||
{
|
||||
"name": "image-optimize",
|
||||
"route": "/image-optimize",
|
||||
"url": "http://127.0.0.1:5173/image-optimize",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 24,
|
||||
"works": 24,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "back-pill",
|
||||
"label": "返回",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ic-new-conv",
|
||||
"label": "新对话",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ex",
|
||||
"label": "一只穿着宇航服的橘猫,漂浮在霓虹色星云中,赛博朋克风",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ex",
|
||||
"label": "极简北欧风格的茶杯,白底,自然柔光,产品摄影",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ex",
|
||||
"label": "国风水墨海报,主体一只白鹤立于水边,留白构图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ex",
|
||||
"label": "电影感都市夜景,街道湿漉漉反射霓虹,4K 高清",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "add-btn",
|
||||
"label": "上传参考图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ic-param-btn",
|
||||
"label": "比例1:1",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 1,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ic-param-btn",
|
||||
"label": "风格默认",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 1,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ic-param-btn",
|
||||
"label": "张数4",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 1,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "send-btn",
|
||||
"label": "生成",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 21,
|
||||
"api": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"折叠侧栏",
|
||||
"时间",
|
||||
"生成模式",
|
||||
"操作类型",
|
||||
"一只穿着宇航服的橘猫,漂浮在霓虹色星云中,赛博朋克风",
|
||||
"极简北欧风格的茶杯,白底,自然柔光,产品摄影",
|
||||
"国风水墨海报,主体一只白鹤立于水边,留白构图",
|
||||
"电影感都市夜景,街道湿漉漉反射霓虹,4K 高清"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
# 功能审计 · image-optimize
|
||||
|
||||
路由:`/image-optimize` · 模式:isolated
|
||||
合计 24 · ✅ works 24 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 折叠侧栏
|
||||
- 时间
|
||||
- 生成模式
|
||||
- 操作类型
|
||||
- 一只穿着宇航服的橘猫,漂浮在霓虹色星云中,赛博朋克风
|
||||
- 极简北欧风格的茶杯,白底,自然柔光,产品摄影
|
||||
- 国风水墨海报,主体一只白鹤立于水边,留白构图
|
||||
- 电影感都市夜景,街道湿漉漉反射霓虹,4K 高清
|
||||
|
||||
@@ -0,0 +1,686 @@
|
||||
{
|
||||
"name": "library",
|
||||
"route": "/library",
|
||||
"url": "http://127.0.0.1:5173/library",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 38,
|
||||
"works": 35,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 2,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-edit-toggle",
|
||||
"label": "管理资产",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary",
|
||||
"label": "上传资产",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab.active",
|
||||
"label": "人物 14",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "场景 11",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 48,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "商品图 35",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 97,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "成片 10",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 38,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "我的上传 1",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "未分类 0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 29,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "性别",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "年龄段",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "角色标签",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "来源",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "最近添加",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 32,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 33,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 34,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 35,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "placeholder.asset-thumb",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 36,
|
||||
"label": "",
|
||||
"tag": "",
|
||||
"verdict": "stale"
|
||||
},
|
||||
{
|
||||
"idx": 37,
|
||||
"label": "",
|
||||
"tag": "",
|
||||
"verdict": "stale"
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"最近使用",
|
||||
"缺三视图,查看说明"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
# 功能审计 · library
|
||||
|
||||
路由:`/library` · 模式:isolated
|
||||
合计 38 · ✅ works 35 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)2 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 最近使用
|
||||
- 缺三视图,查看说明
|
||||
|
||||
@@ -0,0 +1,499 @@
|
||||
{
|
||||
"name": "messages",
|
||||
"route": "/messages",
|
||||
"url": "http://127.0.0.1:5173/messages",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 26,
|
||||
"works": 25,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 35,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 48,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "全部标已读",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "通知设置",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 58,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.active",
|
||||
"label": "全部20",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.",
|
||||
"label": "未读0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.",
|
||||
"label": "任务20",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 4,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.",
|
||||
"label": "团队0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.",
|
||||
"label": "计费0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-filter.",
|
||||
"label": "系统0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-item.active.read",
|
||||
"label": "资产「AI 生成 · image · 4」已加入资产库7mProduct Image · Ima",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 2,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-item.read",
|
||||
"label": "资产「AI 生成 · image · 3」已加入资产库8mProduct Image · Ima",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-item.read",
|
||||
"label": "资产「AI 生成 · image · 2」已加入资产库8mProduct Image · Ima",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-item.read",
|
||||
"label": "资产「AI 生成 · image · 1」已加入资产库9mProduct Image · Ima",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "msg-item.read",
|
||||
"label": "资产「AI 生成 · cover · 4」已加入资产库21mProduct Image · Im",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"补水面膜 · 痛点种草 v3 成片已完成 12m 7 镜 · 40 秒 · ¥18.40 已结算",
|
||||
"脚本生成失败 · 618 大促 1h Prompt 超过服务限制,本次失败未扣费,可一键重试。 ",
|
||||
"4 张模特上身图已加入资产库 2h 祛痘精华 · 通勤白领 · 3:4,可直接进入视频项目。 已",
|
||||
"@刘 正在编辑「补水面膜」项目 3h 你暂时以只读方式查看该项目,避免两人同时改动覆盖。 更新 ",
|
||||
"@王芳 已加入团队 5h 角色为运营,月限额 ¥800,可读写团队资产。 更新 团队",
|
||||
"团队余额低于预警线 7h 当前余额 ¥87.20,按近 7 天速度预计可支撑 4 个视频项目。 ",
|
||||
"补水面膜 →"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# 功能审计 · messages
|
||||
|
||||
路由:`/messages` · 模式:isolated
|
||||
合计 26 · ✅ works 25 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 补水面膜 · 痛点种草 v3 成片已完成 12m 7 镜 · 40 秒 · ¥18.40 已结算
|
||||
- 脚本生成失败 · 618 大促 1h Prompt 超过服务限制,本次失败未扣费,可一键重试。
|
||||
- 4 张模特上身图已加入资产库 2h 祛痘精华 · 通勤白领 · 3:4,可直接进入视频项目。 已
|
||||
- @刘 正在编辑「补水面膜」项目 3h 你暂时以只读方式查看该项目,避免两人同时改动覆盖。 更新
|
||||
- @王芳 已加入团队 5h 角色为运营,月限额 ¥800,可读写团队资产。 更新 团队
|
||||
- 团队余额低于预警线 7h 当前余额 ¥87.20,按近 7 天速度预计可支撑 4 个视频项目。
|
||||
- 补水面膜 →
|
||||
|
||||
@@ -0,0 +1,712 @@
|
||||
{
|
||||
"name": "model-photo-demo-a",
|
||||
"route": "/model-photo/demo-a",
|
||||
"url": "http://127.0.0.1:5173/model-photo/demo-a",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 37,
|
||||
"works": 33,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 1,
|
||||
"noop": 3,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "add",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.active",
|
||||
"label": "主图南卡 Lite Pro 蓝牙耳机// 数码 3C · 6 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图露露同款裸感瑜伽裤// 运动户外 · 3 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图透真清透物理防晒霜// 美妆个护 · 2 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图滋啦速食牛肉面 · 6 桶装// 食品饮料 · 1 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图透真玻尿酸补水面膜// 美妆个护 · 1 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图桥接测试补水面膜 20260529// 美妆个护 · 0 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-all",
|
||||
"label": "全部商品8 个",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-back",
|
||||
"label": "返回模特图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "1 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "2 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.active",
|
||||
"label": "4 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "8 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "1:1",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.active",
|
||||
"label": "3:4",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "9:16",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-chip.",
|
||||
"label": "16:9",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-gen",
|
||||
"label": "立即生成 · 南卡 Lite Pro 蓝牙耳机 × Ava",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "skipped-destructive"
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部重跑",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 32,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部下载",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 33,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "加入资产库",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 34,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部重跑",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 35,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部下载",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 36,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "加入资产库",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"立即生成 · 透真补水面膜 × Ava"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
# 功能审计 · model-photo-demo-a
|
||||
|
||||
路由:`/model-photo/demo-a` · 模式:isolated
|
||||
合计 37 · ✅ works 33 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)1 · ◷ noop-active 3 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 立即生成 · 透真补水面膜 × Ava
|
||||
|
||||
## ⏭ 破坏性按钮(未自动点,需人工验)
|
||||
- 立即生成 · 南卡 Lite Pro 蓝牙耳机 × Ava `button`
|
||||
|
||||
@@ -0,0 +1,755 @@
|
||||
{
|
||||
"name": "model-photo-demo-b",
|
||||
"route": "/model-photo/demo-b",
|
||||
"url": "http://127.0.0.1:5173/model-photo/demo-b",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 37,
|
||||
"works": 36,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "add",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.active",
|
||||
"label": "主图南卡 Lite Pro 蓝牙耳机// 数码 3C · 6 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图露露同款裸感瑜伽裤// 运动户外 · 3 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图透真清透物理防晒霜// 美妆个护 · 2 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图滋啦速食牛肉面 · 6 桶装// 食品饮料 · 1 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图透真玻尿酸补水面膜// 美妆个护 · 1 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-prod.",
|
||||
"label": "主图桥接测试补水面膜 20260529// 美妆个护 · 0 批",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-all",
|
||||
"label": "全部商品8 个",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "dm-back",
|
||||
"label": "返回模特图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icbtn",
|
||||
"label": "搜索批次",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "状态",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部重跑",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部下载",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "加入资产库",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部重跑",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "全部下载",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "加入资产库",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 32,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "pchip.active",
|
||||
"label": "模特Ava",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 33,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "pchip",
|
||||
"label": "张数4",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 34,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "pchip",
|
||||
"label": "比例3:4",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 35,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "pchip",
|
||||
"label": "补充提示词+ 添加",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 36,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "gen-btn",
|
||||
"label": "生成 · 南卡 Lite Pro 蓝牙耳机 × Ava",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"生成 · 透真补水面膜 × Ava"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
# 功能审计 · model-photo-demo-b
|
||||
|
||||
路由:`/model-photo/demo-b` · 模式:isolated
|
||||
合计 37 · ✅ works 36 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 生成 · 透真补水面膜 × Ava
|
||||
|
||||
@@ -0,0 +1,667 @@
|
||||
{
|
||||
"name": "model-photo",
|
||||
"route": "/model-photo",
|
||||
"url": "http://127.0.0.1:5173/model-photo",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 32,
|
||||
"works": 31,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "back-pill",
|
||||
"label": "返回",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "new-prod",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.active",
|
||||
"label": "南卡南卡 Lite Pro 蓝牙耳机// 数码 3C",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "露露露露同款裸感瑜伽裤// 运动户外",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "透真透真清透物理防晒霜// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "滋啦滋啦速食牛肉面 · 6 桶装// 食品饮料",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "透真透真玻尿酸补水面膜// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "桥接桥接测试补水面膜 20260529// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "三顿三顿半同款冻干咖啡粉// 食品饮料",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "小熊小熊 4L 可视空气炸锅// 家居家电",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "search-btn",
|
||||
"label": "搜索批次/模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tb-chip",
|
||||
"label": "时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tb-chip",
|
||||
"label": "模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 4// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 3// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 2// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 1// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 4// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "model-card.",
|
||||
"label": "AI 生成 · model · 3// 真人模特",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"折叠侧栏",
|
||||
"全部商品 7 个",
|
||||
"立即生成 (预估 ¥0.00)"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# 功能审计 · model-photo
|
||||
|
||||
路由:`/model-photo` · 模式:isolated
|
||||
合计 32 · ✅ works 31 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 折叠侧栏
|
||||
- 全部商品 7 个
|
||||
- 立即生成 (预估 ¥0.00)
|
||||
|
||||
@@ -0,0 +1,533 @@
|
||||
{
|
||||
"name": "pipeline",
|
||||
"route": "/pipeline/1048451e-3b4a-4b66-a8f4-cb865096de2f",
|
||||
"url": "http://127.0.0.1:5173/pipeline/1048451e-3b4a-4b66-a8f4-cb865096de2f",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 29,
|
||||
"works": 27,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 2,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 31,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 56,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.pipeline-back",
|
||||
"label": "返回视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "sp-dot.done",
|
||||
"label": "脚本",
|
||||
"href": "#stage-1",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "sp-dot.active",
|
||||
"label": "基础资产",
|
||||
"href": "#stage-2",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "sp-dot",
|
||||
"label": "故事板",
|
||||
"href": "#stage-3",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 23,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "sp-dot",
|
||||
"label": "视频",
|
||||
"href": "#stage-4",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "sp-dot",
|
||||
"label": "拼接导出",
|
||||
"href": "#stage-5",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 27,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tag-add",
|
||||
"label": "添加人物",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tag-add",
|
||||
"label": "添加场景",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 24,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "↻ 整体重写",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "清空对话",
|
||||
"href": "",
|
||||
"disabled": true,
|
||||
"active": false,
|
||||
"verdict": "disabled"
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chat-mode.primary",
|
||||
"label": "AI 全生",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chat-mode",
|
||||
"label": "一句话主题",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chat-mode",
|
||||
"label": "自带脚本",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chat-icon-btn",
|
||||
"label": "上传脚本附件",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chat-send-btn",
|
||||
"label": "发送",
|
||||
"href": "",
|
||||
"disabled": true,
|
||||
"active": false,
|
||||
"verdict": "disabled"
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "重新生成全部",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "进入下一步",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"确认脚本,进入下一步"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
# 功能审计 · pipeline
|
||||
|
||||
路由:`/pipeline/1048451e-3b4a-4b66-a8f4-cb865096de2f` · 模式:isolated
|
||||
合计 29 · ✅ works 27 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 2
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 确认脚本,进入下一步
|
||||
|
||||
@@ -0,0 +1,705 @@
|
||||
{
|
||||
"name": "platform-cover",
|
||||
"route": "/platform-cover",
|
||||
"url": "http://127.0.0.1:5173/platform-cover",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 38,
|
||||
"works": 35,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 1,
|
||||
"noop": 2,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "back-pill",
|
||||
"label": "返回",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "new-prod",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.active",
|
||||
"label": "南卡南卡 Lite Pro 蓝牙耳机// 数码 3C",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "露露露露同款裸感瑜伽裤// 运动户外",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "透真透真清透物理防晒霜// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "滋啦滋啦速食牛肉面 · 6 桶装// 食品饮料",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "透真透真玻尿酸补水面膜// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "桥接桥接测试补水面膜 20260529// 美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "三顿三顿半同款冻干咖啡粉// 食品饮料",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "iw-prod-item.",
|
||||
"label": "小熊小熊 4L 可视空气炸锅// 家居家电",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 7,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "search-btn",
|
||||
"label": "搜索",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "抖抖音电商",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "淘淘宝",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "猫天猫",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "京京东",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "拼拼多多",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "红小红书",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "快快手",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 31,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "视视频号",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 32,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "a亚马逊",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 33,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "platform-card.",
|
||||
"label": "阿1688",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 34,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "opt.active",
|
||||
"label": "4 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 35,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "opt.",
|
||||
"label": "8 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 36,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "opt.",
|
||||
"label": "12 张",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 5,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 37,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary",
|
||||
"label": "立即生成 (预估 ¥2.00)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "skipped-destructive"
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"折叠侧栏",
|
||||
"全部商品 7 个",
|
||||
"搜索批次/平台",
|
||||
"时间",
|
||||
"平台"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# 功能审计 · platform-cover
|
||||
|
||||
路由:`/platform-cover` · 模式:isolated
|
||||
合计 38 · ✅ works 35 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)1 · ◷ noop-active 2 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 折叠侧栏
|
||||
- 全部商品 7 个
|
||||
- 搜索批次/平台
|
||||
- 时间
|
||||
- 平台
|
||||
|
||||
## ⏭ 破坏性按钮(未自动点,需人工验)
|
||||
- 立即生成 (预估 ¥2.00) `button`
|
||||
|
||||
@@ -0,0 +1,589 @@
|
||||
{
|
||||
"name": "product-create",
|
||||
"route": "/products/new",
|
||||
"url": "http://127.0.0.1:5173/products/new",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 31,
|
||||
"works": 31,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-edit-toggle",
|
||||
"label": "管理商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-create",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "商品分类",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "创建时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "南卡 Lite Pro 蓝牙耳机 · 1200×800南卡 Lite Pro 蓝牙耳机数码 3C",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 31,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "露露同款裸感瑜伽裤 · 1200×800露露同款裸感瑜伽裤运动户外2026-06-08 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "透真清透物理防晒霜 · 1200×800透真清透物理防晒霜美妆个护2026-06-08 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "滋啦速食牛肉面 · 6 桶装 · 1200×800滋啦速食牛肉面 · 6 桶装食品饮料2026-",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "透真玻尿酸补水面膜 · 1200×800透真玻尿酸补水面膜美妆个护2026-05-29 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 31,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "桥接测试补水面膜 20260529 · 1200×800桥接测试补水面膜 20260529美妆个",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "三顿半同款冻干咖啡粉 · 1200×800三顿半同款冻干咖啡粉食品饮料2026-06-08 创建",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "小熊 4L 可视空气炸锅 · 1200×800小熊 4L 可视空气炸锅家居家电2026-06-0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "x",
|
||||
"label": "关闭",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "select",
|
||||
"role": "",
|
||||
"cls": "select",
|
||||
"label": "美妆个护",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "pf-upload-zone",
|
||||
"label": "点击上传或拖拽图片到此处// 支持 JPG、PNG 格式,建议尺寸 800×800 以上,大小不",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn-guide",
|
||||
"label": "使用指南",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 13,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 29,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "取消",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 30,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary",
|
||||
"label": "创建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创建 素材 4",
|
||||
"空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-05-03 创建 ",
|
||||
"咖啡冻干粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05 创建 素",
|
||||
"防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创建 素材 7",
|
||||
"速食牛肉面 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 2026-05-10 ",
|
||||
"蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码 3C 2026-05-1",
|
||||
"补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创建 素材 "
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# 功能审计 · product-create
|
||||
|
||||
路由:`/products/new` · 模式:isolated
|
||||
合计 31 · ✅ works 31 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创建 素材 4
|
||||
- 空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-05-03 创建
|
||||
- 咖啡冻干粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05 创建 素
|
||||
- 防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创建 素材 7
|
||||
- 速食牛肉面 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 2026-05-10
|
||||
- 蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码 3C 2026-05-1
|
||||
- 补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创建 素材
|
||||
|
||||
@@ -0,0 +1,553 @@
|
||||
{
|
||||
"name": "product-detail",
|
||||
"route": "/products/045ad8d6-8b15-486b-a4a9-f6968eb1555f",
|
||||
"url": "http://127.0.0.1:5173/products/045ad8d6-8b15-486b-a4a9-f6968eb1555f",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 29,
|
||||
"works": 28,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ov-edit.ov-tri-trigger",
|
||||
"label": "AI 生成商品三视图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": true,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "ov-edit.ov-edit-single",
|
||||
"label": "编辑商品信息",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "qa-item",
|
||||
"label": "模特上身图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
},
|
||||
"consoleNote": [
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — ",
|
||||
"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — "
|
||||
]
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "qa-item",
|
||||
"label": "平台套图",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "qa-item",
|
||||
"label": "图片创作",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "qa-item.primary",
|
||||
"label": "生成视频",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab.active",
|
||||
"label": "AI 生成素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "视频项目",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 13,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "filter",
|
||||
"label": "全部类型",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "filter",
|
||||
"label": "最新生成",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 26,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 27,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 28,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "thumb.placeholder",
|
||||
"label": "点击放大",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 11,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"通过",
|
||||
"网格视图",
|
||||
"列表视图"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# 功能审计 · product-detail
|
||||
|
||||
路由:`/products/045ad8d6-8b15-486b-a4a9-f6968eb1555f` · 模式:isolated
|
||||
合计 29 · ✅ works 28 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 通过
|
||||
- 网格视图
|
||||
- 列表视图
|
||||
|
||||
@@ -0,0 +1,481 @@
|
||||
{
|
||||
"name": "products",
|
||||
"route": "/products",
|
||||
"url": "http://127.0.0.1:5173/products",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 25,
|
||||
"works": 25,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-edit-toggle",
|
||||
"label": "管理商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-create",
|
||||
"label": "新建商品",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "商品分类",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "创建时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "南卡 Lite Pro 蓝牙耳机 · 1200×800南卡 Lite Pro 蓝牙耳机数码 3C",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 31,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "露露同款裸感瑜伽裤 · 1200×800露露同款裸感瑜伽裤运动户外2026-06-08 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "透真清透物理防晒霜 · 1200×800透真清透物理防晒霜美妆个护2026-06-08 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "滋啦速食牛肉面 · 6 桶装 · 1200×800滋啦速食牛肉面 · 6 桶装食品饮料2026-",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "透真玻尿酸补水面膜 · 1200×800透真玻尿酸补水面膜美妆个护2026-05-29 创建素材",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 31,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "桥接测试补水面膜 20260529 · 1200×800桥接测试补水面膜 20260529美妆个",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "三顿半同款冻干咖啡粉 · 1200×800三顿半同款冻干咖啡粉食品饮料2026-06-08 创建",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "product-card",
|
||||
"label": "小熊 4L 可视空气炸锅 · 1200×800小熊 4L 可视空气炸锅家居家电2026-06-0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 30,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创建 素材 4",
|
||||
"空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-05-03 创建 ",
|
||||
"咖啡冻干粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05 创建 素",
|
||||
"防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创建 素材 7",
|
||||
"速食牛肉面 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 2026-05-10 ",
|
||||
"蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码 3C 2026-05-1",
|
||||
"补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创建 素材 "
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
# 功能审计 · products
|
||||
|
||||
路由:`/products` · 模式:isolated
|
||||
合计 25 · ✅ works 25 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创建 素材 4
|
||||
- 空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-05-03 创建
|
||||
- 咖啡冻干粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05 创建 素
|
||||
- 防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创建 素材 7
|
||||
- 速食牛肉面 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 2026-05-10
|
||||
- 蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码 3C 2026-05-1
|
||||
- 补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创建 素材
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
{
|
||||
"name": "projects-new",
|
||||
"route": "/projects/new",
|
||||
"url": "http://127.0.0.1:5173/projects/new",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 15,
|
||||
"works": 15,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost",
|
||||
"label": "退出",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 18,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "pp-chip",
|
||||
"label": "全部分类",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"1 选择商品 未选择",
|
||||
"2 项目配置 时长 · 风格 · 人物",
|
||||
"创建新商品 // 在此添加一个新商品",
|
||||
"透真玻尿酸补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创",
|
||||
"透真清透物理防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创",
|
||||
"三顿半同款冻干咖啡粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05",
|
||||
"南卡 Lite Pro 蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码 ",
|
||||
"滋啦速食牛肉面 · 6 桶装 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 20",
|
||||
"小熊 4L 可视空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-0",
|
||||
"露露同款裸感瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# 功能审计 · projects-new
|
||||
|
||||
路由:`/projects/new` · 模式:isolated
|
||||
合计 15 · ✅ works 15 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 1 选择商品 未选择
|
||||
- 2 项目配置 时长 · 风格 · 人物
|
||||
- 创建新商品 // 在此添加一个新商品
|
||||
- 透真玻尿酸补水面膜 · 1200×800 透真玻尿酸补水面膜 美妆个护 2026-05-15 创
|
||||
- 透真清透物理防晒霜 · 1200×800 透真清透物理防晒霜 美妆个护 2026-05-08 创
|
||||
- 三顿半同款冻干咖啡粉 · 1200×800 三顿半同款冻干咖啡粉 食品饮料 2026-05-05
|
||||
- 南卡 Lite Pro 蓝牙耳机 · 1200×800 南卡 Lite Pro 蓝牙耳机 数码
|
||||
- 滋啦速食牛肉面 · 6 桶装 · 1200×800 滋啦速食牛肉面 · 6 桶装 食品饮料 20
|
||||
- 小熊 4L 可视空气炸锅 · 1200×800 小熊 4L 可视空气炸锅 家居家电 2026-0
|
||||
- 露露同款裸感瑜伽裤 · 1200×800 露露同款裸感瑜伽裤 运动户外 2026-04-30 创
|
||||
|
||||
@@ -0,0 +1,467 @@
|
||||
{
|
||||
"name": "projects",
|
||||
"route": "/projects",
|
||||
"url": "http://127.0.0.1:5173/projects",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 24,
|
||||
"works": 22,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 2,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "收窄导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 37,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 21,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 23,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 50,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 26,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-edit-toggle",
|
||||
"label": "管理项目",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary.btn-lg",
|
||||
"label": "新建项目",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab.active",
|
||||
"label": "全部 6",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "进行中 5",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "已完成 1",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 10,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "div",
|
||||
"role": "",
|
||||
"cls": "tab",
|
||||
"label": "失败 0",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 12,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "商品品类",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "脚本来源",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "chip",
|
||||
"label": "创建时间",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "网格",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 13,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "列表",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"9:16 补水面膜 · 痛点种草 · v36 镜 · 0-15s 透真补水面膜 AI 全生 3/",
|
||||
"9:16 速食牛肉面 · 加班治愈4 镜 · 0-12s 滋啦速食 · 6 桶装 一句话主题 2",
|
||||
"删除项目",
|
||||
"9:16 透真防晒 · 通勤对比6 镜 · 0-18s 透真清透防晒霜 AI 全生 4/5 视频",
|
||||
"9:16 咖啡冻干 · 早八剧情5 镜 · 0-15s 三顿半同款冻干 一句话主题 3/5 故事",
|
||||
"9:16 蓝牙耳机 · 开箱测评5 镜 · 0-15s 南卡 Lite Pro 自带脚本 5/5",
|
||||
"9:16 瑜伽裤 · 通勤穿搭5 镜 · 0-15s 露露同款瑜伽裤 AI 全生 5/5 已完成",
|
||||
"故事板生成中",
|
||||
"资产生成中",
|
||||
"视频生成 4/6",
|
||||
"故事板生成失败"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
# 功能审计 · projects
|
||||
|
||||
路由:`/projects` · 模式:isolated
|
||||
合计 24 · ✅ works 22 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 2 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 9:16 补水面膜 · 痛点种草 · v36 镜 · 0-15s 透真补水面膜 AI 全生 3/
|
||||
- 9:16 速食牛肉面 · 加班治愈4 镜 · 0-12s 滋啦速食 · 6 桶装 一句话主题 2
|
||||
- 删除项目
|
||||
- 9:16 透真防晒 · 通勤对比6 镜 · 0-18s 透真清透防晒霜 AI 全生 4/5 视频
|
||||
- 9:16 咖啡冻干 · 早八剧情5 镜 · 0-15s 三顿半同款冻干 一句话主题 3/5 故事
|
||||
- 9:16 蓝牙耳机 · 开箱测评5 镜 · 0-15s 南卡 Lite Pro 自带脚本 5/5
|
||||
- 9:16 瑜伽裤 · 通勤穿搭5 镜 · 0-15s 露露同款瑜伽裤 AI 全生 5/5 已完成
|
||||
- 故事板生成中
|
||||
- 资产生成中
|
||||
- 视频生成 4/6
|
||||
- 故事板生成失败
|
||||
|
||||
@@ -0,0 +1,492 @@
|
||||
{
|
||||
"name": "settings",
|
||||
"route": "/settings",
|
||||
"url": "http://127.0.0.1:5173/settings",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 26,
|
||||
"works": 25,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn",
|
||||
"label": "取消",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 23,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary",
|
||||
"label": "保存所有变更",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 47,
|
||||
"api": 11
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "a",
|
||||
"role": "tab",
|
||||
"cls": "active",
|
||||
"label": "个人信息",
|
||||
"href": "#sec-profile",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "noop-active",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 0,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "a",
|
||||
"role": "tab",
|
||||
"cls": "",
|
||||
"label": "安全3 设备",
|
||||
"href": "#sec-security",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"tag": "a",
|
||||
"role": "tab",
|
||||
"cls": "",
|
||||
"label": "通知4/4",
|
||||
"href": "#sec-notify",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 18,
|
||||
"tag": "a",
|
||||
"role": "tab",
|
||||
"cls": "",
|
||||
"label": "创作默认",
|
||||
"href": "#sec-pref",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 19,
|
||||
"tag": "a",
|
||||
"role": "tab",
|
||||
"cls": "",
|
||||
"label": "显示",
|
||||
"href": "#sec-display",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 6,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 20,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "logout-pill",
|
||||
"label": "退出登录",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 21,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-sm",
|
||||
"label": "上传新头像",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 8,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 22,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "恢复默认",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 45,
|
||||
"api": 11
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 23,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "验证",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 23,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 24,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "更换",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 23,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 25,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "row-link",
|
||||
"label": "管理团队 →",
|
||||
"href": "#team",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
# 功能审计 · settings
|
||||
|
||||
路由:`/settings` · 模式:isolated
|
||||
合计 26 · ✅ works 25 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 1 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
[
|
||||
{
|
||||
"page": "asset-factory",
|
||||
"blocked": 0,
|
||||
"total": 24,
|
||||
"works": 22,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 2,
|
||||
"missing": 4
|
||||
},
|
||||
{
|
||||
"page": "image-optimize",
|
||||
"blocked": 0,
|
||||
"total": 24,
|
||||
"works": 24,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"missing": 12
|
||||
},
|
||||
{
|
||||
"page": "model-photo",
|
||||
"blocked": 0,
|
||||
"total": 32,
|
||||
"works": 31,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"missing": 7
|
||||
},
|
||||
{
|
||||
"page": "model-photo-demo-a",
|
||||
"blocked": 0,
|
||||
"total": 37,
|
||||
"works": 33,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 1,
|
||||
"noop": 3,
|
||||
"missing": 5
|
||||
},
|
||||
{
|
||||
"page": "model-photo-demo-b",
|
||||
"blocked": 0,
|
||||
"total": 37,
|
||||
"works": 36,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 1,
|
||||
"missing": 5
|
||||
},
|
||||
{
|
||||
"page": "platform-cover",
|
||||
"blocked": 0,
|
||||
"total": 38,
|
||||
"works": 35,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 1,
|
||||
"noop": 2,
|
||||
"missing": 8
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# 功能审计汇总
|
||||
|
||||
生成时间:2026-06-09T07:56:41.981Z · 模式:isolated
|
||||
|
||||
| 页面 | 合计 | ✅works | ❌dead | 🛑error | ⏭skip | 🔍missing | 状态 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| asset-factory | 24 | 22 | **0** | 0 | 0 | 4 | |
|
||||
| image-optimize | 24 | 24 | **0** | 0 | 0 | 12 | |
|
||||
| model-photo | 32 | 31 | **0** | 0 | 0 | 7 | |
|
||||
| model-photo-demo-a | 37 | 33 | **0** | 0 | 1 | 5 | |
|
||||
| model-photo-demo-b | 37 | 36 | **0** | 0 | 0 | 5 | |
|
||||
| platform-cover | 38 | 35 | **0** | 0 | 1 | 8 | |
|
||||
|
||||
- ⛔blocked = 页面始终落登录页/未就绪(后端或远程库不可用),**未审计**,非「0 缺陷」。修好后端再单独 `--only <page>` 复跑。
|
||||
- ❌dead = 点了五路探针(URL/浮层/自身状态/网络/DOM)全无反应,优先修。
|
||||
- 🔍missing = 设计稿 `/exact` 有、React 没渲染出来的控件(启发式,需人工过)。
|
||||
- ⏭skip = 破坏性按钮(删除/充值/生成…)未自动点,需人工验。
|
||||
- 单页明细见 `output/<page>.audit.md`。
|
||||
@@ -0,0 +1,333 @@
|
||||
{
|
||||
"name": "team",
|
||||
"route": "/team",
|
||||
"url": "http://127.0.0.1:5173/team",
|
||||
"mode": "isolated",
|
||||
"tally": {
|
||||
"total": 17,
|
||||
"works": 17,
|
||||
"dead": 0,
|
||||
"error": 0,
|
||||
"disabled": 0,
|
||||
"skipped": 0,
|
||||
"noop": 0,
|
||||
"blocked": 0
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"idx": 0,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "brand",
|
||||
"label": "Airshelf 工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "sidebar-toggle",
|
||||
"label": "展开导航",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"tag": "div",
|
||||
"role": "button",
|
||||
"cls": "search-box",
|
||||
"label": "搜索 (Ctrl K)",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 14,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "商品库",
|
||||
"href": "/products",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "视频项目",
|
||||
"href": "/projects",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "图片生成",
|
||||
"href": "/asset-factory",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 20,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "资产库",
|
||||
"href": "/library",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 36,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 8,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "active",
|
||||
"label": "团队",
|
||||
"href": "/team",
|
||||
"disabled": false,
|
||||
"active": true,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 17,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "消费",
|
||||
"href": "/account",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 22,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "设置",
|
||||
"href": "/settings",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": true,
|
||||
"mutations": 49,
|
||||
"api": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 11,
|
||||
"tag": "a",
|
||||
"role": "",
|
||||
"cls": "",
|
||||
"label": "工作台",
|
||||
"href": "/dashboard",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 25,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "icon-btn",
|
||||
"label": "消息中心",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 13,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-primary",
|
||||
"label": "创建账户",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-sm",
|
||||
"label": "充值",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"tag": "button",
|
||||
"role": "",
|
||||
"cls": "btn.btn-ghost.btn-sm",
|
||||
"label": "设置月限额",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": false,
|
||||
"overlay": true,
|
||||
"self": false,
|
||||
"mutations": 3,
|
||||
"api": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"tag": "a",
|
||||
"role": "button",
|
||||
"cls": "more",
|
||||
"label": "全部 →",
|
||||
"href": "",
|
||||
"disabled": false,
|
||||
"active": false,
|
||||
"verdict": "works",
|
||||
"signals": {
|
||||
"url": true,
|
||||
"overlay": false,
|
||||
"self": false,
|
||||
"mutations": 19,
|
||||
"api": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing": [
|
||||
"搜索",
|
||||
"李 小李的店",
|
||||
"余额 ¥327.40",
|
||||
"账户",
|
||||
"编辑",
|
||||
"重置密码",
|
||||
"移出"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# 功能审计 · team
|
||||
|
||||
路由:`/team` · 模式:isolated
|
||||
合计 17 · ✅ works 17 · ❌ **dead 0** · 🛑 error 0 · ⏭ skipped(破坏性)0 · ◷ noop-active 0 · ⚪ disabled 0
|
||||
|
||||
## 🔍 设计稿里有、React 没渲染出来的控件(MISSING · 启发式)
|
||||
> 按控件文字与设计稿 `/exact` 对比,可能含装饰/动态文案误报,人工过一眼。
|
||||
|
||||
- 搜索
|
||||
- 李 小李的店
|
||||
- 余额 ¥327.40
|
||||
- 账户
|
||||
- 编辑
|
||||
- 重置密码
|
||||
- 移出
|
||||
|
||||
Reference in New Issue
Block a user