Implement student learning support features#1061
Open
akish99 wants to merge 8 commits into
Open
Conversation
* chore: ignore debugger agent file from git tracking * fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students * fix: bypass recaptcha for course registration
* chore: ignore debugger agent file from git tracking * fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students
* chore: ignore debugger agent file from git tracking * fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students * fix: bypass recaptcha for course registration * fix: Resolve progress tracking bugs for quiz and video completion - Fix getUserProgress resetting completed-course position to first item (Bug B) Removed code that overwrites currentModule/currentSection/currentItem when course.completed is true. Students should not be reset to the beginning on login. - Fix quiz exhausted-attempts not setting endTime on watchTime (Bug C) Added stopItem call in exhausted-attempts error handler to properly close the watchTime document, matching the behavior of the success path. - Fix non-idempotent stopItemTracking throwing on already-stopped watchTime (Bug E) Changed to treat already-stopped items as safe instead of throwing NotFoundError. Only validate watch times that were actually returned by stopItemTracking. These changes complete the progress tracking fixes for marking videos and quizzes as completed while preventing duplicate progress updates and handling edge cases.
…nd backend pipeline (vicharanashala#976) * feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped) * fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements * fix: query watchTime collection instead of enrollment for GuruSetu feedback export
* feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped) * fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements * fix: query watchTime collection instead of enrollment for GuruSetu feedback export * feat(quiz-export): add Progress % column after Email in export Include percentCompleted in quiz score export payload and map it into frontend export data.\nInsert a new Progress % column immediately after Email while keeping all existing columns unchanged.
* feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped) * fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements * fix: query watchTime collection instead of enrollment for GuruSetu feedback export
…haranashala#982) Backend: - BaseService: retry WriteConflict (code 112) with backoff, not just TransientTransactionError-labelled errors - ProgressService.stopItem: skip sequence validation for already-completed items (rewatch scenario) — students who earned an item can always stop it - ProgressService.getModuleWiseProgress: parallelize readItemsGroup calls with Promise.all instead of serial await-in-loop (fixes 84s response time) Frontend: - hooks.ts: set retry:0 on useStopItem to eliminate React Query's internal retry storm (was causing up to 532 concurrent stop requests) - video.tsx: gate NavigatingOverlay on reachedVideoEnd state so it only shows after the video actually ends, not on background queue flushes - video.tsx: add isAlreadyWatched guard to endTime and near-completion triggers — rewatched videos (startItem returns empty watchItemId) now call onNext() directly without hitting the stop API - video.tsx: redesign NavigatingOverlay with app design tokens (primary amber, Libre Baskerville serif quote mark, card/border/muted tokens), 12 quotes on AI in education from Indian authors - course-page.tsx: Rewatch Video button now walks backwards through all previous sections using courseVersionData when sectionItems cache is cold (e.g. after page refresh), skipping quiz-only sections until it finds an actual video item Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: ignore debugger agent file from git tracking * fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students * fix: bypass recaptcha for course registration * fix: Resolve progress tracking bugs for quiz and video completion - Fix getUserProgress resetting completed-course position to first item (Bug B) Removed code that overwrites currentModule/currentSection/currentItem when course.completed is true. Students should not be reset to the beginning on login. - Fix quiz exhausted-attempts not setting endTime on watchTime (Bug C) Added stopItem call in exhausted-attempts error handler to properly close the watchTime document, matching the behavior of the success path. - Fix non-idempotent stopItemTracking throwing on already-stopped watchTime (Bug E) Changed to treat already-stopped items as safe instead of throwing NotFoundError. Only validate watch times that were actually returned by stopItemTracking. These changes complete the progress tracking fixes for marking videos and quizzes as completed while preventing duplicate progress updates and handling edge cases. * fix: stop API errors, rewatch 403s, and Rewatch Video navigation Backend: - BaseService: retry WriteConflict (code 112) with backoff, not just TransientTransactionError-labelled errors - ProgressService.stopItem: skip sequence validation for already-completed items (rewatch scenario) — students who earned an item can always stop it - ProgressService.getModuleWiseProgress: parallelize readItemsGroup calls with Promise.all instead of serial await-in-loop (fixes 84s response time) Frontend: - hooks.ts: set retry:0 on useStopItem to eliminate React Query's internal retry storm (was causing up to 532 concurrent stop requests) - video.tsx: gate NavigatingOverlay on reachedVideoEnd state so it only shows after the video actually ends, not on background queue flushes - video.tsx: add isAlreadyWatched guard to endTime and near-completion triggers — rewatched videos (startItem returns empty watchItemId) now call onNext() directly without hitting the stop API - video.tsx: redesign NavigatingOverlay with app design tokens (primary amber, Libre Baskerville serif quote mark, card/border/muted tokens), 12 quotes on AI in education from Indian authors - course-page.tsx: Rewatch Video button now walks backwards through all previous sections using courseVersionData when sectionItems cache is cold (e.g. after page refresh), skipping quiz-only sections until it finds an actual video item Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Implemented and improved student learning support features in the platform.
Changes Made
Testing
Demo
https://drive.google.com/file/d/194NwwqKjvTirugiFVU4dQGsoinryCW6H/view?usp=drive_link