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:
Executable
+64
@@ -0,0 +1,64 @@
|
||||
# AI Instruktionen für Code-Generierung
|
||||
|
||||
Ziel: Ein konsistenter Kontext für zukünftige automatische Ergänzungen.
|
||||
|
||||
## Projekt-Kurzprofil
|
||||
- Typ: Java EE 8 (javax), WAR, JSF + PrimeFaces, Hibernate JPA.
|
||||
- Java Version: 11 (Compiler Plugin).
|
||||
- Schichten: Model (Entities), Business (Manager), Controller (JSF Beans), View (XHTML).
|
||||
|
||||
## Wichtige Basisklassen
|
||||
- `AbstractEntity`: Basisklasse aller Entities (enthält ID – Details nicht gezeigt, aber zentral).
|
||||
- `AbstractManager<T>`: Generisches CRUD mit `save`, `saveAll`, etc.
|
||||
- `AbstractController<E>`: UI State & Utilities.
|
||||
|
||||
## Konventionen (Kurz)
|
||||
- Neue Entities: extend `AbstractEntity`, Named Queries definieren.
|
||||
- Neue Manager: `@Stateless`, extends `AbstractManager<Entity>`, implementiert `getEntityManager()`.
|
||||
- Neue Controller: `@Named`, Scope Annotation (`@ViewScoped` etc.), extends `AbstractController<Entity>`, implementiert `getManager()`.
|
||||
- Temporäre (nicht persistierte) Objekte: negative ID (Fake) bis finalem Speichern.
|
||||
|
||||
## CRUD Muster (Beispiel)
|
||||
```java
|
||||
@Stateless
|
||||
public class ExampleEntityManager extends AbstractManager<ExampleEntity> {
|
||||
@PersistenceContext(name = "pu_person") EntityManager em;
|
||||
public ExampleEntityManager(){ super(ExampleEntity.class); }
|
||||
@Override protected EntityManager getEntityManager(){ return em; }
|
||||
}
|
||||
```
|
||||
|
||||
## Typische Aufgaben für Generierung
|
||||
1. Neue Domain + Entity + Manager + Controller + XHTML.
|
||||
2. PDF-Ausgabe Erweiterung.
|
||||
3. Batch-Speichern mehrerer neuer Entities.
|
||||
4. Klon-Operationen: Copy-Konstruktor nutzen, Child-IDs auf `null` setzen, Referenzen neu knüpfen.
|
||||
5. Fragebogen-Workflow: add/remove (siehe `QUESTIONNAIRE_WORKFLOW.md`).
|
||||
|
||||
## Qualitätssicherung
|
||||
- Nach Code-Erzeugung: Prüfe Kompilierung (mvn -q test / package).
|
||||
- Sicherstellen: Keine direkten System.out Prints in Produktionscode.
|
||||
- Logging: `LOGGER.error(e)` bei Exceptions.
|
||||
|
||||
## Häufige Edge Cases
|
||||
- Null Checks vor Persist/Remove.
|
||||
- Negative ID Objekte dürfen nicht direkt gelöscht (erst persistieren oder aus Collection entfernen).
|
||||
- Lazy Collections müssen initialisiert vor Iteration (via `refresh` oder `Hibernate.initialize`).
|
||||
|
||||
## Verbesserungsvorschläge (safe additions)
|
||||
- Service Layer Einführen (wenn Logik Manager übersteigt).
|
||||
- Bean Validation (@NotNull, @Size) auf Entities.
|
||||
- Einheitliche Exception Klasse.
|
||||
|
||||
## Generierungs-Präferenzen
|
||||
- Bevorzugt vorhandene Muster exakt replizieren.
|
||||
- Keine neuen Frameworks ohne Bedarf.
|
||||
- Code kommentieren nur bei komplexer Logik.
|
||||
|
||||
## Anti-Pattern vermeiden
|
||||
- Business Logik direkt im Controller.
|
||||
- Duplizierte Query Strings ohne Named Query.
|
||||
|
||||
---
|
||||
Letzte Aktualisierung: 2025-10-20
|
||||
|
||||
Reference in New Issue
Block a user