User Interface medium complexity frontendmobiledesktop
2
Dependencies
0
Dependents
1
Entities
0
Integrations

Description

Dedicated view within the admin portal displaying peer mentors with expiring or expired certifications across the org. Groups mentors by chapter, shows certification expiry dates, and allows admins to trigger reminder notifications. Supports HLF's requirement for automatic visibility changes tied to certification state.

Feature: Organisation Admin Portal

certification-status-panel

Summaries

The Certification Status Panel protects program quality and regulatory standing by ensuring administrators always have visibility into peer mentors whose certifications are expiring or have lapsed. Because expired certifications automatically remove mentors from chapter listings, administrators must act before expiry to avoid service gaps for participants. This proactive notification capability reduces the risk of unqualified mentors appearing in public listings, protects HLF's credibility with funders, and reduces the manual overhead of tracking certification deadlines across dozens of chapters.

This component depends on both admin-statistics-service and user-management-service, requiring both to expose stable certification data APIs before integration can proceed. Medium complexity is driven by multi-chapter grouping logic, expiry date calculations, status badge rendering, and the dual reminder flow (individual and bulk). Bulk reminder triggering carries a side-effect risk — sending duplicate notifications to mentors — which requires idempotency testing. Delivery planning should account for push notification infrastructure readiness, as reminders depend on device tokens being registered.

Plan a QA pass specifically for edge cases: mentors expiring today, already-expired mentors, and chapters with zero expiring mentors.

Certification Status Panel consumes certification data via loadCertificationData(orgId), which should return a grouped structure keyed by chapter with mentor entries containing expiry timestamps and computed state (active, expiring_soon, expired). filterByCertificationState(CertState) filters the rendered list client-side to avoid redundant API calls for each filter change. onSendReminderTapped(mentorId) and onSendBulkReminders() delegate to user-management-service's sendCertificationReminder and bulkSendCertificationReminders interfaces respectively. Expiry badge rendering should use a threshold-based color system (e.g., ≤7 days = red, ≤30 days = amber).

Visibility impact copy ('This mentor is currently hidden from chapter listing') should be conditionally rendered based on the mentor's certification state to communicate downstream effects clearly.

Responsibilities

  • List peer mentors with expiring or expired certifications grouped by chapter
  • Display days until expiry and certification status badges
  • Allow admin to trigger push reminder to individual or all expiring mentors
  • Reflect automatic visibility impact (removed from chapter listing on expiry)

Interfaces

build(context)
filterByCertificationState(CertState state)
onSendReminderTapped(mentorId)
onSendBulkReminders()
loadCertificationData(orgId)

Relationships

Dependencies (2)

Components this component depends on

Related Data Entities (1)

Data entities managed by this component