diff --git a/server/src/models/sessionManager.ts b/server/src/models/sessionManager.ts index c58266e..c37e7e1 100644 --- a/server/src/models/sessionManager.ts +++ b/server/src/models/sessionManager.ts @@ -97,6 +97,7 @@ export async function finishSession( session: HydratedDocument ): Promise { session.status = 'finished' + session.finishedAt = new Date() await session.save() const userProfile = await UserProfile.findOne({ user: session.user }) diff --git a/services/analytics/src/interface.ts b/services/analytics/src/interface.ts index 94ed03b..9350749 100644 --- a/services/analytics/src/interface.ts +++ b/services/analytics/src/interface.ts @@ -1,6 +1,7 @@ import { Types } from 'mongoose' export interface User { + _id: string username: string } export interface SessionDocument { @@ -8,8 +9,10 @@ export interface SessionDocument { user: User quest: string status: string + locale: string createdAt: Date finishedAt: Date + lastActivityAt: Date } export interface CommandObject { command: string @@ -21,24 +24,17 @@ export interface CommandObject { } export interface SessionObject { _id: Types.ObjectId - user: string + user: User quest: string + locale: string status: string createdAt: string finishedAt: string lastActivityAt: string usedTime: string commandCount: number - commands: CommandObject[] } -export interface SessionDetail { - _id: Types.ObjectId - user: string - quest: string - status: string - createdAt: string - finishedAt: string - usedTime: string +export interface SessionDetail extends SessionObject { commands: CommandObject[] } export interface IUser extends Document { diff --git a/services/analytics/src/models/sessions.ts b/services/analytics/src/models/sessions.ts index 19928d7..6fc2c2b 100644 --- a/services/analytics/src/models/sessions.ts +++ b/services/analytics/src/models/sessions.ts @@ -28,14 +28,6 @@ export async function sessionList( }, }, { $unwind: '$user' }, - { - $lookup: { - from: 'commands', - localField: '_id', - foreignField: 'session', - as: 'commands', - }, - }, pagination.sort('_id'), pagination.limit(), ]) @@ -45,16 +37,17 @@ export async function sessionList( _id, user, quest, + locale, status, createdAt, finishedAt, - commands, lastActivityAt, } = session return { _id, - user: user.username, // Assuming `user` is always populated. + user: { _id: user._id, username: user.username }, quest, + locale: locale ?? 'zh-TW', status, createdAt: createdAt?.toLocaleString(), finishedAt: finishedAt?.toLocaleString(), @@ -63,8 +56,7 @@ export async function sessionList( lastActivityAt && createdAt ? formatTime(lastActivityAt.getTime() - createdAt.getTime()) : 'N/A', // Ensure both dates are present - commandCount: commands?.length || 0, - commands, + commandCount: 0, } }) } @@ -83,14 +75,26 @@ export async function sessionDetail(id: string): Promise { createdAt: createdAt?.toLocaleString(), }) ) - const { _id, user, quest, status, createdAt, finishedAt } = session + const { + _id, + user, + quest, + locale, + status, + createdAt, + finishedAt, + lastActivityAt, + } = session return { _id, - user: user.username, + user: { _id: user._id, username: user.username }, quest, + locale: locale ?? 'zh-TW', status, createdAt: createdAt?.toLocaleString(), finishedAt: finishedAt?.toLocaleString(), + lastActivityAt: lastActivityAt?.toLocaleDateString(), + commandCount: commands.length, usedTime: finishedAt ? formatTime(finishedAt.getTime() - createdAt.getTime()) : '', diff --git a/services/analytics/views/sessionDetail.handlebars b/services/analytics/views/sessionDetail.handlebars index f6af4fa..cf1938a 100644 --- a/services/analytics/views/sessionDetail.handlebars +++ b/services/analytics/views/sessionDetail.handlebars @@ -6,9 +6,13 @@ Quest {{quest}} + + Locale + {{locale}} + User - {{user}} + {{user.username}} Status @@ -55,4 +59,4 @@ {{/each}} - {{/with}} \ No newline at end of file + {{/with}} diff --git a/services/analytics/views/sessions.handlebars b/services/analytics/views/sessions.handlebars index 765ce13..1ef718f 100644 --- a/services/analytics/views/sessions.handlebars +++ b/services/analytics/views/sessions.handlebars @@ -12,22 +12,22 @@ User Quest + Locale Status Created At Finished At Used Time - Command Count Session {{#each sessions}} - {{user}} + {{user.username}} {{quest}} + {{locale}} {{status}} {{createdAt}} {{finishedAt}} {{usedTime}} - {{commandCount}} Detail {{/each}} @@ -37,4 +37,4 @@

Next

- \ No newline at end of file +