diff --git a/templates/index.html b/templates/index.html
index 46706ce..397f033 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -4525,7 +4525,7 @@
scheduleReportStreamReconnect(taskId);
};
- const events = ['status', 'stage', 'chapter_status', 'chapter_chunk', 'warning', 'html_ready', 'completed', 'error', 'heartbeat'];
+ const events = ['status', 'stage', 'chapter_status', 'chapter_chunk', 'warning', 'error', 'debug', 'html_ready', 'completed', 'heartbeat'];
events.forEach(evt => {
reportEventSource.addEventListener(evt, (event) => dispatchReportStreamEvent(evt, event));
});
@@ -4630,7 +4630,10 @@
}
break;
case 'warning':
- appendReportStreamLine(payload.message || '检测到可重试的网络波动', 'warn');
+ appendReportStreamLine(payload.message || '检测到可重试的网络波动', 'warn', { badge: 'WARNING' });
+ break;
+ case 'debug':
+ appendReportStreamLine(payload.message || 'Debug信息', 'info', { badge: 'DEBUG' });
break;
case 'html_ready':
appendReportStreamLine('HTML渲染完成,正在刷新预览...', 'success');
@@ -4664,18 +4667,29 @@
setGenerateButtonState(false);
break;
case 'error':
- appendReportStreamLine(payload.message || '任务失败', 'error');
+ appendReportStreamLine(payload.message || '任务失败', 'error', { badge: 'ERROR' });
safeCloseReportStream();
updateReportStreamStatus('error');
reportTaskId = null;
setGenerateButtonState(false);
break;
case 'heartbeat':
+ // 只有在非重连状态时才更新为connected并显示心跳消息
+ // 避免在错误/重连期间显示误导性的"连接正常"消息
+ const statusEl = document.getElementById('reportStreamStatus');
+ const currentState = statusEl ? statusEl.dataset.state : null;
+
+ // 如果当前处于重连或错误状态,忽略心跳消息
+ if (currentState === 'reconnecting' || currentState === 'error') {
+ break;
+ }
+
updateReportStreamStatus('connected');
- appendReportStreamLine(payload.message || '流式连接正常,请稍候...', 'info', {
- badge: 'SSE',
- genericMessage: '流式连接正常,请耐心等待...'
- });
+ // 心跳消息不显示在控制台,避免刷屏
+ // appendReportStreamLine(payload.message || '流式连接正常,请稍候...', 'info', {
+ // badge: 'SSE',
+ // genericMessage: '流式连接正常,请耐心等待...'
+ // });
break;
default:
if (payload.message) {