fix(editor): Fix workflow-builder feedback tracking (no-changelog) (#15040)

This commit is contained in:
oleg
2025-05-01 15:24:12 +02:00
committed by GitHub
parent 3647fd4eba
commit b5f85e7aae
2 changed files with 21 additions and 9 deletions

View File

@@ -33,6 +33,7 @@ vi.mock('@/composables/useI18n', () => ({
}), }),
})); }));
const workflowPrompt = 'Create a workflow';
describe('AskAssistantBuild', () => { describe('AskAssistantBuild', () => {
const sessionId = faker.string.uuid(); const sessionId = faker.string.uuid();
const renderComponent = createComponentRenderer(AskAssistantBuild); const renderComponent = createComponentRenderer(AskAssistantBuild);
@@ -48,7 +49,7 @@ describe('AskAssistantBuild', () => {
currentSessionId: sessionId, currentSessionId: sessionId,
streaming: false, streaming: false,
assistantThinkingMessage: undefined, assistantThinkingMessage: undefined,
workflowPrompt: 'Create a workflow', workflowPrompt,
}, },
}, },
}); });
@@ -61,6 +62,7 @@ describe('AskAssistantBuild', () => {
builderStore.resetBuilderChat = vi.fn(); builderStore.resetBuilderChat = vi.fn();
builderStore.addAssistantMessages = vi.fn(); builderStore.addAssistantMessages = vi.fn();
builderStore.$onAction = vi.fn().mockReturnValue(vi.fn()); builderStore.$onAction = vi.fn().mockReturnValue(vi.fn());
builderStore.workflowPrompt = workflowPrompt;
}); });
describe('rendering', () => { describe('rendering', () => {
@@ -99,6 +101,7 @@ describe('AskAssistantBuild', () => {
}); });
describe('feedback handling', () => { describe('feedback handling', () => {
const workflowJson = '{"nodes": [], "connections": {}}';
beforeEach(() => { beforeEach(() => {
builderStore.chatMessages = [ builderStore.chatMessages = [
{ {
@@ -106,7 +109,7 @@ describe('AskAssistantBuild', () => {
role: 'assistant', role: 'assistant',
type: 'workflow-generated', type: 'workflow-generated',
read: true, read: true,
codeSnippet: '{}', codeSnippet: workflowJson,
}, },
{ {
id: faker.string.uuid(), id: faker.string.uuid(),
@@ -128,8 +131,9 @@ describe('AskAssistantBuild', () => {
await flushPromises(); await flushPromises();
expect(trackMock).toHaveBeenCalledWith('User rated workflow generation', { expect(trackMock).toHaveBeenCalledWith('User rated workflow generation', {
chat_session_id: sessionId,
helpful: true, helpful: true,
prompt: 'Create a workflow',
workflow_json: workflowJson,
}); });
}); });
@@ -143,8 +147,9 @@ describe('AskAssistantBuild', () => {
await flushPromises(); await flushPromises();
expect(trackMock).toHaveBeenCalledWith('User rated workflow generation', { expect(trackMock).toHaveBeenCalledWith('User rated workflow generation', {
chat_session_id: sessionId,
helpful: false, helpful: false,
prompt: 'Create a workflow',
workflow_json: workflowJson,
}); });
}); });
@@ -171,8 +176,9 @@ describe('AskAssistantBuild', () => {
expect(trackMock).toHaveBeenCalledWith( expect(trackMock).toHaveBeenCalledWith(
'User submitted workflow generation feedback', 'User submitted workflow generation feedback',
expect.objectContaining({ expect.objectContaining({
chat_session_id: sessionId,
feedback: feedbackText, feedback: feedbackText,
prompt: 'Create a workflow',
workflow_json: workflowJson,
}), }),
); );
}); });

View File

@@ -28,6 +28,9 @@ const user = computed(() => ({
const workflowGenerated = ref(false); const workflowGenerated = ref(false);
const loadingMessage = computed(() => builderStore.assistantThinkingMessage); const loadingMessage = computed(() => builderStore.assistantThinkingMessage);
const generatedWorkflowJson = computed(
() => builderStore.chatMessages.find((msg) => msg.type === 'workflow-generated')?.codeSnippet,
);
async function onUserMessage(content: string) { async function onUserMessage(content: string) {
// If there is no current session running, initialize the support chat session // If there is no current session running, initialize the support chat session
@@ -84,7 +87,7 @@ function onInsertWorkflow(code: string) {
telemetry.track('Workflow generated from prompt', { telemetry.track('Workflow generated from prompt', {
prompt: builderStore.workflowPrompt, prompt: builderStore.workflowPrompt,
latency: new Date().getTime() - generationStartTime.value, latency: new Date().getTime() - generationStartTime.value,
workflow_json: code, workflow_json: generatedWorkflowJson.value,
}); });
nodeViewEventBus.emit('importWorkflowData', { nodeViewEventBus.emit('importWorkflowData', {
@@ -114,24 +117,27 @@ function onNewWorkflow() {
function onThumbsUp() { function onThumbsUp() {
helpful.value = true; helpful.value = true;
telemetry.track('User rated workflow generation', { telemetry.track('User rated workflow generation', {
chat_session_id: builderStore.currentSessionId,
helpful: helpful.value, helpful: helpful.value,
prompt: builderStore.workflowPrompt,
workflow_json: generatedWorkflowJson.value,
}); });
} }
function onThumbsDown() { function onThumbsDown() {
helpful.value = false; helpful.value = false;
telemetry.track('User rated workflow generation', { telemetry.track('User rated workflow generation', {
chat_session_id: builderStore.currentSessionId,
helpful: helpful.value, helpful: helpful.value,
prompt: builderStore.workflowPrompt,
workflow_json: generatedWorkflowJson.value,
}); });
} }
function onSubmitFeedback(feedback: string) { function onSubmitFeedback(feedback: string) {
telemetry.track('User submitted workflow generation feedback', { telemetry.track('User submitted workflow generation feedback', {
chat_session_id: builderStore.currentSessionId,
helpful: helpful.value, helpful: helpful.value,
feedback, feedback,
prompt: builderStore.workflowPrompt,
workflow_json: generatedWorkflowJson.value,
}); });
} }