更新: 8 个文件 - 2026-03-17 01:15:00

这个提交包含在:
hao
2026-03-17 01:15:00 -07:00
父节点 40ffbbd9cd
当前提交 39a6eb6e19
修改 8 个文件,包含 3808 行新增0 行删除

查看文件

@@ -0,0 +1,74 @@
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
<symbol id="spark" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M12 3l1.7 5.3L19 10l-5.3 1.7L12 17l-1.7-5.3L5 10l5.3-1.7L12 3z"/>
</symbol>
<symbol id="refresh" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M20 11a8 8 0 10-2.3 5.7M20 5v6h-6"/>
</symbol>
<symbol id="docs" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M7 4.5h9a2 2 0 012 2V19a1 1 0 01-1.5.9L12 17.5l-4.5 2.4A1 1 0 016 19V6.5a2 2 0 012-2z"/>
</symbol>
<symbol id="legacy" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M12 8v4l3 2m5-2a8 8 0 11-8-8"/>
</symbol>
<symbol id="source" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M8 9l-4 3 4 3m8-6l4 3-4 3m-6 5l4-16"/>
</symbol>
<symbol id="search" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M11 18a7 7 0 100-14 7 7 0 000 14zm8 3l-4.2-4.2"/>
</symbol>
<symbol id="filter" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M4 6h16M7 12h10m-7 6h4"/>
</symbol>
<symbol id="systems" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M4 5h16v10H4zm3 14h10"/>
</symbol>
<symbol id="failure" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M12 9v4m0 4h.01M10.3 4.9l-7 12.1A1 1 0 004.1 18h15.8a1 1 0 00.87-1.5l-7-12.1a1 1 0 00-1.74 0z"/>
</symbol>
<symbol id="queue" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M8 6h12M8 12h12M8 18h12M4 6h.01M4 12h.01M4 18h.01"/>
</symbol>
<symbol id="timeline" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M6 6h.01M6 12h.01M6 18h.01M10 6h8M10 12h8M10 18h8"/>
</symbol>
<symbol id="reasoning" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M9 18h6m-9-4h12m-9-4h6M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"/>
</symbol>
<symbol id="evidence" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M5 4h10l4 4v12H5zM14 4v4h4"/>
</symbol>
<symbol id="logs" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M4 6h16M4 12h10M4 18h7"/>
</symbol>
<symbol id="sources" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M10 13a5 5 0 017.1 0l.9.9a5 5 0 01-7.1 7.1l-.9-.9M14 11a5 5 0 00-7.1 0l-.9.9A5 5 0 0013 19.1l.9-.9"/>
</symbol>
<symbol id="json" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M9 4c-2 0-3 1-3 3v2c0 1-.5 1.5-1.5 2C5.5 11.5 6 12 6 13v2c0 2 1 3 3 3m6-14c2 0 3 1 3 3v2c0 1 .5 1.5 1.5 2-1 .5-1.5 1-1.5 2v2c0 2-1 3-3 3"/>
</symbol>
<symbol id="report" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M6 20h12M8 16V8m4 8V4m4 12v-6"/>
</symbol>
<symbol id="markdown" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M4 6h16v12H4zM7 15V9l3 3 3-3v6m3-3h2m-1-2v4"/>
</symbol>
<symbol id="browser" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M4 7h16M7 4h10a3 3 0 013 3v10a3 3 0 01-3 3H7a3 3 0 01-3-3V7a3 3 0 013-3z"/>
</symbol>
<symbol id="sync" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="8" fill="currentColor"/>
</symbol>
<symbol id="chevron" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M6 9l6 6 6-6"/>
</symbol>
<symbol id="link" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M10 14l4-4m-7 7l-1.6 1.6a3 3 0 104.2 4.2L11 21m2-18l1.4-1.4a3 3 0 114.2 4.2L17 7"/>
</symbol>
<symbol id="shield" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M12 3l7 3v5c0 4.5-2.9 8.3-7 10-4.1-1.7-7-5.5-7-10V6l7-3z"/>
</symbol>
<symbol id="playbook" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8" d="M5 4h11l3 3v13H5zM14 4v3h3M8 11h8M8 15h5"/>
</symbol>
</svg>

之后

宽度:  |  高度:  |  大小: 5.2 KiB

文件差异内容过多而无法显示 加载差异

查看文件

