Skip to content

feat: Modify mentor registration model to differentiate Long-term vs Ad-Hoc availability #480

@lauracabtay

Description

@lauracabtay

Description

The mentor registration model currently does not differentiate availability between ad-hoc and long-term mentorship. Availability is stored as a single structure regardless of mentorship type, for example:

"menteeSection": {
  "mentorshipType": ["Long-Term", "Ad-Hoc"],
  "availability": [
    { "month": "APRIL", "hours": 2 },
    { "month": "MAY", "hours": 4 },
    { "month": "JULY", "hours": 5 }
  ],
  "idealMentee": "string",
  "additional": "string"
}

This makes it difficult to:

  • Understand a mentor’s true capacity for long-term mentorship
  • Validate that the stated number of mentees aligns with available hours
  • Set clear expectations for mentors and the mentorship team

Proposed change

Separate availability by mentorship type, allowing explicit modelling and validation of long-term commitments:

"menteeSection": {
  "idealMentee": "string",
  "additional": "string",
  "LongTerm": {
    "numMentee": 2,
    "hours": 8
  },
  "AdHoc": [
    { "month": "APRIL", "hours": 1 },
    { "month": "MAY", "hours": 3 },
    { "month": "JULY", "hours": 1 }
  ]
}

This structure enables:

  • Clear long-term mentee capacity (numMentee)
  • Validation of total available hours against mentee count for long-term mentorship
  • Better visibility for matching and planning

Acceptance criteria

  • Existing mentor data is migrated to the new structure
  • DTOs are updated to support the new menteeSection model
  • Queries are updated to work with the new structure
  • validateMentorCommitment is updated to enforce:
    • Long-term mentors must commit to a minimum of 2 hours per mentee
    • Validation fails when long-term availability does not meet the minimum requirement

Metadata

Metadata

Assignees

Labels

epic-mentorshipAll tasks related to mentorship pages & tasksjava/springbootTasks where is needed Java experience or Spring Boot Experience

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions