feat(analytics): add top tools and topics to session analytics

This commit is contained in:
William Valentin
2026-02-16 14:11:50 -08:00
parent 3d7144b2c5
commit 93621bbe6e
10 changed files with 173 additions and 8 deletions
+8
View File
@@ -344,12 +344,16 @@ describe('system.sessionAnalytics handler', () => {
const r = result.result as {
daily: unknown[];
topSessions: unknown[];
topTools: unknown[];
topTopics: unknown[];
averageMessagesPerSession: number;
totalSessions: number;
totalMessages: number;
};
expect(r.daily).toEqual([]);
expect(r.topSessions).toEqual([]);
expect(r.topTools).toEqual([]);
expect(r.topTopics).toEqual([]);
expect(r.averageMessagesPerSession).toBe(0);
expect(r.totalSessions).toBe(0);
expect(r.totalMessages).toBe(0);
@@ -359,6 +363,8 @@ describe('system.sessionAnalytics handler', () => {
const getSessionAnalytics = vi.fn(() => ({
daily: [{ day: '2026-02-16', sessions: 2, messages: 8 }],
topSessions: [{ sessionId: 'telegram:1', messages: 5, lastActivity: 1708080000 }],
topTools: [{ toolName: 'web.search', executions: 4 }],
topTopics: [{ topic: 'kubernetes', occurrences: 3 }],
averageMessagesPerSession: 4,
totalSessions: 2,
totalMessages: 8,
@@ -383,6 +389,8 @@ describe('system.sessionAnalytics handler', () => {
expect(getSessionAnalytics).toHaveBeenCalledWith({ days: 7, topLimit: 5 });
expect(getPath(result.result, 'totalSessions')).toBe(2);
expect(getPath(result.result, 'daily')).toEqual([{ day: '2026-02-16', sessions: 2, messages: 8 }]);
expect(getPath(result.result, 'topTools')).toEqual([{ toolName: 'web.search', executions: 4 }]);
expect(getPath(result.result, 'topTopics')).toEqual([{ topic: 'kubernetes', occurrences: 3 }]);
});
});
+2
View File
@@ -214,6 +214,8 @@ export function createSystemHandlers(deps: SystemHandlerDeps) {
return makeResponse(request.id, {
daily: [],
topSessions: [],
topTools: [],
topTopics: [],
averageMessagesPerSession: 0,
totalSessions: 0,
totalMessages: 0,