Files
iAOP/web/admin/index.html
T

120 lines
4.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>iAOP 管理控制台</title>
<link rel="stylesheet" href="admin.css">
</head>
<body>
<!-- iAOP 管理功能界面(issue #135 / PRD 8.1/8.2)
纯静态单页(无构建链):模型管理 / 知识库管理 / 告警确认 / 审计查询。
语义对齐后端内核:template_registry(dev/staging/prod 逐级 promote + 回滚)、
rag-kb 文档资产、PRD 8.1 告警状态机(待处理→已确认→已闭环)、_log 审计。 -->
<header id="topbar">
<h1>iAOP 管理控制台 <span class="sub">模型 / 知识库 / 告警 / 审计</span></h1>
<div id="topbar-right">
<span id="who" class="hint"></span>
<a href="../cockpit/index.html">驾驶舱</a>
<a href="../studio/index.html">配置台</a>
</div>
</header>
<nav id="tabs">
<button class="tab active" data-page="models">模型管理</button>
<button class="tab" data-page="kb">知识库管理</button>
<button class="tab" data-page="alerts">告警确认</button>
<button class="tab" data-page="audit">审计查询</button>
</nav>
<!-- ======================= 模型管理 ======================= -->
<section class="page active" id="page-models">
<div class="panel">
<h2>模型模板列表(阶段:dev → staging → prod,对齐 template_registry)</h2>
<div class="row">
<input id="model-name" placeholder="模型名,如 quality_forecast">
<input id="model-version" placeholder="初始版本,如 1.0.0">
<button id="btn-register" class="primary">注册新版本</button>
<span class="hint">语义对齐 core/model-framework/template_registry.py:promote 逐级提升、rollback 回退、全程审计</span>
</div>
<table>
<thead><tr><th>模型</th><th>版本</th><th>阶段</th><th>作者</th><th>更新时间</th><th>操作</th></tr></thead>
<tbody id="model-tbody"></tbody>
</table>
</div>
</section>
<!-- ======================= 知识库管理 ======================= -->
<section class="page" id="page-kb">
<div class="panel">
<h2>知识库文档(来源:templates/*/rag-kb/documents,经 build_citations 索引)</h2>
<div class="row">
<input type="file" id="kb-file" accept=".md,.txt">
<button id="btn-kb-upload" class="primary">上传并索引</button>
<span id="kb-hint" class="hint"></span>
</div>
<table>
<thead><tr><th>文档</th><th>来源</th><th>章节数</th><th>索引状态</th><th>操作</th></tr></thead>
<tbody id="kb-tbody"></tbody>
</table>
<div id="kb-detail" class="detail" hidden></div>
</div>
</section>
<!-- ======================= 告警确认 ======================= -->
<section class="page" id="page-alerts">
<div class="split-alerts">
<div class="panel">
<h2>告警列表(状态机:待处理 → 已确认 → 已闭环,PRD 8.1)</h2>
<div class="row">
<select id="alert-filter">
<option value="">全部状态</option>
<option value="pending">待处理</option>
<option value="acked">已确认</option>
<option value="closed">已闭环</option>
</select>
<span class="hint">severity 配色来自 alarm_panel.ti.yaml(P0 红 / P1 黄 / P2 蓝)</span>
</div>
<div id="alert-list"></div>
</div>
<div class="panel" id="alert-detail-panel">
<h2>告警详情(LLM 解释 + SOP)</h2>
<div id="alert-detail"><p class="hint">选择左侧告警查看详情</p></div>
</div>
</div>
</section>
<!-- ======================= 审计查询 ======================= -->
<section class="page" id="page-audit">
<div class="panel">
<h2>操作审计日志</h2>
<div class="row">
<input id="audit-q" placeholder="关键词(操作者/资源/原因)">
<select id="audit-action">
<option value="">全部动作</option>
<option value="create">create</option>
<option value="update">update</option>
<option value="delete">delete</option>
<option value="publish">publish</option>
<option value="rollback">rollback</option>
<option value="promote">promote</option>
<option value="ack">ack</option>
<option value="close">close</option>
<option value="login">login</option>
</select>
<button id="btn-audit-filter">筛选</button>
<button id="btn-audit-export" class="primary">导出 JSON</button>
</div>
<table>
<thead><tr><th>时间</th><th>操作者</th><th>动作</th><th>资源</th><th>结果/原因</th></tr></thead>
<tbody id="audit-tbody"></tbody>
</table>
</div>
</section>
<script src="../auth/auth.js"></script>
<script src="../auth/user_store.js"></script>
<script src="admin.js"></script>
</body>
</html>