Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

239 lines
10 KiB
HTML
Raw Permalink 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.

<!-- 🚀 YM-COLLAB-20260307-001 · CD 端到端验证标记 · 铸渊部署 -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>光湖系统 · 开发状态看板</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="dashboard">
<!-- 顶部标题栏 -->
<header class="header">
<div class="logo">
<span class="logo-icon">🌊</span>
<h1>光湖系统 · 开发状态看板</h1>
</div>
<div class="status-indicator">
<span class="dot green"></span>
<span>系统运行中</span>
</div>
</header>
<!-- ===== 环节2新增API数据区域 ===== -->
<div id="conn-status" class="conn-status"></div>
<section class="data-section">
<h2 class="section-title">⚙️ 系统状态</h2>
<div id="sys-status" class="data-container">加载中...</div>
</section>
<section class="data-section">
<h2 class="section-title">👥 开发者进度</h2>
<div id="dev-list" class="data-container">加载中...</div>
</section>
<section class="data-section">
<h2 class="section-title">📡 广播动态</h2>
<div id="bc-list" class="data-container">加载中...</div>
</section>
<!-- 原有的团队成员卡片区(可保留作对比) -->
<section class="team-cards">
<h2>👥 团队成员状态(静态)</h2>
<div class="card-grid">
<div class="card" data-dev="DEV-001">
<div class="card-header">
<span class="dev-id">DEV-001</span>
<span class="status-badge status-active">活跃</span>
</div>
<div class="card-body">
<div class="dev-name">页页</div>
<div class="dev-module">后端中间层</div>
<div class="update-time">更新: 10:32</div>
</div>
</div>
<div class="card" data-dev="DEV-002">
<div class="card-header">
<span class="dev-id">DEV-002</span>
<span class="status-badge status-active">活跃</span>
</div>
<div class="card-body">
<div class="dev-name">肥猫</div>
<div class="dev-module">飞书机器人</div>
<div class="update-time">更新: 10:15</div>
</div>
</div>
<div class="card" data-dev="DEV-003">
<div class="card-header">
<span class="dev-id">DEV-003</span>
<span class="status-badge status-standby">等待</span>
</div>
<div class="card-body">
<div class="dev-name">燕樊</div>
<div class="dev-module">对话UI</div>
<div class="update-time">更新: 09:47</div>
</div>
</div>
<div class="card" data-dev="DEV-004">
<div class="card-header">
<span class="dev-id">DEV-004</span>
<span class="status-badge status-active">活跃</span>
</div>
<div class="card-body">
<div class="dev-name">小幸运</div>
<div class="dev-module">钉钉打通</div>
<div class="update-time">更新: 11:02</div>
</div>
</div>
<div class="card" data-dev="DEV-005">
<div class="card-header">
<span class="dev-id">DEV-005</span>
<span class="status-badge status-coding">编码中</span>
</div>
<div class="card-body">
<div class="dev-name">小草莓</div>
<div class="dev-module">系统状态看板</div>
<div class="update-time">更新: 刚刚</div>
</div>
</div>
<div class="card" data-dev="DEV-006">
<div class="card-header">
<span class="dev-id">DEV-006</span>
<span class="status-badge status-standby">等待</span>
</div>
<div class="card-body">
<div class="dev-name">小蔡同学</div>
<div class="dev-module">工单管理</div>
<div class="update-time">更新: 09:20</div>
</div>
</div>
<div class="card" data-dev="DEV-007">
<div class="card-header">
<span class="dev-id">DEV-007</span>
<span class="status-badge status-coding">编码中</span>
</div>
<div class="card-body">
<div class="dev-name">四月</div>
<div class="dev-module">用户中心</div>
<div class="update-time">更新: 10:55</div>
</div>
</div>
<div class="card" data-dev="DEV-008">
<div class="card-header">
<span class="dev-id">DEV-008</span>
<span class="status-badge status-standby">等待</span>
</div>
<div class="card-body">
<div class="dev-name">小锋</div>
<div class="dev-module">待分配</div>
<div class="update-time">更新: 08:30</div>
</div>
</div>
</div>
</section>
<!-- 原有的广播列表(可保留) -->
<section class="broadcast-list">
<h2>📢 最近广播(静态)</h2>
<div class="list-container">
<div class="list-item">
<span class="broadcast-id">BC-001</span>
<span class="broadcast-title">HoloLake桌面UI框架</span>
<span class="broadcast-time">10:45</span>
<span class="broadcast-status status-done">已完成</span>
</div>
<div class="list-item">
<span class="broadcast-id">BC-002</span>
<span class="broadcast-title">对话界面设计</span>
<span class="broadcast-time">10:20</span>
<span class="broadcast-status status-progress">进行中</span>
</div>
<div class="list-item">
<span class="broadcast-id">BC-003</span>
<span class="broadcast-title">人格体选择器</span>
<span class="broadcast-time">09:55</span>
<span class="broadcast-status status-progress">进行中</span>
</div>
<div class="list-item">
<span class="broadcast-id">BC-004</span>
<span class="broadcast-title">云盘授权界面</span>
<span class="broadcast-time">09:30</span>
<span class="broadcast-status status-pending">待处理</span>
</div>
<div class="list-item">
<span class="broadcast-id">BC-005</span>
<span class="broadcast-title">用户中心设计</span>
<span class="broadcast-time">08:50</span>
<span class="broadcast-status status-pending">待处理</span>
</div>
</div>
</section>
<!-- 底部信息栏 -->
<footer class="footer">
<div class="footer-left">光湖系统 · HoloLake Era AGE OS</div>
<div class="footer-right">v2.1.0 · 2026-03-02 17:50</div>
</footer>
</div>
<!-- 核心脚本 -->
<script src="api-config.js"></script>
<script src="api.js"></script>
<script src="render.js"></script>
<script src="ws-client.js"></script>
<!-- 原有的交互脚本 -->
<script src="script.js"></script>
<!-- ===== WebSocket 实时推送初始化 ===== -->
<script>
(function() {
// 自动检测 WebSocket 地址:生产环境走 Nginx 反向代理,本地开发直连 8080
var wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
var wsUrl = (location.hostname === 'localhost' || location.hostname === '127.0.0.1')
? 'ws://localhost:8080'
: wsProtocol + '//' + location.host + '/ws';
var wsClient = new WebSocketClient(wsUrl, {
onMessage: function(data) {
if (data.type === 'dashboard_update' && data.data) {
if (data.data.system) renderSystemStatus(data.data.system);
if (data.data.developers) renderDevelopers(data.data.developers);
if (data.data.broadcasts) renderBroadcasts(data.data.broadcasts);
}
},
onStatusChange: function(status) {
var el = document.getElementById('conn-status');
if (!el) return;
var text = '', className = '';
switch(status) {
case 'connected':
text = '🔵 实时连接 (WebSocket)';
className = 'conn-dot on';
break;
case 'connecting':
text = '⏳ 连接中...';
className = 'conn-dot connecting';
break;
case 'reconnecting':
text = '🔄 重连中...';
className = 'conn-dot reconnecting';
break;
case 'disconnected':
case 'offline':
default:
text = '⚪ 离线模式 (降级轮询)';
className = 'conn-dot off';
if (typeof refreshDashboard === 'function') refreshDashboard();
break;
}
el.innerHTML = '<span class="' + className + '"></span> ' + text;
}
});
wsClient.connect();
window.addEventListener('beforeunload', function() { wsClient.disconnect(); });
})();
</script>
</body>
</html>