- Min of meer werkende chat client new stule
This commit is contained in:
@@ -88,16 +88,16 @@ export default {
|
||||
}
|
||||
|
||||
console.log('Connecting to progress stream for task:', this.taskId);
|
||||
|
||||
|
||||
// Construct the SSE URL
|
||||
const baseUrl = window.location.origin;
|
||||
const sseUrl = `${baseUrl}${this.apiPrefix}/api/progress/${this.taskId}`;
|
||||
|
||||
const sseUrl = `${baseUrl}${this.apiPrefix}/api/task_progress/${this.taskId}`;
|
||||
|
||||
console.log('SSE URL:', sseUrl);
|
||||
|
||||
try {
|
||||
this.eventSource = new EventSource(sseUrl);
|
||||
|
||||
|
||||
this.eventSource.onopen = () => {
|
||||
console.log('Progress stream connected');
|
||||
this.connecting = false;
|
||||
@@ -112,19 +112,6 @@ export default {
|
||||
this.handleError(event);
|
||||
};
|
||||
|
||||
// Listen for specific event types
|
||||
this.eventSource.addEventListener('progress', (event) => {
|
||||
this.handleProgressUpdate(event);
|
||||
});
|
||||
|
||||
this.eventSource.addEventListener('complete', (event) => {
|
||||
this.handleSpecialistComplete(event);
|
||||
});
|
||||
|
||||
this.eventSource.addEventListener('error', (event) => {
|
||||
this.handleSpecialistError(event);
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Failed to create EventSource:', error);
|
||||
this.error = 'Kan geen verbinding maken met de voortgangsstream.';
|
||||
@@ -145,18 +132,39 @@ export default {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('Progress update:', data);
|
||||
|
||||
// Check voor processing_type om te bepalen welke handler te gebruiken
|
||||
if (data.processing_type === 'EveAI Specialist Complete') {
|
||||
console.log('Detected specialist complete via processing_type');
|
||||
this.handleSpecialistComplete(event);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check voor andere completion statuses en errors
|
||||
if (data.processing_type === 'EveAI Specialist Error')
|
||||
{
|
||||
console.log('Detected specialist error via processing_type or status');
|
||||
this.handleSpecialistError(event);
|
||||
return;
|
||||
}
|
||||
|
||||
// Voeg bericht toe aan progressLines
|
||||
if (data.message) {
|
||||
this.progressLines.push(data.message);
|
||||
|
||||
// Auto-scroll to bottom if expanded
|
||||
if (this.isExpanded) {
|
||||
this.$nextTick(() => {
|
||||
const container = this.$refs.progressContainer;
|
||||
if (container) {
|
||||
container.scrollTop = container.scrollHeight;
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (data.data && data.data.message) {
|
||||
this.progressLines.push(data.data.message);
|
||||
} else if (data.processing_type) {
|
||||
// Gebruik processing_type als message wanneer er geen andere message is
|
||||
this.progressLines.push(`${data.processing_type}...`);
|
||||
}
|
||||
|
||||
// Auto-scroll to bottom if expanded
|
||||
if (this.isExpanded) {
|
||||
this.$nextTick(() => {
|
||||
const container = this.$refs.progressContainer;
|
||||
if (container) {
|
||||
container.scrollTop = container.scrollHeight;
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error parsing progress data:', error);
|
||||
@@ -165,7 +173,7 @@ export default {
|
||||
|
||||
handleSpecialistComplete(event) {
|
||||
console.log('Specialist complete event:', event);
|
||||
|
||||
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('Specialist complete data:', data);
|
||||
@@ -174,27 +182,42 @@ export default {
|
||||
this.connecting = false;
|
||||
this.disconnectEventSource();
|
||||
|
||||
// Emit the complete event to parent
|
||||
if (data.result && data.result.answer) {
|
||||
this.$emit('specialist-complete', {
|
||||
answer: data.result.answer,
|
||||
form_request: data.result.form_request,
|
||||
result: data.result,
|
||||
interactionId: data.interaction_id,
|
||||
taskId: this.taskId
|
||||
});
|
||||
} else {
|
||||
console.error('Missing result.answer in specialist complete data:', data);
|
||||
// Verschillende manieren om de result data te verkrijgen
|
||||
let resultData = null;
|
||||
let answer = null;
|
||||
let formRequest = null;
|
||||
let interactionId = null;
|
||||
|
||||
resultData = data.data.result
|
||||
console.log('Result data:', resultData);
|
||||
|
||||
if (resultData) {
|
||||
// Standaard format
|
||||
answer = resultData.answer;
|
||||
formRequest = resultData.form_request;
|
||||
interactionId = data.data.interaction_id;
|
||||
}
|
||||
this.$emit('specialist-complete', {
|
||||
answer: answer,
|
||||
form_request: formRequest,
|
||||
result: resultData,
|
||||
interactionId: interactionId,
|
||||
taskId: this.taskId
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('Error parsing specialist complete data:', error);
|
||||
this.handleSpecialistError({ data: JSON.stringify({ Error: 'Failed to parse completion data' }) });
|
||||
this.handleSpecialistError({
|
||||
data: JSON.stringify({
|
||||
Error: 'Failed to parse completion data',
|
||||
processing_type: 'EveAI Specialist Error'
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
handleSpecialistError(event) {
|
||||
console.log('Specialist error event:', event);
|
||||
|
||||
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log('Specialist error data:', data);
|
||||
@@ -208,15 +231,23 @@ export default {
|
||||
const errorMessage = "We could not process your request. Please try again later.";
|
||||
this.error = errorMessage;
|
||||
|
||||
// Extract error details from various possible locations
|
||||
const originalError =
|
||||
data.Error ||
|
||||
data.error ||
|
||||
data.message ||
|
||||
data.data?.error ||
|
||||
data.data?.Error ||
|
||||
data.data?.message ||
|
||||
'Unknown error';
|
||||
|
||||
// Log the actual error for debug purposes
|
||||
if (data.Error) {
|
||||
console.error('Specialist Error:', data.Error);
|
||||
}
|
||||
console.error('Specialist Error:', originalError);
|
||||
|
||||
// Emit error event to parent
|
||||
this.$emit('specialist-error', {
|
||||
message: errorMessage,
|
||||
originalError: data.Error,
|
||||
originalError: originalError,
|
||||
taskId: this.taskId
|
||||
});
|
||||
} catch (error) {
|
||||
@@ -226,6 +257,13 @@ export default {
|
||||
this.hasError = true;
|
||||
this.connecting = false;
|
||||
this.disconnectEventSource();
|
||||
|
||||
// Emit generic error
|
||||
this.$emit('specialist-error', {
|
||||
message: 'Er is een onbekende fout opgetreden.',
|
||||
originalError: 'Failed to parse error data',
|
||||
taskId: this.taskId
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -236,13 +274,22 @@ export default {
|
||||
|
||||
// Try to parse error data
|
||||
try {
|
||||
const errorData = JSON.parse(event.data);
|
||||
if (errorData && errorData.message) {
|
||||
this.error = errorData.message;
|
||||
if (event.data) {
|
||||
const errorData = JSON.parse(event.data);
|
||||
if (errorData && errorData.message) {
|
||||
this.error = errorData.message;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
// Keep generic error message if parsing fails
|
||||
}
|
||||
|
||||
// Emit error to parent
|
||||
this.$emit('specialist-error', {
|
||||
message: this.error,
|
||||
originalError: 'SSE Connection Error',
|
||||
taskId: this.taskId
|
||||
});
|
||||
},
|
||||
|
||||
toggleExpand() {
|
||||
|
||||
Reference in New Issue
Block a user