feat: extended learner onboarding profile endpoint#59
Open
wagmiiii wants to merge 1 commit into
Open
Conversation
- Added SQL migration to expand learner_profiles table - Refactored DTOs with strict class-validator bounds for rich profiles - Implemented PATCH /api/v1/learners/profile for partial onboarding updates - Added GET /api/v1/learners/profile/completion for mobile progress tracking - Added unit tests for service, controller, and DTO validation
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.
Closes #18
Summary
Expands the learner profile endpoint to support rich onboarding data collection, allowing the platform to calculate better credit limits and recommend relevant vendors based on skills, goals, and income.
What Changed
20260626111334_extend_learner_profile.sqlfor all new profile fields.CreateLearnerProfileDtoand mapped new fields toLearnerResponseDto. Added tight validation rules (e.g.,@ArrayMaxSize(15)for skills).LearnersServiceto calculateprofile_completeupon partial updates, safely transitioningonboarding_completed_atonly on the first complete state.PATCH /api/v1/learners/profile. I migrated the existing@Get('me')to@Get('profile')to respect the issue's naming convention while retaining the NestJS controller mounting pattern. Added the@Get('profile/completion')endpoint.class-validatorrules.Acceptance Criteria
profile_completeflag set when required fields filled/completionreturns accurate missing fieldsTest & Coverage Output
Unit tests were added for the controller, service, and DTOs. Tests passed and test coverage covers the core logic branching for profile completion validation.
Security Note
Endpoints remain strictly protected by
JwtAuthGuard. The PATCH endpoint strictly relies onuser.walletfrom the authenticated@CurrentUser()context, preventing cross-wallet profile mutation. User inputs are thoroughly sanitized viaclass-validatorlimits.Follow-up