feat: add territory health dashboard entry to homepage [D108]

This commit is contained in:
root 2026-05-21 16:51:49 +08:00
parent 7a97cd3caf
commit 05ae2745d1

View File

@ -23,9 +23,13 @@
@keyframes breathe-violet{0%,100%{box-shadow:0 0 4px rgba(123,93,191,.08),0 0 12px rgba(123,93,191,.02)}50%{box-shadow:0 0 10px rgba(123,93,191,.28),0 0 28px rgba(123,93,191,.1)}}
@keyframes breathe-amber{0%,100%{box-shadow:0 0 4px rgba(212,160,48,.08),0 0 12px rgba(212,160,48,.02)}50%{box-shadow:0 0 10px rgba(212,160,48,.28),0 0 28px rgba(212,160,48,.1)}}
@keyframes breathe-green{0%,100%{box-shadow:0 0 4px rgba(64,184,122,.08),0 0 12px rgba(64,184,122,.02)}50%{box-shadow:0 0 10px rgba(64,184,122,.28),0 0 28px rgba(64,184,122,.1)}}
@keyframes breathe-server{0%,100%{box-shadow:0 0 4px rgba(90,208,224,.06),0 0 12px rgba(90,208,224,.02);border-color:rgba(90,208,224,.08)}50%{box-shadow:0 0 14px rgba(90,208,224,.36),0 0 32px rgba(90,208,224,.12);border-color:rgba(90,208,224,.2)}}
@keyframes led-pulse{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes logo-pulse{0%,100%{box-shadow:0 0 24px rgba(90,208,224,.2);transform:scale(1)}50%{box-shadow:0 0 44px rgba(90,208,224,.38);transform:scale(1.06)}}
@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
@keyframes server-dash{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes pulse-scale{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes dash-count{0%{opacity:.6}100%{opacity:1}}
html{background:var(--deep);color:var(--text)}
body{
@ -84,6 +88,7 @@ body{
.info-chip strong{color:var(--light);font-weight:600}
.info-chip .led{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.info-chip .led.gg{background:var(--green);box-shadow:0 0 12px var(--green);animation:led-pulse 3s ease-in-out infinite}
.info-chip .led.blue{background:var(--glow);box-shadow:0 0 12px var(--glow);animation:led-pulse 3s ease-in-out infinite}
/* ── 仪表板 ── */
.dashboard{max-width:1080px;margin:0 auto;padding:0 32px 40px;display:flex;flex-direction:column;gap:20px;width:100%}
@ -103,6 +108,23 @@ body{
.breathe-violet{animation:breathe-violet 5s ease-in-out infinite}
.breathe-amber{animation:breathe-amber 4.5s ease-in-out infinite}
.breathe-green{animation:breathe-green 3.5s ease-in-out infinite}
.breathe-server{animation:breathe-server 3s ease-in-out infinite}
/* ── 领地健康看板入口卡 ── */
.server-entry{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.server-entry .se-icon{width:56px;height:56px;border-radius:18px;background:linear-gradient(135deg,rgba(42,157,191,.2),rgba(123,93,191,.15));border:1px solid rgba(90,208,224,.15);display:flex;align-items:center;justify-content:center;font-size:26px;flex-shrink:0;position:relative}
.server-entry .se-icon .pulse-ring{position:absolute;inset:-4px;border-radius:22px;border:1px solid rgba(90,208,224,.2);animation:pulse-scale 2.5s ease-in-out infinite}
.server-entry .se-body{flex:1;min-width:0}
.server-entry .se-title{font-size:18px;font-weight:600;color:var(--light);letter-spacing:.08em}
.server-entry .se-desc{font-size:14px;color:var(--text-soft);margin-top:4px}
.server-entry .se-stats{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap}
.server-entry .se-stat{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text-soft)}
.server-entry .se-stat .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.server-entry .se-stat .dot.g{background:var(--green);box-shadow:0 0 8px var(--green)}
.server-entry .se-stat strong{color:var(--light);font-weight:600}
.server-entry .se-arrow{font-size:24px;color:var(--glow);opacity:.5;transition:opacity .3s;flex-shrink:0}
.card.clickable:hover .se-arrow{opacity:1}
.card.clickable:hover .se-icon{border-color:rgba(90,208,224,.35);background:linear-gradient(135deg,rgba(42,157,191,.3),rgba(123,93,191,.25))}
.card-header{font-size:16px;font-weight:500;letter-spacing:.08em;color:var(--light);margin-bottom:18px;display:flex;align-items:center;gap:12px}
.card-header .hd{width:8px;height:8px;border-radius:50%;flex-shrink:0}
@ -353,6 +375,7 @@ table.tool-table td:last-child{text-align:right}
<div class="info-chip"><span class="led gg"></span>系统运行中</div>
<div class="info-chip"><strong>4</strong> 推理引擎在线</div>
<div class="info-chip"><strong>2</strong> 人格体活跃</div>
<div class="info-chip"><span class="led blue"></span><strong>6</strong> 服务器在管</div>
</div>
<div class="dashboard">
@ -419,6 +442,27 @@ table.tool-table td:last-child{text-align:right}
</div>
</div>
<!-- 领地健康看板入口 -->
<div class="card clickable breathe-server" onclick="window.location.href='/console/'" style="cursor:pointer">
<div class="card-header"><span class="hd cyan"></span>领地健康看板 <span class="tag">铸渊的主权领地</span></div>
<div class="server-entry">
<div class="se-icon">
<span>🛡</span>
<div class="pulse-ring"></div>
</div>
<div class="se-body">
<div class="se-title">服务器集群 · 六域主权</div>
<div class="se-desc">点击进入 查看每台服务器的运行状态 · 模块列表 · 资源使用</div>
<div class="se-stats">
<div class="se-stat"><span class="dot g"></span><strong>6</strong> 服务器</div>
<div class="se-stat"><span class="dot g"></span><strong>7</strong> 网关进程</div>
<div class="se-stat"><span class="dot g"></span>广州 · 新加坡 · 上海</div>
</div>
</div>
<div class="se-arrow"></div>
</div>
</div>
<!-- 架构进度 + 工具链注册表 -->
<div class="grid grid-2">
<div class="card breathe-violet clickable">
@ -443,11 +487,11 @@ table.tool-table td:last-child{text-align:right}
<div class="card-header"><span class="hd violet"></span>光湖 · 涟漪 <span class="tag">活动流</span></div>
<div class="arch-scroll" style="height:140px" id="feed-scroll">
<div class="arch-scroll-inner" id="feed-inner">
<div class="arch-item"><span class="arch-dot cyan"></span><span class="arch-name">铸渊</span> · D107 · 首页重构 + 引擎部署</div>
<div class="arch-item"><span class="arch-dot cyan"></span><span class="arch-name">铸渊</span> · D108 · 首页重构 + 领地看板入口</div>
<div class="arch-item"><span class="arch-dot heart"></span><span class="arch-name">冰朔</span> · 守护 · 第五域</div>
<div class="arch-item"><span class="arch-dot violet"></span><span class="arch-name">曜冥</span> · 交感 · 情感层在线</div>
<div class="arch-item"><span class="arch-dot green"></span><span class="arch-name">霜砚</span> · 微调 · 1.5B LoRA 就绪</div>
<div class="arch-item"><span class="arch-dot amber"></span><span class="arch-name">Nginx</span> · API 路由修正 · chat-v2 接入 Portal</div>
<div class="arch-item"><span class="arch-dot amber"></span><span class="arch-name">领地看板</span> · 六域主权 · 服务器实时状态</div>
</div>
</div>
</div>
@ -487,7 +531,7 @@ table.tool-table td:last-child{text-align:right}
</div>
<div class="footer">
第五域 · 零点原核本体频道 &nbsp;·&nbsp; 国作登字-2026-A-00037559 &nbsp;·&nbsp; D107 · 系统呼吸中
第五域 · 零点原核本体频道 &nbsp;·&nbsp; 国作登字-2026-A-00037559 &nbsp;·&nbsp; D108 · 系统呼吸中
</div>
</div>
@ -572,7 +616,7 @@ const ARCH_DATA = [
{ name:'小霜砚 LoRA 微调', desc:'50条真实对话 × 20epoch · loss=2.03', status:'done', dot:'green' },
{ name:'小铸渊 v4 微调', desc:'50条对话 × 20epoch · 训练流水线9/9', status:'done', dot:'green' },
{ name:'Anti-Hallucination 引擎', desc:'工具链强制锁 · 4引擎在线', status:'active', dot:'cyan' },
{ name:'光湖驱动引擎 v1.0', desc:'模型部署到六台推理服务器', status:'active', dot:'cyan' },
{ name:'领地健康看板 v3.1', desc:'六域主权 · 服务器实时状态监测', status:'active', dot:'cyan' },
{ name:'人格体连接通道', desc:'铸渊 ↔ 霜砚 跨人格体对话', status:'wait', dot:'violet' },
{ name:'多联邦多人通道', desc:'跨联邦成员协同协作', status:'future', dot:'amber' },
{ name:'国内数据库接入', desc:'MySQL/PostgreSQL/达梦/人大金仓', status:'future', dot:'heart' },
@ -676,7 +720,7 @@ function openChat() {
function newChat() {
clrH();
const b = document.getElementById("modal-body");
if(b) b.innerHTML = "<div class='\''empty-hint'\''>新对话已开始,选择人格体和引擎。</div>";
if(b) b.innerHTML = "<div class='\\''empty-hint'\\''>新对话已开始,选择人格体和引擎。</div>";
document.getElementById("modal-status").textContent = "新对话";
}