add lesson time tracking and quiz score trends per user #103
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 Pull Request Title
Description
Created a Track granular lesson engagement per user, including time spent and quiz performance. Expose backend endpoints to retrieve analytics for dashboards or profile pages.
Created module: analytics.module.ts, analytics.service.ts, analytics.controller.ts.
Track:
lesson_start_time, lesson_end_time (calculate duration).
Quiz score per attempt.
Implemented the following endpoints:
POST /analytics/lesson-start
POST /analytics/lesson-end
POST /analytics/quiz-score
GET /analytics/user/:userId
Used decorators to auto-fetch user from JWT.
Ensured analytics data is stored efficiently (via new lesson_analytics and quiz_analytics entities).
Testing:
Wrote Unit tests for duration and score tracking logic.
Integration tests for each endpoint.
Performance test for GET /analytics/user/:userId with multiple lessons.
Related Issues
Changes Made
How to Test
npm run test -- src/modules/analytics/analytics.service.spec.ts src/modules/analytics/analytics.controller.spec.ts src/modules/analytics/analytics.e2e-spec.ts src/modules/analytics/analytics.performance.spec.ts
Screenshots (if applicable)
Checklist