@@ -0,0 +1,168 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Authorized Lab Dashboard</title>
<link rel="stylesheet" href="./assets/styles.css">
</head>
<body>
<div class="grid-bg" aria-hidden="true"></div>
<div class="dashboard-shell">
<header class="hero">
<div class="hero-glow hero-glow-left" aria-hidden="true"></div>
<div class="hero-glow hero-glow-right" aria-hidden="true"></div>
<div class="hero-top">
<div class="hero-copy">
<div class="hero-eyebrow">
<svg class="icon"><use href="./assets/icons.svg#spark"></use></svg>
<span>Authorized Lab Dashboard</span>
</div>
<h1>本地攻防实证工作台</h1>
<p>
Lovart 设计外壳已本地化并接入真实 run bundle 数据。页面只面向授权实验资产,
聚合 advisory、timeline、evidence、logs、sources、raw JSON 与失败原因。
</p>
</div>
<div class="hero-actions">
<button id="refreshDashboard" class="button button-primary" type="button">
<svg class="icon"><use href="./assets/icons.svg#refresh"></use></svg>
<span>Refresh</span>
</button>
<label class="toggle-card">
<span class="toggle-label">Auto Refresh</span>
<span class="toggle-switch">
<input id="autoRefresh" type="checkbox" checked>
<span class="toggle-slider"></span>
</span>
</label>
<div id="syncState" class="sync-state">
<svg class="icon icon-sync"><use href="./assets/icons.svg#sync"></use></svg>
<div>
<strong>Booting</strong>
<span>Loading generated JSON</span>
</div>
</div>
<div class="hero-links">
<a class="button button-secondary" href="./docs/project-features.html" target="_blank" rel="noreferrer">
<svg class="icon"><use href="./assets/icons.svg#docs"></use></svg>
<span>Feature Docs</span>
</a>
<a class="button button-secondary" href="./docs/frontend-dashboard-design.html" target="_blank" rel="noreferrer">
<svg class="icon"><use href="./assets/icons.svg#playbook"></use></svg>
<span>UI Spec</span>
</a>
<a class="button button-secondary" href="./legacy/index.html" target="_blank" rel="noreferrer">
<svg class="icon"><use href="./assets/icons.svg#legacy"></use></svg>
<span>Legacy UI</span>
</a>
</div>
</div>
</div>
<div id="metricCards" class="metrics-row"></div>
</header>
<main class="main-container">
<aside class="sidebar">
<section class="sidebar-section">
<div class="section-header">
<span>
<svg class="icon"><use href="./assets/icons.svg#filter"></use></svg>
Filters
</span>
<span id="runCount" class="section-badge">0 shown</span>
</div>
<div class="filter-group">
<label class="field">
<span>Search</span>
<div class="search-box">
<svg class="icon"><use href="./assets/icons.svg#search"></use></svg>
<input id="searchInput" type="text" placeholder="Search run id, advisory, title">
</div>
</label>
<label class="field">
<span>System</span>
<select id="systemFilter" class="filter-select">
<option value="">All systems</option>
</select>
</label>
<label class="field">
<span>Status</span>
<select id="statusFilter" class="filter-select">
<option value="">All statuses</option>
</select>
</label>
<label class="field">
<span>Profile</span>
<select id="profileFilter" class="filter-select">
<option value="">All profiles</option>
</select>
</label>
</div>
</section>
<section class="sidebar-section">
<div class="section-header">
<span>
<svg class="icon"><use href="./assets/icons.svg#systems"></use></svg>
Systems
</span>
</div>
<div id="systemStats" class="system-stats"></div>
</section>
<section class="sidebar-section">
<div class="section-header">
<span>
<svg class="icon"><use href="./assets/icons.svg#failure"></use></svg>
Recent Failures
</span>
</div>
<div id="recentFailures" class="failure-list"></div>
</section>
<section class="sidebar-section sidebar-section-fill">
<div class="section-header">
<span>
<svg class="icon"><use href="./assets/icons.svg#queue"></use></svg>
Run Queue
</span>
</div>
<div id="runQueue" class="run-list"></div>
</section>
</aside>
<section id="detailWorkspace" class="workspace">
<div class="workspace-empty">
<svg class="icon icon-xl"><use href="./assets/icons.svg#shield"></use></svg>
<h2>Select a run</h2>
<p>Pick a run from the left queue to inspect timeline, evidence, logs, sources and raw JSON.</p>
</div>
</section>
</main>
<footer class="dashboard-footer">
<div class="footer-left">
<span class="footer-note">
<svg class="icon"><use href="./assets/icons.svg#source"></use></svg>
UI shell is vendorized from a local Lovart source copy, not an online runtime dependency.
</span>
</div>
<div class="footer-links">
<a href="./docs/design-source.html" target="_blank" rel="noreferrer">Design source</a>
<a href="./assets/design-source.json" target="_blank" rel="noreferrer">Manifest JSON</a>
<a href="./summary.json" target="_blank" rel="noreferrer">Summary JSON</a>
</div>
</footer>
</div>
<script src="./assets/app.js"></script>
</body>
</html>

查看文件

@@ -0,0 +1,18 @@
{
"template_id": "lovart-authorized-lab-dashboard",
"source_url": "https://assets-persist.lovart.ai/agent_images/464011bb-fbbc-4bd4-98f8-90897dd43612.html",
"downloaded_at": "2026-03-17T07:56:29Z",
"original_filename": "464011bb-fbbc-4bd4-98f8-90897dd43612.html",
"vendor_source_path": "scripts/lab/dashboard_templates/lovart/vendor/464011bb-fbbc-4bd4-98f8-90897dd43612.html",
"runtime_template": {
"index": "scripts/lab/dashboard_templates/lovart/index.html",
"styles": "scripts/lab/dashboard_templates/lovart/assets/styles.css",
"app": "scripts/lab/dashboard_templates/lovart/assets/app.js",
"icons": "scripts/lab/dashboard_templates/lovart/assets/icons.svg"
},
"notes": [
"The remote Lovart HTML is tracked for provenance only and is not used at runtime.",
"Runtime assets are localized into repository-managed templates and generated output.",
"External fonts and icon CDNs are intentionally removed from the generated dashboard."
]
}