Kurs-Zertifikate (CourseCertificates)
Zweck
CourseCertificate ist eine Vorlage für Zertifikate, die nach Abschluss eines Kurses oder einer Prüfung an Lernende ausgestellt werden. Pro Zertifikat wird über type festgelegt, ob es ein vollwertiges Zertifikat (mit Gueltigkeitsdauer) oder eine Teilnahmebescheinigung ist. Logo, Zertifizierungssiegel, Unterschrift (als Dokument) und Aussteller-Stadt werden eingebunden — beim Ausstellen wird daraus ein PDF generiert.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_CourseCertificate, CourseCertificate | Liste/Detail aufrufbar | — |
create/update/delete | CourseCertificate | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_COURSE_CERTIFICATE |
create | Document | Logo/Unterschrift/Zertifizierungs-Bild hochladen | APP_SPEAMCORE_CREATE_DOCUMENT |
Schritt-für-Schritt-Anleitung
- Kurs-Zertifikate (
/course-certificates) → + Neu. typewählen —certificate(mit Gültigkeit) oderparticipation(reine Teilnahmebescheinigung). Type ist nach Anlage immutable.namepflegen (z. B. „Brandschutzbeauftragter — Zertifikat").- Bei
type = certificate:validDayssetzen (Anzahl Tage, in denen das Zertifikat gültig ist). issuerundcourseDescriptionals ausführliche Texte pflegen.- Unterschrift (
signatureDocumentId) als Signatur-Dokument hochladen, plussignatureNameundsignatureCity. - Logo (
logoDocumentId) und Zertifizierungssiegel (certificationDocumentId) als Bild hochladen.

Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
type | ja (read-only) | ENUM (certificate, participation) | Bestimmt, ob validDays sichtbar ist und ob das Dokument als rechtsverbindliches Zertifikat oder als Teilnahmebescheinigung erzeugt wird. | — |
name | nein | String | Anzeigename. | — |
validDays | ja bei type = certificate | Integer | Gueltigkeitsdauer in Tagen ab Ausstellung. | type = certificate. |
issuer | nein | TEXT | Aussteller-Beschreibung (Firma/Person). | — |
courseDescription | nein | TEXT | Beschreibung des Kurses für das Zertifikat. | — |
signatureDocumentId | nein | UUID (Document) | Signatur-Datei. | documentType = signature, create:Document. |
signatureName | nein | String | Name des Unterzeichnenden. | — |
signatureCity | nein | String | Ausstellungs-Stadt. | — |
logoDocumentId | nein | UUID (Document) | Logo des Ausstellers. | documentType = image, create:Document. |
certificationDocumentId | nein | UUID (Document) | Zusaetzliches Zertifizierungs-Bild (z. B. TUEV-Siegel). | documentType = image, create:Document. |
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Kurse — Zertifikat wird einem Kurs zugeordnet.
- Kurs-Anmeldungen — beim Abschluss wird das Zertifikat als CourseEnrollmentCertificate ausgestellt.
- Document-Center — Logo, Unterschrift, Zertifizierung als Document-Einträge.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
validDays nicht editierbar | type = participation — Teilnahmebescheinigungen haben keine Gueltigkeitsdauer. |
| Unterschrift fehlt im PDF | signatureDocumentId nicht gesetzt oder Document hat falschen Typ. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/course-certificates | Liste | view CourseCertificate |
POST | /api/course-certificates | Anlegen | create CourseCertificate |
GET | /api/course-certificates/:id | Detail | view CourseCertificate |
PATCH | /api/course-certificates/:id | Ändern | update CourseCertificate |
DELETE | /api/course-certificates/:id | Soft-Delete | delete CourseCertificate |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.