From 8038ab97e6840a02a7326c7d26c6df4c9b0f69ee Mon Sep 17 00:00:00 2001 From: yoyoyohamapi <8338436+yoyoyohamapi@users.noreply.github.com> Date: Wed, 21 May 2025 06:50:09 +0000 Subject: [PATCH] feat(core): workspace embedding tracking (#12409) ## Summary by CodeRabbit - **New Features** - Added event tracking for workspace embedding settings, including toggling embedding, uploading attachments, and selecting ignored documents. This enhances visibility into user interactions within the embedding settings panel. --- .../view/embedding-settings.tsx | 16 ++++++++++ packages/frontend/track/src/events.ts | 30 ++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/packages/frontend/core/src/modules/workspace-indexer-embedding/view/embedding-settings.tsx b/packages/frontend/core/src/modules/workspace-indexer-embedding/view/embedding-settings.tsx index ce672bc69b..e001859b20 100644 --- a/packages/frontend/core/src/modules/workspace-indexer-embedding/view/embedding-settings.tsx +++ b/packages/frontend/core/src/modules/workspace-indexer-embedding/view/embedding-settings.tsx @@ -7,6 +7,7 @@ import { import { Upload } from '@affine/core/components/pure/file-upload'; import { WorkspaceDialogService } from '@affine/core/modules/dialogs'; import { useI18n } from '@affine/i18n'; +import track from '@affine/track'; import { useLiveData, useService } from '@toeverything/infra'; import type React from 'react'; import { useCallback, useEffect, useMemo } from 'react'; @@ -43,6 +44,11 @@ export const EmbeddingSettings: React.FC = () => { const handleEmbeddingToggle = useCallback( (checked: boolean) => { + track.$.settingsPanel.indexerEmbedding.toggleWorkspaceEmbedding({ + type: 'Embedding', + control: 'Workspace embedding', + option: checked ? 'on' : 'off', + }); embeddingService.embedding.setEnabled(checked); }, [embeddingService.embedding] @@ -50,6 +56,11 @@ export const EmbeddingSettings: React.FC = () => { const handleAttachmentUpload = useCallback( (file: File) => { + track.$.settingsPanel.indexerEmbedding.addAdditionalDocs({ + type: 'Embedding', + control: 'Select doc', + docType: file.type, + }); embeddingService.embedding.addAttachments([file]); }, [embeddingService.embedding] @@ -86,6 +97,11 @@ export const EmbeddingSettings: React.FC = () => { if (selectedIds === undefined) { return; } + track.$.settingsPanel.indexerEmbedding.addIgnoredDocs({ + type: 'Embedding', + control: 'Additional docs', + result: 'success', + }); const add = selectedIds.filter(id => !initialIds?.includes(id)); const remove = initialIds?.filter(id => !selectedIds.includes(id)); embeddingService.embedding.updateIgnoredDocs({ add, remove }); diff --git a/packages/frontend/track/src/events.ts b/packages/frontend/track/src/events.ts index b545e8d32a..400055e2ac 100644 --- a/packages/frontend/track/src/events.ts +++ b/packages/frontend/track/src/events.ts @@ -182,6 +182,13 @@ type MeetingEvents = type MentionEvents = 'mentionMember' | 'noAccessPrompted'; // END SECTION +// SECTION: workspace embedding +type WorkspaceEmbeddingEvents = + | 'toggleWorkspaceEmbedding' + | 'addAdditionalDocs' + | 'addIgnoredDocs'; +// END SECTION + type UserEvents = | GeneralEvents | AppEvents @@ -204,7 +211,8 @@ type UserEvents = | NotificationEvents | IntegrationEvents | MeetingEvents - | MentionEvents; + | MentionEvents + | WorkspaceEmbeddingEvents; interface PageDivision { [page: string]: { @@ -283,6 +291,11 @@ interface PageEvents extends PageDivision { 'completeIntegrationImport', ]; meetings: ['toggleMeetingFeatureFlag']; + indexerEmbedding: [ + 'toggleWorkspaceEmbedding', + 'addAdditionalDocs', + 'addIgnoredDocs', + ]; }; cmdk: { recent: ['recentDocs']; @@ -724,6 +737,21 @@ export type EventArgs = { time: number; success: boolean; }; + toggleWorkspaceEmbedding: { + type: 'Embedding'; + control: 'Workspace embedding'; + option: 'on' | 'off'; + }; + addAdditionalDocs: { + type: 'Embedding'; + control: 'Select doc'; + docType: string; + }; + addIgnoredDocs: { + type: 'Embedding'; + control: 'Additional docs'; + result: 'success' | 'failure'; + }; }; // for type checking