新增独立 xiaobai-datahub 服务(SQLite WAL、Tushare 盘后发布、/v1 契约和管理后台),不改现站页面与数据链路。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
54 lines
2.0 KiB
HTML
54 lines
2.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>xiaobai-datahub 管理后台</title>
|
|
<link rel="stylesheet" href="/admin/styles.css" />
|
|
</head>
|
|
<body>
|
|
<div id="app">
|
|
<section id="login-view" class="panel auth-panel">
|
|
<h1>数据中枢</h1>
|
|
<p class="muted">内网管理后台,用于查看源状态、调度和盘后发布批次。</p>
|
|
<form id="login-form">
|
|
<label>账号 <input name="username" value="hub_admin" autocomplete="username" /></label>
|
|
<label>密码 <input name="password" type="password" autocomplete="current-password" /></label>
|
|
<button type="submit">登录</button>
|
|
<p id="login-error" class="error" hidden></p>
|
|
</form>
|
|
</section>
|
|
|
|
<section id="change-view" class="panel auth-panel" hidden>
|
|
<h1>修改初始密码</h1>
|
|
<form id="change-form">
|
|
<label>当前密码 <input name="current" type="password" /></label>
|
|
<label>新密码(至少 8 位) <input name="new_password" type="password" /></label>
|
|
<button type="submit">保存并继续</button>
|
|
<p id="change-error" class="error" hidden></p>
|
|
</form>
|
|
</section>
|
|
|
|
<section id="shell" hidden>
|
|
<header class="top">
|
|
<strong>xiaobai-datahub</strong>
|
|
<span id="phase" class="pill"></span>
|
|
<span id="who" class="muted"></span>
|
|
<button type="button" id="theme-btn" class="ghost">夜间</button>
|
|
<button type="button" id="logout-btn" class="ghost">退出</button>
|
|
</header>
|
|
<nav>
|
|
<button data-page="overview" class="active">总览</button>
|
|
<button data-page="sources">数据源</button>
|
|
<button data-page="jobs">调度任务</button>
|
|
<button data-page="release">盘后发布</button>
|
|
<button data-page="datasets">数据集</button>
|
|
<button data-page="audit">审计</button>
|
|
</nav>
|
|
<main id="page"></main>
|
|
</section>
|
|
</div>
|
|
<script src="/admin/app.js"></script>
|
|
</body>
|
|
</html>
|