Tipe sertifikat
| Tipe | Cara dapat | Format |
|---|---|---|
| TrainerHub | Progress kursus 100% → generate di UI | PDF + nomor + QR |
| BNSP | Admin/peserta upload | PDF/image di R2 |
Alur TrainerHub (otomatis)
Syarat generate
| Syarat | Error code |
|---|---|
User punya profil peserta | PESERTA_NOT_FOUND |
| Progress kursus 100% | COURSE_NOT_COMPLETE |
| Belum ada sertifikat kursus ini | return existing |
| Request dari workspace context | WORKSPACE_REQUIRED |
apps/api/src/certificates/certificate.service.ts
Nomor sertifikat
Format dibangun dari tahun + judul kursus + urutan tahun itu:{FRONTEND_URL}/validate/{certificateNumber}
Validasi publik
Tanpa login:API peserta
| Endpoint | Fungsi |
|---|---|
GET /sertifikat/me | List sertifikat workspace (scoped) |
GET /certificates/me | Legacy list by user |
GET /certificates/eligible-courses | Kursus + progress + sudah punya sertifikat? |
POST /certificates/generate/:courseId | Generate PDF (butuh workspace header) |
/:slug/sertifikat → Sertifikat.tsx
BNSP upload
Admin atau peserta bisa upload sertifikat BNSP resmi:- File disimpan di R2 path
peserta/{id}/sertifikat/ - Field opsional:
nomorSertifikat,lsp - Satu record BNSP per peserta (update jika sudah ada)
Sequence generate
Halaman terkait
- Alur pembuatan kursus
- Alur video Mux — progress dari menonton lesson
- Glossarium