feat(webdemo): add database-backed usage dashboard
This commit is contained in:
+22
-14
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Billing 管理台</title>
|
||||
<title>CPA</title>
|
||||
<link rel="stylesheet" href="./styles/base.css">
|
||||
<link rel="stylesheet" href="./styles/layout.css">
|
||||
<link rel="stylesheet" href="./styles/keys.css">
|
||||
@@ -13,23 +13,27 @@
|
||||
</head>
|
||||
<body class="read-only">
|
||||
<div class="app-shell">
|
||||
<header class="topbar">
|
||||
<div class="brand"><div class="brand-mark">B</div><div><strong>Billing</strong><span> · 管理控制台</span></div></div>
|
||||
<div class="auth-box"><input id="key" type="password" autocomplete="off" aria-label="管理密钥"></div>
|
||||
<header class="workspace-bar">
|
||||
<nav class="workspace-nav" aria-label="工作区">
|
||||
<button class="nav-button active" type="button" data-view="keys">用户</button>
|
||||
<button class="nav-button" type="button" data-view="usage">请求</button>
|
||||
<button class="nav-button" type="button" data-view="pricing">模型</button>
|
||||
<button class="nav-button" type="button" data-view="logs">日志</button>
|
||||
</nav>
|
||||
<div class="topbar-actions">
|
||||
<div id="demo-perspective" class="demo-perspective hidden" aria-label="演示视角">
|
||||
<button type="button" data-perspective="admin">管理员示教</button>
|
||||
<button type="button" data-perspective="user">普通用户视角</button>
|
||||
</div>
|
||||
<div class="auth-box"><input id="key" type="password" autocomplete="off" aria-label="管理密钥"></div>
|
||||
</div>
|
||||
</header>
|
||||
<nav class="workspace-nav" aria-label="工作区">
|
||||
<button class="nav-button active" type="button" data-view="keys">用户 Key</button>
|
||||
<button class="nav-button" type="button" data-view="usage">请求明细</button>
|
||||
<button class="nav-button" type="button" data-view="pricing">价格配置</button>
|
||||
</nav>
|
||||
<main>
|
||||
<section id="view-keys" class="view active">
|
||||
<div class="summary-grid">
|
||||
<article class="summary-card"><span>今日请求</span><strong id="metric-requests">—</strong><small>自然日内实际请求</small></article>
|
||||
<article class="summary-card"><span>今日 Token</span><strong id="metric-tokens">—</strong><small>输入与输出合计</small></article>
|
||||
<article class="summary-card"><span>今日成本</span><strong id="metric-cost">—</strong><small>按已配置价格计算</small></article>
|
||||
<div class="chart-grid">
|
||||
<article class="chart-card"><div id="user-usage" class="user-usage"></div></article>
|
||||
<article class="chart-card"><div id="quota-chart" class="quota-matrix-wrap"></div></article>
|
||||
</div>
|
||||
<div class="chart-grid"><article class="chart-card"><header><div><h2>今日用户用量</h2></div></header><div id="user-usage" class="user-usage"></div></article><article class="chart-card"><header><div><h2>近 7 日 Token</h2></div></header><div id="daily-chart" class="bar-chart"></div></article></div>
|
||||
<div id="key-management" class="surface admin-only">
|
||||
<div class="surface-toolbar"><span id="key-status" class="status"></span><button id="create-key" class="primary" type="button">创建 Key</button></div>
|
||||
<div class="table-wrap"><table class="key-table"><thead><tr><th class="left">用户</th><th class="left">Key</th><th class="left">状态</th><th class="left">余额 / 额度</th><th class="left">并发</th><th class="left">路由</th><th class="left">允许模型</th><th class="left">查看</th></tr></thead><tbody id="key-rows"></tbody></table></div>
|
||||
@@ -75,6 +79,10 @@
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="view-logs" class="view">
|
||||
<div class="surface"><div class="empty">暂无日志</div></div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user