Zum Hauptinhalt springen

Mängel

Zweck

Mängel werden waehrend Prüfungen, Kontrollen oder Wartungen an Anlagen festgestellt und nachverfolgt. Sie haengen polymorph an einem Auftrag, einer Anlage, einer Checkliste oder einem Checklisten-Item — abhaengig vom Erfassungsort.

Mängel werden nicht manuell angelegt. Der `POST`-Endpoint ist im Backend deaktiviert. Sie entstehen automatisch im Prüf-/Wartungs-Modul. Wenn ein Anwender einen Mangel direkt anlegen will, fuehren Sie ihn stattdessen zur passenden Prüfung.

Voraussetzungen

- Es gibt einen Auftrag, eine Anlage oder eine Checkliste, in der ein Mangel auftreten kann. - Eingerichtete Stammdaten: `DefectType`, `DefectTypeCategory`, `DefectTypeOperator`, `DefectTypePriority`. - Berechtigung `Defect:view` (zum Anschauen) bzw. `Defect:update` (zum Bearbeiten).

Berechtigungen (CASL)

Frontend-Page-Guard:

ActionSubjectKeycloak-Rolle
viewFE_Defect
viewDefectAPP_SPEAMCORE_VIEW_DEFECT

API-Datenzugriff:

ActionSubjectEndpointKeycloak-Rolle
viewDefectGET /api/defects, GET /api/defects/:idAPP_SPEAMCORE_VIEW_DEFECT
updateDefectPATCH /api/defects/:idAPP_SPEAMCORE_UPDATE_DEFECT
deleteDefectDELETE /api/defects/:idAPP_SPEAMCORE_DELETE_DEFECT

POST /api/defects ist nicht verfuegbar — Mängel werden über das Prüf-/Wartungs-Modul erzeugt.

Schritt-für-Schritt-Anleitung

Mangel bearbeiten

  1. Mängel (/defects) öffnen oder direkt aus dem Auftrag-Tab Mängel.
  2. Mangel anklicken.
  3. Felder pflegen — insbesondere description, action, deadline, Klassifizierung (defectTypeCategoryId, defectTypeOperatorId, defectTypePriorityId).
  4. Speichern.

Mangel abschliessen

Der Lifecycle eines Mangels (in Bearbeitung / behoben / nicht behoben / offen) wird nicht über ein eigenes Status-Feld am Defect selbst gesteuert, sondern aus dem Kontext abgeleitet: über parentType + parentId (typisch Workorder/Checklist), workorderDefectId (Pruefungs-Verknuepfung) und ggf. deadline. Der „behobene" Status ergibt sich aus dem Workorder-Status und ggf. einem Folge-Workorder.

Listenansicht — defects

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

UI-Elemente

Button: „Speichern"

Detailseite. Erfordert update:Defect.

Button: „Löschen"

Detailseite. Erfordert delete:Defect. Soft-Delete.

Felder und Eingaben

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
defectNoautomatischNumberCircleAssignmentIdentifiziert den Mangel in Reports und in der Prüf-Historie.Nummernkreis konfiguriert.
defectTypeIdjaUUIDKlassifizierung der Mangelart. Disabled — wird vom System (Prüf-Modul) gesetzt.view:DefectType.
parentId + parentTypejapolymorphVerknuepft mit Workorder, WorkorderSystem, Checklist oder ChecklistTileItem. Steuert den Anzeige-Kontext.view auf den jeweiligen Parent-Typ.
workorderDefectIdjaUUIDVerknuepfung zur konkreten Prüfung.Prüfung muss existieren.
defectNumberneinStringExterne Mangelnummer (z. B. aus Prüf-Bericht).
titleneinStringKurztitel — erscheint in Listen und Mangel-Reports.
descriptionneinTEXTDetail-Beschreibung des Mangels für Berichte.
actionneinTEXTErforderliche Massnahme zur Behebung.
deadlineneinDATEFrist zur Behebung. Bei Ueberschreitung wird der Mangel als überfällig markiert.Validierung: deadline >= heute.
deadlineDaysneinINTEGERFrist in Tagen ab Erfassung — alternativ zu deadline.Validierung: >= 0.
countryIdneinUUIDLand für regulatorische Auswertung (z. B. ArbStaettV-Reports).view:Country.
defectTypeCategoryIdneinUUIDKategorie (z. B. „Sicherheit", „Funktion"). Filter in Reports.view:DefectTypeCategory.
defectTypeOperatorIdneinUUIDOperator/Wartungsverantwortlicher für Eskalation.view:DefectTypeOperator.
defectTypePriorityIdneinUUIDPrioritaet — bestimmt SLA-Reaktionszeit und Sortierung in Listen.view:DefectTypePriority.

Workflows und Zustaende

Mängel kennen kein eigenes Status-Enum am Datensatz. Lifecycle ergibt sich aus der zugehörigen Prüfung (workorderDefectId) und der gepflegten deadline/action.

Stand der Doku: Der oben dargestellte Lifecycle ist aus dem Brandschutz-Branchen-Verstaendnis abgeleitet — er ist nicht durch ein zentrales Defect.status-Feld erzwungen. Im Code wird der Mangel-Status aus Workorder-Status + Folge-Workorders abgeleitet. Wenn fachlich noetig, koennte ein eigenes Defect.status mit harter Validierung ergaenzt werden.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Auftrag (Workorder) — typischer Parent.
  • Anlage (WorkorderSystem) — bei Anlagen-spezifischen Maengeln.
  • Checkliste / ChecklistTileItem — bei Prüf-Checklisten.
  • Stammdaten: DefectType, DefectTypeCategory, DefectTypeOperator, DefectTypePriority.

Häufige Fehler und Lösungen

FehlerLösung
Mangel kann nicht angelegt werdenPOST ist deaktiviert — Mangel über die Prüfung im Wartungs-Modul anlegen.
deadline Validierung schlaegt fehlFrist liegt in der Vergangenheit. deadline >= heute setzen.
Mangel im Auftragstab nicht sichtbarDefect:view fehlt oder parentType ≠ Workorder.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/defectsListeview Defect
GET/api/defects/:idDetailview Defect
PATCH/api/defects/:idÄndernupdate Defect
DELETE/api/defects/:idSoft-Deletedelete Defect

POST /api/defects existiert im Router, ist aber auskommentiert/deaktiviert.

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung.