Context
Two scenarios require forwarding a mentee to their next priority mentor without the mentor actively declining:
- Mentor unavailable: mentor cannot participate this cycle (capacity full, on leave, etc.) — unrelated to the specific mentee
- Admin forwarded: mentor has not responded within the expected timeframe and admin manually escalates
Both statuses trigger the same forwarding logic but are semantically distinct for reporting purposes.
Changes Required
MenteeWorkflowService
- Add
markMentorUnavailable(applicationId, reason):
- Sets status to
MENTOR_UNAVAILABLE
- Triggers next priority forwarding
- Add
forwardApplication(applicationId, reason):
- Sets status to
ADMIN_FORWARDED
- Triggers next priority forwarding
- Both methods call
checkAndTriggerManualMatch() if no more priorities remain
New API endpoints
PATCH /api/platform/v1/mentors/applications/{applicationId}/mark-unavailable
Body: { "reason": "string" }
PATCH /api/platform/v1/mentees/applications/{applicationId}/forward
Body: { "reason": "string" }
Acceptance Criteria
Dependencies
- Ticket: feat: Add new ApplicationStatus values and DB migration
- Ticket: feat:
PENDING_MANUAL_MATCH detection and manual matching queue
Context
Two scenarios require forwarding a mentee to their next priority mentor without the mentor actively declining:
Both statuses trigger the same forwarding logic but are semantically distinct for reporting purposes.
Changes Required
MenteeWorkflowServicemarkMentorUnavailable(applicationId, reason):MENTOR_UNAVAILABLEforwardApplication(applicationId, reason):ADMIN_FORWARDEDcheckAndTriggerManualMatch()if no more priorities remainNew API endpoints
Acceptance Criteria
markMentorUnavailable()implemented and testedforwardApplication()implemented and testedPENDING_MANUAL_MATCHwhen priorities exhaustedDependencies
PENDING_MANUAL_MATCHdetection and manual matching queue