mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-11 16:28:37 +01:00
new selfhosted version
This commit is contained in:
52
dashboard/server/services/ai/plugins/SessionsPlugin.ts
Normal file
52
dashboard/server/services/ai/plugins/SessionsPlugin.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import { executeAdvancedTimelineAggregation } from "../../TimelineService";
|
||||
import { Types } from "mongoose";
|
||||
import { AiPlugin, getFirstAvailableSliceFromDates } from "../Plugin";
|
||||
import { VisitModel } from "~/shared/schema/metrics/VisitSchema";
|
||||
|
||||
const getSessionsTimelinePlugin = new AiPlugin<'getSessionsTimeline', ['from', 'to', 'page', 'domain']>(
|
||||
'getSessionsTimeline',
|
||||
{
|
||||
type: 'function',
|
||||
function: {
|
||||
name: 'getSessionsTimeline',
|
||||
description: 'Gets an array of date and count for sessions (unique visitors) received on a date range.',
|
||||
parameters: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
from: { type: 'string', description: 'ISO string of start date' },
|
||||
to: { type: 'string', description: 'ISO string of end date' },
|
||||
page: { type: 'string', description: 'The page of the visit' },
|
||||
domain: { type: 'string', description: 'Used only to filter a specific domain/website' }
|
||||
},
|
||||
required: ['from', 'to']
|
||||
}
|
||||
}
|
||||
},
|
||||
async (data) => {
|
||||
const timelineData = await executeAdvancedTimelineAggregation({
|
||||
projectId: new Types.ObjectId(data.project_id),
|
||||
model: VisitModel,
|
||||
from: new Date(data.from).getTime(),
|
||||
to: new Date(data.to).getTime(),
|
||||
slice: getFirstAvailableSliceFromDates(data.from, data.to),
|
||||
domain: data.domain,
|
||||
customIdGroup: { count: '$session' },
|
||||
customQueries: [
|
||||
{
|
||||
index: 2,
|
||||
query: {
|
||||
$group: { _id: { date: '$_id.date' }, count: { $sum: 1 } }
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
return timelineData;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
export const sessionsPlugins = [
|
||||
getSessionsTimelinePlugin
|
||||
]
|
||||
Reference in New Issue
Block a user