| ${account.id} |
${escapeHtml(account.email)}
|
${account.password ? `${escapeHtml(account.password.substring(0, 8))}...` : '-'}
|
${getStatusText('account', account.status)}
|
${account.password ? `` : ''}
|
`).join('');
} catch (error) {
console.error('加载账号列表失败:', error);
}
}
// 开始账号列表轮询
function startAccountsPolling() {
// 每30秒刷新一次账号列表
accountsPollingInterval = setInterval(() => {
loadRecentAccounts();
}, 30000);
}
// 添加日志
function addLog(type, message) {
// 日志去重:使用消息内容的 hash 作为键
const logKey = `${type}:${message}`;
if (displayedLogs.has(logKey)) {
return; // 已经显示过,跳过
}
displayedLogs.add(logKey);
// 限制去重集合大小,避免内存泄漏
if (displayedLogs.size > 1000) {
// 清空一半的记录
const keys = Array.from(displayedLogs);
keys.slice(0, 500).forEach(k => displayedLogs.delete(k));
}
const line = document.createElement('div');
line.className = `log-line ${type}`;
// 添加时间戳
const timestamp = new Date().toLocaleTimeString('zh-CN', {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
line.innerHTML = `加载中...
';
const data = await api.get('/registration/outlook-accounts');
outlookAccounts = data.accounts || [];
renderOutlookAccountsList();
addLog('info', `[系统] 已加载 ${data.total} 个 Outlook 账户 (已注册: ${data.registered_count}, 未注册: ${data.unregistered_count})`);
} catch (error) {
console.error('加载 Outlook 账户列表失败:', error);
elements.outlookAccountsContainer.innerHTML = `