From 99d73d1d4bab15bf1c499fec0744e2f80591b1b5 Mon Sep 17 00:00:00 2001 From: Etienne <45695613+etiennejouan@users.noreply.github.com> Date: Tue, 28 Oct 2025 12:57:31 +0100 Subject: [PATCH] Add metric (+fix) (#15400) --- .../auth/services/sign-in-up.service.spec.ts | 9 ++++++++- .../core-modules/auth/services/sign-in-up.service.ts | 8 ++++++++ .../core-modules/metrics/types/metrics-keys.type.ts | 1 + .../services/cleaner.workspace-service.ts | 9 ++++----- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts index ac38c1ea3d..4a3d045f4e 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.spec.ts @@ -20,10 +20,11 @@ import { import { SubdomainManagerService } from 'src/engine/core-modules/domain/subdomain-manager/services/subdomain-manager.service'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service'; +import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service'; import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service'; import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; -import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; import { type UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; +import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; import { UserService } from 'src/engine/core-modules/user/services/user.service'; import { UserEntity } from 'src/engine/core-modules/user/user.entity'; import { WorkspaceInvitationService } from 'src/engine/core-modules/workspace-invitation/services/workspace-invitation.service'; @@ -143,6 +144,12 @@ describe('SignInUpService', () => { emitCustomBatchEvent: jest.fn(), }, }, + { + provide: MetricsService, + useValue: { + incrementCounter: jest.fn(), + }, + }, ], }).compile(); diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts index a4e59d834e..6d85288a3f 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/sign-in-up.service.ts @@ -27,6 +27,8 @@ import { type SignInUpNewUserPayload, } from 'src/engine/core-modules/auth/types/signInUp.type'; import { SubdomainManagerService } from 'src/engine/core-modules/domain/subdomain-manager/services/subdomain-manager.service'; +import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service'; +import { MetricsKeys } from 'src/engine/core-modules/metrics/types/metrics-keys.type'; import { OnboardingService } from 'src/engine/core-modules/onboarding/onboarding.service'; import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; @@ -55,6 +57,7 @@ export class SignInUpService { private readonly twentyConfigService: TwentyConfigService, private readonly subdomainManagerService: SubdomainManagerService, private readonly userService: UserService, + private readonly metricsService: MetricsService, ) {} async computePartialUserFromUserPayload( @@ -339,6 +342,11 @@ export class SignInUpService { undefined, ); + this.metricsService.incrementCounter({ + key: MetricsKeys.SignUpSuccess, + shouldStoreInCache: false, + }); + return savedUser; } diff --git a/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts b/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts index 63a7c6c4b8..f8551a3736 100644 --- a/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts +++ b/packages/twenty-server/src/engine/core-modules/metrics/types/metrics-keys.type.ts @@ -28,4 +28,5 @@ export enum MetricsKeys { AppVersionMismatch = 'app-version/mismatch', CronJobDeletedWorkspace = 'cron-job/deleted-workspace', JobWebhookCallCompleted = 'job/webhook-call-completed', + SignUpSuccess = 'sign-up/success', } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts index 6082bbd7ad..f303a95872 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/services/cleaner.workspace-service.ts @@ -356,6 +356,10 @@ export class CleanerWorkspaceService { ); if (!dryRun) { await this.workspaceService.deleteWorkspace(workspace.id); + this.metricsService.incrementCounter({ + key: MetricsKeys.CronJobDeletedWorkspace, + shouldStoreInCache: false, + }); } deletedWorkspacesCount++; } @@ -450,11 +454,6 @@ export class CleanerWorkspaceService { if (!dryRun) { await this.workspaceService.deleteWorkspace(workspace.id); - - this.metricsService.incrementCounter({ - key: MetricsKeys.CronJobDeletedWorkspace, - shouldStoreInCache: false, - }); } this.logger.log(