CertificateService
Component Detail
Description
Encapsulates all business logic for certificate lifecycle management, including issuance upon course completion, status evaluation, auto-pause triggering, and renewal reminder scheduling. Acts as the authoritative source driving assignment eligibility decisions based on certificate validity. Coordinates between course completion events and downstream notification or assignment systems.
certificate-service
Sources & reasoning
Line 114 specifies 'digitale sertifikater' as part of HLF's certification requirement; line 80 ties certificate status to automatic removal from public listings, establishing the digital record as the authoritative status source. Line 361 confirms 'Digitalt likepersonsbevis' in the Phase 3 roadmap, mapping to v1.1 by ordinal position.
-
docs/source/likeperson.md · line 114Kursadministrasjon og sertifisering: Påmelding til kurs i appen, automatisk påminnelse ved utløp, digitale sertifikater. Det fysiske kortet er et «adelsmerke» og skal leve parallelt.
-
docs/source/likeperson.md · line 80HLF kobler dette til sertifisering: ved utgått sertifikat forsvinner likepersonen fra lokallagets nettsider automatisk.
-
docs/source/likeperson.md · line 361Digitalt likepersonsbevis
Responsibilities
- Issue a digital certificate record when a mentor successfully completes their certification course
- Evaluate certificate validity and return eligibility status for assignment matching
- Trigger auto-pause on active assignments when a certificate expires or is suspended
- Schedule and dispatch renewal reminder notifications as expiry approaches
- Expose certificate status queries for use by other features such as assignment dispatch
Interfaces
issueCertificate(mentorId: string, courseId: string): Certificate
getCertificateStatus(mentorId: string): CertificateStatus
checkAssignmentEligibility(mentorId: string): boolean
triggerAutoPause(mentorId: string): void
scheduleRenewalReminder(mentorId: string, expiryDate: Date): void
Related Data Entities (4)
Data entities managed by this component