Certification Status Panel
Component Detail
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.
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