feat: sync current progress (P0 hardening + P1 observability + deploy docs/systemd)

This commit is contained in:
OpenClaw Agent
2026-02-28 23:51:23 +08:00
commit d17296d794
96 changed files with 6358 additions and 0 deletions

72
web/index.html Normal file
View File

@@ -0,0 +1,72 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Asset Tracker</title>
<link rel="stylesheet" href="/app/static/style.css" />
</head>
<body>
<div class="container">
<h1>Asset Tracker</h1>
<section id="login-section" class="card">
<h2>登录</h2>
<div class="row">
<input id="username" placeholder="用户名" value="admin" />
<input id="password" type="password" placeholder="密码" value="admin123" />
<button id="login-btn">登录</button>
</div>
<p class="hint">默认账号admin / admin123</p>
</section>
<section id="app-section" class="hidden">
<div class="card">
<div class="row between">
<h2>仪表盘</h2>
<button id="refresh-dashboard">刷新</button>
</div>
<div id="dashboard" class="grid"></div>
</div>
<div class="card">
<h2>分类管理</h2>
<div class="row">
<input id="cat-name" placeholder="分类名,如:服务器" />
<select id="cat-type">
<option value="digital">digital</option>
<option value="real">real</option>
</select>
<button id="add-cat">新增分类</button>
</div>
<ul id="category-list"></ul>
</div>
<div class="card">
<h2>资产管理</h2>
<div class="row wrap">
<input id="asset-name" placeholder="资产名称" />
<select id="asset-category"></select>
<input id="asset-quantity" type="number" step="0.01" placeholder="数量" value="1" />
<input id="asset-price" type="number" step="0.01" placeholder="单价" value="100" />
<input id="asset-currency" placeholder="币种,如 USD" value="USD" />
<input id="asset-expiry" type="datetime-local" />
<button id="add-asset">新增资产</button>
</div>
<div class="table-wrap">
<table>
<thead>
<tr><th>ID</th><th>名称</th><th>分类</th><th>金额</th><th>状态</th><th>到期</th><th>操作</th></tr>
</thead>
<tbody id="asset-tbody"></tbody>
</table>
</div>
<div id="asset-cards" class="asset-cards"></div>
</div>
</section>
<pre id="msg"></pre>
</div>
<script src="/app/static/app.js"></script>
</body>
</html>