优化项目整合内容

This commit is contained in:
2025-08-05 20:11:28 +08:00
parent 4a0800a776
commit 867bf67b16

View File

@@ -3439,6 +3439,11 @@ function displayModalGroupedQueryLogs(groupedLogs) {
return;
}
// 获取当前的过滤器状态,如果复选框不存在则默认显示所有
const showInfo = document.getElementById('modal-log-level-info')?.checked ?? true;
const showWarning = document.getElementById('modal-log-level-warning')?.checked ?? true;
const showError = document.getElementById('modal-log-level-error')?.checked ?? true;
let html = '';
// 为每个批次生成折叠面板
@@ -3447,7 +3452,19 @@ function displayModalGroupedQueryLogs(groupedLogs) {
const isExpanded = index === groupedLogs.length - 1; // 默认展开最新批次
const collapseId = `modal-batch-${batchId}`;
// 统计批次信息
// 过滤日志
const filteredLogs = logs.filter(log => {
return (log.level === 'INFO' && showInfo) ||
(log.level === 'WARNING' && showWarning) ||
(log.level === 'ERROR' && showError);
});
// 如果过滤后没有日志,跳过这个批次
if (filteredLogs.length === 0) {
return;
}
// 统计批次信息(基于原始日志)
const logCounts = {
INFO: logs.filter(log => log.level === 'INFO').length,
WARNING: logs.filter(log => log.level === 'WARNING').length,
@@ -3455,6 +3472,7 @@ function displayModalGroupedQueryLogs(groupedLogs) {
};
const totalLogs = logs.length;
const filteredCount = filteredLogs.length;
const firstLog = logs[0];
const lastLog = logs[logs.length - 1];
const duration = firstLog && lastLog ? calculateDuration(firstLog.timestamp, lastLog.timestamp) : '0秒';
@@ -3466,7 +3484,7 @@ function displayModalGroupedQueryLogs(groupedLogs) {
const batchIcon = hasErrors ? 'fas fa-times-circle' : hasWarnings ? 'fas fa-exclamation-triangle' : 'fas fa-check-circle';
// 提取查询类型
const batchTypeMatch = firstLog?.message.match(/开始(\w+)查询批次/);
const batchTypeMatch = firstLog?.message.match(/开始(\w+)查询批次/) || firstLog?.message.match(/🚀 开始执行(\w+)数据比较/);
const batchType = batchTypeMatch ? batchTypeMatch[1] : '未知';
// 提取并格式化查询日期
@@ -3479,13 +3497,6 @@ function displayModalGroupedQueryLogs(groupedLogs) {
second: '2-digit'
}) : '未知时间';
// 简化的日期显示(仅显示日期部分)
const queryDateShort = firstLog ? new Date(firstLog.timestamp).toLocaleDateString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
}) : '未知';
// 检查是否有关联的历史记录ID
const historyId = firstLog?.history_id;
const historyBadge = historyId ?
@@ -3505,7 +3516,7 @@ function displayModalGroupedQueryLogs(groupedLogs) {
<div class="d-flex align-items-center mb-1">
<i class="${batchIcon} text-${batchStatus} me-2"></i>
<strong>${batchType}查询批次 ${batchId}</strong>
<span class="badge bg-primary ms-2">${totalLogs}条日志</span>
<span class="badge bg-primary ms-2">${filteredCount}/${totalLogs}条日志</span>
${historyBadge}
</div>
<div class="d-flex align-items-center">
@@ -3533,41 +3544,31 @@ function displayModalGroupedQueryLogs(groupedLogs) {
<div class="log-entries" style="max-height: 400px; overflow-y: auto;">
`;
// 显示该批次的日志条目
logs.forEach(log => {
const showInfo = document.getElementById('modal-log-level-info').checked;
const showWarning = document.getElementById('modal-log-level-warning').checked;
const showError = document.getElementById('modal-log-level-error').checked;
// 显示过滤后的日志条目
filteredLogs.forEach(log => {
const levelClass = log.level === 'ERROR' ? 'danger' :
log.level === 'WARNING' ? 'warning' : 'info';
const levelIcon = log.level === 'ERROR' ? 'fas fa-times-circle' :
log.level === 'WARNING' ? 'fas fa-exclamation-triangle' : 'fas fa-info-circle';
const shouldShow = (log.level === 'INFO' && showInfo) ||
(log.level === 'WARNING' && showWarning) ||
(log.level === 'ERROR' && showError);
// 简化时间戳显示
const timeOnly = log.timestamp ? (log.timestamp.split(' ')[1] || log.timestamp) : '未知时间';
if (shouldShow) {
const levelClass = log.level === 'ERROR' ? 'danger' :
log.level === 'WARNING' ? 'warning' : 'info';
const levelIcon = log.level === 'ERROR' ? 'fas fa-times-circle' :
log.level === 'WARNING' ? 'fas fa-exclamation-triangle' : 'fas fa-info-circle';
// 简化时间戳显示
const timeOnly = log.timestamp.split(' ')[1] || log.timestamp;
html += `
<div class="log-entry p-2 border-bottom">
<div class="d-flex align-items-start">
<span class="badge bg-${levelClass} me-2">
<i class="${levelIcon}"></i> ${log.level}
</span>
<small class="text-muted me-2 flex-shrink-0" style="min-width: 80px;">
${timeOnly}
</small>
<div class="log-message flex-grow-1">
${formatLogMessage(log.message)}
</div>
html += `
<div class="log-entry p-2 border-bottom" data-level="${log.level}">
<div class="d-flex align-items-start">
<span class="badge bg-${levelClass} me-2" style="min-width: 60px;">
<i class="${levelIcon}"></i> ${log.level}
</span>
<small class="text-muted me-2 flex-shrink-0" style="min-width: 80px;">
${timeOnly}
</small>
<div class="log-message flex-grow-1" style="word-wrap: break-word; white-space: pre-wrap;">
${formatLogMessage(log.message || '无消息内容')}
</div>
</div>
`;
}
</div>
`;
});
html += `
@@ -3578,6 +3579,10 @@ function displayModalGroupedQueryLogs(groupedLogs) {
`;
});
if (html === '') {
html = '<div class="alert alert-warning">没有符合过滤条件的日志</div>';
}
container.innerHTML = html;
}