ddgchat / templates /monitor.html
dan92's picture
Upload 7 files
1705293 verified
raw
history blame
4.54 kB
<!DOCTYPE html>
<html>
<head>
<title>账号状态监控</title>
<meta charset="UTF-8">
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f5f5f5;
}
.header {
text-align: center;
margin-bottom: 20px;
}
.summary {
text-align: center;
margin-bottom: 30px;
font-size: 1.2em;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 20px;
padding: 20px;
}
.account-card {
background: white;
border-radius: 8px;
padding: 15px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.account-card h3 {
margin-top: 0;
color: #333;
}
.status-available {
color: green;
}
.status-unavailable {
color: red;
}
.metric {
margin: 8px 0;
}
.refresh-time {
text-align: center;
margin-top: 20px;
color: #666;
}
</style>
</head>
<body>
<div class="header">
<h1>账号状态监控</h1>
</div>
<div class="summary">
<div><span id="online-count">{{ valid_accounts }}/{{ total_accounts }}</span> 个账号在线</div>
<div>请求总数: <span id="total-requests">{{ total_requests }}</span></div>
</div>
<div class="grid">
{% for account in accounts %}
<div class="account-card">
<h3>账号{{ loop.index }}: {{ account.email|replace(account.email[1:-4], '*'*3) }}</h3>
<div class="metric">总请求数: {{ account.total_requests }}</div>
<div class="metric">成功请求数: {{ account.success_requests }}</div>
<div class="metric">失败请求数: {{ account.failed_requests }}</div>
<div class="metric">成功率: {{ "%.2f"|format(account.success_rate) }}%</div>
<div class="metric">最后使用时间: {{ account.last_used_time }}</div>
<div class="metric">状态:
<span class="status-{{ 'available' if account.is_valid else 'unavailable' }}">
{{ "可用" if account.is_valid else "不可用" }}
</span>
</div>
</div>
{% endfor %}
</div>
<div class="refresh-time">
最后更新时间: <span id="last-update">{{ last_update }}</span>
</div>
<script>
function refreshData() {
fetch(window.location.href)
.then(response => response.json())
.then(data => {
document.getElementById('online-count').textContent =
`${data.valid_accounts}/${data.total_accounts}`;
document.getElementById('total-requests').textContent = data.total_requests;
document.getElementById('last-update').textContent = data.last_update;
// 更新账号卡片
const grid = document.querySelector('.grid');
grid.innerHTML = data.accounts.map((account, index) => `
<div class="account-card">
<h3>账号${index + 1}: ${account.email.replace(/(?<=.).(?=.*@)/g, '*')}</h3>
<div class="metric">总请求数: ${account.total_requests}</div>
<div class="metric">成功请求数: ${account.success_requests}</div>
<div class="metric">失败请求数: ${account.failed_requests}</div>
<div class="metric">成功率: ${account.success_rate.toFixed(2)}%</div>
<div class="metric">最后使用时间: ${account.last_used_time}</div>
<div class="metric">状态:
<span class="status-${account.is_valid ? 'available' : 'unavailable'}">
${account.is_valid ? '可用' : '不可用'}
</span>
</div>
</div>
`).join('');
});
}
setInterval(refreshData, 60000); // 每分钟刷新一次
</script>
</body>
</html>