Zum Hauptinhalt springen

Komponenten

Zweck

Komponenten (Component) sind hierarchische Bauteil-Stammdaten — z. B. „Motor", „Pumpe", „Ventil" innerhalb einer Anlage. Komponenten koennen verschachtelt werden über parentComponentId (System → Subsystem → Bauteil). Sie werden in Produkten (Product.productComponents), Anlagen (System.components) und Prüf-Checklisten (Checklist.component) referenziert.

Voraussetzungen

- Berechtigung `create:Component`. - Optional `ProductComponentType`-Stammdaten für Klassifizierung.

Berechtigungen (CASL)

ActionSubjectKeycloak-Rolle
viewFE_Component, Component
create/update/deleteComponentAPP_SPEAMCORE_CREATE/UPDATE/DELETE_COMPONENT
viewProductComponentTypeAPP_SPEAMCORE_VIEW_PRODUCT_COMPONENT_TYPE

Schritt-für-Schritt-Anleitung

Komponente anlegen

  1. Komponenten (/components) → + Neu.
  2. Name vergeben (z. B. „Pumpe Sprinkleranlage P1").
  3. Optional componentType (Klassifizierung) und parentComponentId (Hierarchie) setzen.
  4. Änderungen werden automatisch gespeichert.

Hierarchie aufbauen

Setzen Sie parentComponentId auf eine bereits existierende Komponente — die Liste zeigt anschliessend die verschachtelte Struktur.

Achten Sie darauf, **keine Zirkel-Referenzen** zu erzeugen — eine Komponente darf nicht (direkt oder indirekt) ihr eigener Parent sein.

Listenansicht — components

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: „+ Neu"

Listenseite. Erfordert create:Component.

Auswahl: „Parent Component"

Komponenten-Such-Select. Bestimmt den Hierarchie-Eltern-Datensatz. Selbstreferenz schluesst sich beim Speichern aus.

Felder und Eingaben

FeldnamePflichtDatentypBeschreibungWirkung beim AusfuellenVoraussetzung
namejaStringKomponenten-Bezeichnung.Erscheint in Auswahl-Listen und Hierarchie-Anzeige.
componentTypeneinUUID (Select)Klassifizierung der Komponente.Steuert Reports und ggf. spezifische Felder pro Komponententyp.
parentComponentIdneinUUID (Searchable Select)Eltern-Komponente in der Hierarchie.Erstellt Verschachtelung.Komponente darf nicht (direkt oder indirekt) ihre eigene Eltern-Komponente sein.
productComponentTypeIdneinUUIDVerknuepfung zu ProductComponentType für produkt-spezifische Komponententypen.Filter in Produkt-Auswahl.view:ProductComponentType

Workflows und Zustaende

Kein Status-Feld. Soft-Delete via paranoid.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

  • Anlagen / SystemsSystem.components (1:N).
  • ProdukteProduct.productComponents (1:N).
  • Prüf-ChecklistenChecklist.component (N:1) bei Komponenten-Checklisten.
  • MängelDefect.parentType ∈ {Workorder, WorkorderSystem, Checklist, ChecklistTileItem} — nicht direkt Komponente, aber über Checklisten verknuepft.

Häufige Fehler und Lösungen

FehlerLösung
Zirkel-Referenz im ParentServer lehnt das Speichern ab. Eine andere Komponente wählen.
Komponente nicht in Anlagen-Auswahl sichtbarComponent:view fehlt oder paranoid-Soft-Delete.
Hierarchie-Anzeige unvollstaendigTiefe Hierarchien koennen aus Performance-Gruenden gekuerzt werden.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/componentsListe (mit Hierarchie)view Component
GET/api/components/:idDetailview Component
POST/api/componentsAnlegencreate Component
PUT/api/components/:idÄndernupdate Component
DELETE/api/components/:idSoft-Deletedelete Component

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard.