feat(core): workspace embedding tracking (#12409)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## 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. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
|||||||
import { Upload } from '@affine/core/components/pure/file-upload';
|
import { Upload } from '@affine/core/components/pure/file-upload';
|
||||||
import { WorkspaceDialogService } from '@affine/core/modules/dialogs';
|
import { WorkspaceDialogService } from '@affine/core/modules/dialogs';
|
||||||
import { useI18n } from '@affine/i18n';
|
import { useI18n } from '@affine/i18n';
|
||||||
|
import track from '@affine/track';
|
||||||
import { useLiveData, useService } from '@toeverything/infra';
|
import { useLiveData, useService } from '@toeverything/infra';
|
||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import { useCallback, useEffect, useMemo } from 'react';
|
import { useCallback, useEffect, useMemo } from 'react';
|
||||||
@@ -43,6 +44,11 @@ export const EmbeddingSettings: React.FC<EmbeddingSettingsProps> = () => {
|
|||||||
|
|
||||||
const handleEmbeddingToggle = useCallback(
|
const handleEmbeddingToggle = useCallback(
|
||||||
(checked: boolean) => {
|
(checked: boolean) => {
|
||||||
|
track.$.settingsPanel.indexerEmbedding.toggleWorkspaceEmbedding({
|
||||||
|
type: 'Embedding',
|
||||||
|
control: 'Workspace embedding',
|
||||||
|
option: checked ? 'on' : 'off',
|
||||||
|
});
|
||||||
embeddingService.embedding.setEnabled(checked);
|
embeddingService.embedding.setEnabled(checked);
|
||||||
},
|
},
|
||||||
[embeddingService.embedding]
|
[embeddingService.embedding]
|
||||||
@@ -50,6 +56,11 @@ export const EmbeddingSettings: React.FC<EmbeddingSettingsProps> = () => {
|
|||||||
|
|
||||||
const handleAttachmentUpload = useCallback(
|
const handleAttachmentUpload = useCallback(
|
||||||
(file: File) => {
|
(file: File) => {
|
||||||
|
track.$.settingsPanel.indexerEmbedding.addAdditionalDocs({
|
||||||
|
type: 'Embedding',
|
||||||
|
control: 'Select doc',
|
||||||
|
docType: file.type,
|
||||||
|
});
|
||||||
embeddingService.embedding.addAttachments([file]);
|
embeddingService.embedding.addAttachments([file]);
|
||||||
},
|
},
|
||||||
[embeddingService.embedding]
|
[embeddingService.embedding]
|
||||||
@@ -86,6 +97,11 @@ export const EmbeddingSettings: React.FC<EmbeddingSettingsProps> = () => {
|
|||||||
if (selectedIds === undefined) {
|
if (selectedIds === undefined) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
track.$.settingsPanel.indexerEmbedding.addIgnoredDocs({
|
||||||
|
type: 'Embedding',
|
||||||
|
control: 'Additional docs',
|
||||||
|
result: 'success',
|
||||||
|
});
|
||||||
const add = selectedIds.filter(id => !initialIds?.includes(id));
|
const add = selectedIds.filter(id => !initialIds?.includes(id));
|
||||||
const remove = initialIds?.filter(id => !selectedIds.includes(id));
|
const remove = initialIds?.filter(id => !selectedIds.includes(id));
|
||||||
embeddingService.embedding.updateIgnoredDocs({ add, remove });
|
embeddingService.embedding.updateIgnoredDocs({ add, remove });
|
||||||
|
|||||||
@@ -182,6 +182,13 @@ type MeetingEvents =
|
|||||||
type MentionEvents = 'mentionMember' | 'noAccessPrompted';
|
type MentionEvents = 'mentionMember' | 'noAccessPrompted';
|
||||||
// END SECTION
|
// END SECTION
|
||||||
|
|
||||||
|
// SECTION: workspace embedding
|
||||||
|
type WorkspaceEmbeddingEvents =
|
||||||
|
| 'toggleWorkspaceEmbedding'
|
||||||
|
| 'addAdditionalDocs'
|
||||||
|
| 'addIgnoredDocs';
|
||||||
|
// END SECTION
|
||||||
|
|
||||||
type UserEvents =
|
type UserEvents =
|
||||||
| GeneralEvents
|
| GeneralEvents
|
||||||
| AppEvents
|
| AppEvents
|
||||||
@@ -204,7 +211,8 @@ type UserEvents =
|
|||||||
| NotificationEvents
|
| NotificationEvents
|
||||||
| IntegrationEvents
|
| IntegrationEvents
|
||||||
| MeetingEvents
|
| MeetingEvents
|
||||||
| MentionEvents;
|
| MentionEvents
|
||||||
|
| WorkspaceEmbeddingEvents;
|
||||||
|
|
||||||
interface PageDivision {
|
interface PageDivision {
|
||||||
[page: string]: {
|
[page: string]: {
|
||||||
@@ -283,6 +291,11 @@ interface PageEvents extends PageDivision {
|
|||||||
'completeIntegrationImport',
|
'completeIntegrationImport',
|
||||||
];
|
];
|
||||||
meetings: ['toggleMeetingFeatureFlag'];
|
meetings: ['toggleMeetingFeatureFlag'];
|
||||||
|
indexerEmbedding: [
|
||||||
|
'toggleWorkspaceEmbedding',
|
||||||
|
'addAdditionalDocs',
|
||||||
|
'addIgnoredDocs',
|
||||||
|
];
|
||||||
};
|
};
|
||||||
cmdk: {
|
cmdk: {
|
||||||
recent: ['recentDocs'];
|
recent: ['recentDocs'];
|
||||||
@@ -724,6 +737,21 @@ export type EventArgs = {
|
|||||||
time: number;
|
time: number;
|
||||||
success: boolean;
|
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
|
// for type checking
|
||||||
|
|||||||
Reference in New Issue
Block a user