1a0a56a626
Replace the stale multi-module java/mss-failsafe skeleton (old user-management prototype) with the active single-module machine-safety inspection app that was living in its own standalone repo at the repo root. - Remove old java/mss-failsafe/ multi-module tree (mss, userdata, userManagement, mssfailsafe.datalayer, mssfailsafeWeblayer) incl. committed build artifacts - Add the active app (PrimeFaces 11 / JSF 2.3 / Hibernate 5.6 / iText / POI) flattened into java/mss-failsafe/ as the only mss-failsafe in git - Working tree captured = master tip 2a142b5 + in-progress uncommitted work (incl. .github/*.instructions.md AI-context files) - Archive the standalone repo's 33-commit history in GIT_HISTORY_ARCHIVE.md since its .git was not migrated This is the source of truth / base for the upcoming upgraded rewrite.
7.6 KiB
Executable File
7.6 KiB
Executable File
Questionnaires für SecurityArea - Implementierungsplan
Übersicht
Implementierung der Funktionalität zur Hinzufügung von Fragebögen (Questionnaires) zu SecurityArea-Entitäten in den Basisdaten. Dies ermöglicht es, Fragebögen bereits bei der Erstellung von Sicherheitsbereichen zu hinterlegen, anstatt erst bei der Ticket-Erstellung.
Hintergrund
- Aktueller Stand: Questionnaires werden nur zu TicketSecurityArea hinzugefügt
- Neues Ziel: Questionnaires sollen auch zu SecurityArea (Basisdaten) hinzugefügt werden können
- Grund: Verbesserung des Workflows entsprechend Kundenwunsch
Schritt-für-Schritt Implementierung
1. Datenbankmodell erweitern
1.1 SecurityArea Entität anpassen
- Datei:
src/main/java/model/securityarea/SecurityArea.java - Aufgabe:
- Neue Beziehung zu Questionnaires hinzufügen
@OneToManyMapping fürSecurityAreaQuestionnaireimplementieren- Ähnlich wie bei TicketSecurityArea → SecurityAreaQuestionnaire
1.2 Neue Entität: SecurityAreaQuestionnaire
- Datei:
src/main/java/model/securityarea/SecurityAreaQuestionnaire.java(neu erstellen) - Aufgabe:
- Entität ähnlich zu
TicketSecurityAreaQuestionnaireerstellen @ManyToOneBeziehung zu SecurityArea@OneToManyBeziehung zu SecurityAreaQuestion- Konstruktor für Kopieren von Questionnaire → SecurityAreaQuestionnaire
- Entität ähnlich zu
1.3 Neue Entität: SecurityAreaQuestion
- Datei:
src/main/java/model/securityarea/SecurityAreaQuestion.java(neu erstellen) - Aufgabe:
- Entität ähnlich zu
SecurityAreaQuestionaus tickets package erstellen @ManyToOneBeziehung zu SecurityAreaQuestionnaire- Alle notwendigen Felder für Fragen implementieren
- Entität ähnlich zu
2. Business Logic implementieren
2.1 SecurityAreaManager erweitern
- Datei:
src/main/java/business/securityarea/SecurityAreaManager.java - Aufgabe:
- Methoden für Questionnaire-Management hinzufügen
addQuestionnaireToSecurityArea()removeQuestionnaireFromSecurityArea()getAvailableQuestionnaires()
2.2 QuestionnaireManager anpassen
- Datei:
src/main/java/business/questions/QuestionnaireManager.java - Aufgabe:
- Methoden für SecurityArea-Questionnaire Verknüpfung
- Validierung für Questionnaire-Zuordnung
3. Controller Layer erweitern
3.1 SecurityAreaController anpassen
- Datei:
src/main/java/controller/securityarea/SecurityAreaController.java - Aufgabe:
- Properties für Questionnaire-Auswahl hinzufügen
selectedQuestionnaire,availableQuestionnaires- Methoden:
addQuestionnaireToArea(),removeQuestionnaireFromArea() - Integration in
save()undeditSelected()Methoden
3.2 Neue Controller für SecurityAreaQuestionnaire
- Datei:
src/main/java/controller/securityarea/SecurityAreaQuestionnaireController.java(optional) - Aufgabe:
- Dedicated Controller für Questionnaire-Management
- Ähnlich zu bestehenden Questionnaire-Controllern
4. UI Implementation
4.1 Hauptseite erweitern
- Datei:
src/main/webapp/resources/user/sec/create.xhtml - Aufgabe:
- Neue Sektion für Questionnaires in SecurityArea-Details hinzufügen
- Position: Nach den DangerPoints, vor dem Bottom-Bereich
- Accordion-Panel für Questionnaires ähnlich wie bei SecurityDevices
4.2 Questionnaire-Management UI
- Komponenten hinzufügen:
- DataTable für angehängte Questionnaires
- Buttons: "Fragebogen hinzufügen", "Bearbeiten", "Entfernen"
- Dialog für Questionnaire-Auswahl
- Dialog für Questionnaire-Bearbeitung
4.3 Dialog-Implementierung
- Neue Dialogs in create.xhtml:
dlgAddQuestionnaire: Auswahl verfügbarer QuestionnairesdlgEditQuestionnaire: Bearbeitung der Questions- Ähnlich zu bestehenden Device/DangerPoint Dialogs
5. Integration und Workflow
5.1 Ticket-Erstellung anpassen
- Aufgabe: Bei Ticket-Erstellung Questionnaires von SecurityArea automatisch kopieren
- Dateien:
- Ticket-Erstellungs-Controller
- TicketSecurityArea-Business-Logic
5.2 Copy/Clone Funktionalität
- Aufgabe: Beim Kopieren von SecurityAreas auch Questionnaires mitkopieren
- Betroffene Methoden:
cloneToSelectedMachine()in SecurityAreaController
6. UI/UX Details
6.1 SecurityArea-Karte erweitern
<!-- Nach DangerPoints Accordion hinzufügen -->
<div class="p-col-12">
<p:accordionPanel value="#{securityAreaController.selected.questionnaires}" var="questionnaire" activeIndex="#">
<p:tab title="Fragebogen: #{questionnaire.name}">
<!-- Questionnaire Details und Questions anzeigen -->
</p:tab>
</p:accordionPanel>
</div>
6.2 Questionnaire-Management Buttons
- In das "Mehr"-Menü (dynaButton) integrieren
- Neue Menüpunkte: "Fragebogen hinzufügen", "Fragebögen verwalten"
7. Testing und Validierung
7.1 Unit Tests
- Neue Test-Klassen:
SecurityAreaQuestionnaireTestSecurityAreaQuestionTestSecurityAreaManagerTest(erweitern)
7.2 Integration Tests
- Questionnaire-Zuordnung zu SecurityArea
- Kopieren von Questionnaires bei Ticket-Erstellung
- UI-Workflow Tests
7.3 Datenbank-Migration
- Aufgabe: SQL-Scripts für neue Tabellen erstellen
- Tables:
SECURITY_AREA_QUESTIONNAIRE,SECURITY_AREA_QUESTION - Foreign Key Constraints definieren
Reihenfolge der Implementierung
- Phase 1: Datenbankmodell (SecurityAreaQuestionnaire, SecurityAreaQuestion)
- Phase 2: Business Logic (Manager-Erweiterungen)
- Phase 3: Controller Layer (SecurityAreaController erweitern)
- Phase 4: UI Implementation (create.xhtml erweitern)
- Phase 5: Integration (Ticket-Erstellung anpassen)
- Phase 6: Testing und Finalisierung
Wichtige Überlegungen
Datenmodell-Konsistenz
- Questionnaires in SecurityArea müssen kompatibel zu TicketSecurityArea sein
- Beim Ticket-Erstellen: SecurityArea-Questionnaires → TicketSecurityArea kopieren
UI-Konsistenz
- Gleiche Bedienung wie bei SecurityDevices/DangerPoints
- Accordion-Panel für übersichtliche Darstellung
- Standard CRUD-Operationen (Create, Read, Update, Delete)
Performance
- Lazy Loading für Questionnaires implementieren
- Effizienter Datentransfer bei Questionnaire-Kopierung
Dependencies
Neue Dateien zu erstellen:
model/securityarea/SecurityAreaQuestionnaire.javamodel/securityarea/SecurityAreaQuestion.java- Controller-Erweiterungen
- UI-Erweiterungen in create.xhtml
Bestehende Dateien zu modifizieren:
model/securityarea/SecurityArea.javacontroller/securityarea/SecurityAreaController.javabusiness/securityarea/SecurityAreaManager.javaresources/user/sec/create.xhtml
Zeitschätzung
- Phase 1-2: 2-3 Tage (Backend)
- Phase 3-4: 3-4 Tage (Controller + UI)
- Phase 5-6: 2-3 Tage (Integration + Testing)
- Gesamt: ~8-10 Arbeitstage
Risiken und Mitigationen
Datenbankmigrationen
- Risiko: Bestehende Daten könnten beeinträchtigt werden
- Mitigation: Backup vor Migration, schrittweise Einführung
UI-Komplexität
- Risiko: UI wird zu überladen
- Mitigation: Accordion-Panel verwenden, ähnlich zu bestehenden Komponenten
Performance
- Risiko: Laden von vielen Questionnaires könnte langsam werden
- Mitigation: Lazy Loading, Paging implementieren
Nächste Schritte: Mit Phase 1 (Datenbankmodell) beginnen und die SecurityAreaQuestionnaire Entität implementieren.