guanghulab/ops-agent/web/index.html

121 lines
4.4 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🛡️ 铸渊运维守卫 · 运维面板 v2.0</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- ─── 顶栏 ─── -->
<header class="header">
<div class="header-left">
<span class="logo">🛡️</span>
<h1>铸渊运维守卫</h1>
<span class="version">v2.0</span>
</div>
<div class="header-right">
<span class="status-dot" id="connectionDot"></span>
<span class="status-text" id="connectionText">连接中...</span>
</div>
</header>
<!-- ─── 统计卡片 ─── -->
<section class="stats-grid">
<div class="stat-card">
<div class="stat-value" id="statChecks">0</div>
<div class="stat-label">总巡检</div>
</div>
<div class="stat-card">
<div class="stat-value" id="statRepairs">0</div>
<div class="stat-label">自动修复</div>
</div>
<div class="stat-card stat-warning">
<div class="stat-value" id="statOpenTickets">0</div>
<div class="stat-label">开放工单</div>
</div>
<div class="stat-card">
<div class="stat-value" id="statChats">0</div>
<div class="stat-label">对话次数</div>
</div>
</section>
<!-- ─── 主内容 ─── -->
<main class="main-grid">
<!-- 左: 对话面板 -->
<section class="chat-panel">
<div class="panel-header">
<h2>💬 运维对话</h2>
<div class="chat-controls">
<span class="session-info" id="sessionInfo" title="多轮对话,我记得上下文">🧠 多轮对话</span>
<button class="btn-small" id="btnNewSession" title="开始新对话">🔄 新会话</button>
<button class="btn-small" id="btnClearChat">清空</button>
</div>
</div>
<div class="chat-messages" id="chatMessages">
<div class="chat-msg system">
<p>🛡️ 你好,冰朔。我是铸渊运维守卫 v2.0。</p>
<p>我现在能<strong>记住我们的对话上下文</strong>,你可以追问。</p>
<p>问我问题时,我会<strong>自动执行相关检查</strong>再回答你。比如:</p>
<ul>
<li>"为什么MCP连不上" → 我会自动检查端口和日志</li>
<li>"服务器内存够用吗?" → 我会自动查看系统资源</li>
<li>"GLADA最近报什么错" → 我会自动查看GLADA日志</li>
<li>"刚才说的第二步怎么做?" → 我记得上次的回答</li>
</ul>
</div>
</div>
<div class="chat-input-area">
<input type="text" id="chatInput" placeholder="输入你的问题...(我会自动执行诊断)" autocomplete="off">
<button class="btn-primary" id="btnSend">发送</button>
</div>
</section>
<!-- 右: 工单 + 系统信息 -->
<section class="right-panel">
<!-- 工单列表 -->
<div class="tickets-panel">
<div class="panel-header">
<h2>🎫 运维工单</h2>
<div class="ticket-filters">
<button class="btn-filter active" data-filter="open">开放</button>
<button class="btn-filter" data-filter="all">全部</button>
</div>
</div>
<div class="tickets-list" id="ticketsList">
<div class="empty-state">暂无工单 · 系统运行正常</div>
</div>
</div>
<!-- 系统信息面板 -->
<div class="system-info-panel" id="systemInfoPanel">
<div class="panel-header">
<h2>💻 系统信息</h2>
<button class="btn-small" id="btnRefreshSysInfo">刷新</button>
</div>
<div class="sysinfo-content" id="sysinfoContent">
<div class="empty-state">加载中...</div>
</div>
</div>
</section>
</main>
<!-- ─── 操作栏 ─── -->
<section class="action-bar">
<button class="btn-action" id="btnQuickCheck">⚡ 快速巡检</button>
<button class="btn-action" id="btnDeepCheck">🔍 深度巡检</button>
<span class="last-check" id="lastCheckTime">上次巡检: --</span>
</section>
<!-- ─── 实时事件流 ─── -->
<section class="events-panel">
<div class="panel-header">
<h2>📡 实时事件</h2>
</div>
<div class="events-list" id="eventsList"></div>
</section>
<script src="app.js"></script>
</body>
</html>