dify修正

This commit is contained in:
2025-11-17 18:34:37 +08:00
parent ba0f14489e
commit 2ce3684711
7 changed files with 127 additions and 19 deletions

View File

@@ -127,7 +127,35 @@ export const chatApi = {
// 监听错误事件
eventSource.addEventListener('error', (event: any) => {
const error = new Error(event.data || '对话失败');
// 如果 data 为空说明是正常的流结束信号有些工作流不发送end事件
if (!event.data || event.data.trim() === '') {
console.log('[SSE流结束] 收到空error事件当作正常结束处理');
// 触发结束回调(如果有的话)
callback?.onMessageEnd?.({
conversationId: request.conversationId,
messageId: '',
answer: fullMessage
} as any);
eventSource.close();
// 正常结束
resolve({
code: 200,
success: true,
login: true,
auth: true,
data: {
conversationId: request.conversationId,
answer: fullMessage
} as any,
message: '对话已结束'
});
return;
}
const error = new Error(event.data);
callback?.onError?.(error);
eventSource.close();
reject(error);
@@ -358,7 +386,34 @@ export const chatApi = {
// 监听错误事件
eventSource.addEventListener('error', (event: any) => {
const error = new Error(event.data || '重新生成失败');
// 如果 data 为空说明是正常的流结束信号有些工作流不发送end事件
if (!event.data || event.data.trim() === '') {
console.log('[SSE流结束-重新生成] 收到空error事件当作正常结束处理');
// 触发结束回调(如果有的话)
callback?.onMessageEnd?.({
messageId: messageId,
answer: fullMessage
} as any);
eventSource.close();
// 正常结束
resolve({
code: 200,
success: true,
login: true,
auth: true,
data: {
messageId: messageId,
answer: fullMessage
} as any,
message: '重新生成已结束'
});
return;
}
const error = new Error(event.data);
callback?.onError?.(error);
eventSource.close();
reject(error);

View File

@@ -180,7 +180,14 @@ function initDurationChart(data: any[]) {
const duration = params.value;
const hours = Math.floor(duration / 3600);
const minutes = Math.floor((duration % 3600) / 60);
return `${params.name}<br/>学习时长: ${hours}小时${minutes}分钟<br/>学习人数: ${params.data.userCount}`;
const secs = duration % 60;
let timeStr = '';
if (hours > 0) timeStr += `${hours}小时`;
if (minutes > 0) timeStr += `${minutes}分钟`;
if (secs > 0 || timeStr === '') timeStr += `${secs}`;
return `${params.name}<br/>学习时长: ${timeStr}<br/>学习人数: ${params.data.userCount}`;
}
},
legend: {
@@ -204,7 +211,18 @@ function initDurationChart(data: any[]) {
const duration = params.value;
const hours = Math.floor(duration / 3600);
const minutes = Math.floor((duration % 3600) / 60);
return `${params.name}\n${hours}h${minutes}m`;
const secs = duration % 60;
let timeStr = '';
if (hours > 0) {
timeStr = `${hours}h${minutes}m`;
} else if (minutes > 0) {
timeStr = `${minutes}m${secs}s`;
} else {
timeStr = `${secs}s`;
}
return `${params.name}\n${timeStr}`;
}
},
emphasis: {
@@ -233,12 +251,26 @@ function initDurationChart(data: any[]) {
// 格式化时长
function formatDuration(seconds: number): string {
if (!seconds || seconds === 0) {
return '0秒';
}
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secs = seconds % 60;
let result = '';
if (hours > 0) {
return `${hours}小时${minutes}分钟`;
result += `${hours}小时`;
}
return `${minutes}分钟`;
if (minutes > 0) {
result += `${minutes}分钟`;
}
if (secs > 0 || result === '') {
result += `${secs}`;
}
return result;
}
// 获取排名样式
@@ -294,7 +326,7 @@ function getRankClass(index: number): string {
&:hover {
background: #e8edf3;
transform: translateX(5px);
// transform: translateX(5px);
}
.rank {