chore(java): consolidate mss-failsafe to single canonical copy
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.
This commit is contained in:
+199
@@ -0,0 +1,199 @@
|
||||
# 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
|
||||
- `@OneToMany` Mapping für `SecurityAreaQuestionnaire` implementieren
|
||||
- Ä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 `TicketSecurityAreaQuestionnaire` erstellen
|
||||
- `@ManyToOne` Beziehung zu SecurityArea
|
||||
- `@OneToMany` Beziehung zu SecurityAreaQuestion
|
||||
- Konstruktor für Kopieren von Questionnaire → SecurityAreaQuestionnaire
|
||||
|
||||
#### 1.3 Neue Entität: SecurityAreaQuestion
|
||||
- **Datei**: `src/main/java/model/securityarea/SecurityAreaQuestion.java` (neu erstellen)
|
||||
- **Aufgabe**:
|
||||
- Entität ähnlich zu `SecurityAreaQuestion` aus tickets package erstellen
|
||||
- `@ManyToOne` Beziehung zu SecurityAreaQuestionnaire
|
||||
- Alle notwendigen Felder für Fragen implementieren
|
||||
|
||||
### 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()` und `editSelected()` 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 Questionnaires
|
||||
- `dlgEditQuestionnaire`: 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
|
||||
```html
|
||||
<!-- 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**:
|
||||
- `SecurityAreaQuestionnaireTest`
|
||||
- `SecurityAreaQuestionTest`
|
||||
- `SecurityAreaManagerTest` (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
|
||||
|
||||
1. **Phase 1**: Datenbankmodell (SecurityAreaQuestionnaire, SecurityAreaQuestion)
|
||||
2. **Phase 2**: Business Logic (Manager-Erweiterungen)
|
||||
3. **Phase 3**: Controller Layer (SecurityAreaController erweitern)
|
||||
4. **Phase 4**: UI Implementation (create.xhtml erweitern)
|
||||
5. **Phase 5**: Integration (Ticket-Erstellung anpassen)
|
||||
6. **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.java`
|
||||
- `model/securityarea/SecurityAreaQuestion.java`
|
||||
- Controller-Erweiterungen
|
||||
- UI-Erweiterungen in create.xhtml
|
||||
|
||||
### Bestehende Dateien zu modifizieren:
|
||||
- `model/securityarea/SecurityArea.java`
|
||||
- `controller/securityarea/SecurityAreaController.java`
|
||||
- `business/securityarea/SecurityAreaManager.java`
|
||||
- `resources/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.
|
||||
Reference in New Issue
Block a user