Skip to content

Commit 9ea1cbf

Browse files
add user active tracks (#5754)
* add user active tracks * remove console * perf: track active * perf: track active --------- Co-authored-by: archer <[email protected]>
1 parent c6dfaae commit 9ea1cbf

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

packages/global/common/middle/tracks/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export enum TrackEnum {
22
login = 'login',
3+
dailyUserActive = 'dailyUserActive',
34
createApp = 'createApp',
45
useAppTemplate = 'useAppTemplate',
56
createDataset = 'createDataset',

packages/service/common/middle/tracks/utils.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { AppTypeEnum } from '@fastgpt/global/core/app/constants';
77
import type { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
88
import { getAppLatestVersion } from '../../../core/app/version/controller';
99
import { type ShortUrlParams } from '@fastgpt/global/support/marketing/type';
10+
import { getRedisCache, setRedisCache } from '../../redis/cache';
1011

1112
const createTrack = ({ event, data }: { event: TrackEnum; data: Record<string, any> }) => {
1213
if (!global.feConfigs?.isPlus) return;
@@ -66,8 +67,31 @@ export const pushTrack = {
6667
return createTrack({
6768
event: TrackEnum.login,
6869
data
70+
})?.then(() => {
71+
pushTrack.dailyUserActive({
72+
uid: data.uid,
73+
teamId: data.teamId,
74+
tmbId: data.tmbId
75+
});
6976
});
7077
},
78+
dailyUserActive: async (data: PushTrackCommonType) => {
79+
try {
80+
const today = new Date().toISOString().split('T')[0];
81+
const key = `dailyUserActive:${data.uid}_${today}`;
82+
const cache = await getRedisCache(key);
83+
if (cache) return;
84+
85+
await setRedisCache(key, '1', 24 * 60 * 60);
86+
87+
return createTrack({
88+
event: TrackEnum.dailyUserActive,
89+
data
90+
});
91+
} catch (error) {
92+
addLog.error('Failed to track daily user active:', error);
93+
}
94+
},
7195
createApp: (
7296
data: PushTrackCommonType &
7397
ShortUrlParams & {

projects/app/src/pages/api/support/user/account/tokenLogin.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { getUserDetail } from '@fastgpt/service/support/user/controller';
33
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
44
import { NextAPI } from '@/service/middleware/entry';
55
import { type UserType } from '@fastgpt/global/support/user/type';
6+
import { pushTrack } from '@fastgpt/service/common/middle/tracks/utils';
7+
import { getGlobalRedisConnection } from '@fastgpt/service/common/redis';
68

79
export type TokenLoginQuery = {};
810
export type TokenLoginBody = {};
@@ -12,9 +14,15 @@ async function handler(
1214
req: ApiRequestProps<TokenLoginBody, TokenLoginQuery>,
1315
_res: ApiResponseType<any>
1416
): Promise<TokenLoginResponse> {
15-
const { tmbId } = await authCert({ req, authToken: true });
17+
const { tmbId, userId, teamId } = await authCert({ req, authToken: true });
1618
const user = await getUserDetail({ tmbId });
1719

20+
pushTrack.dailyUserActive({
21+
uid: userId,
22+
teamId: teamId,
23+
tmbId: tmbId
24+
});
25+
1826
// Remove sensitive information
1927
// if (user.team.lafAccount) {
2028
// user.team.lafAccount = {

0 commit comments

Comments
 (0)