Update .gitignore and remove outdated AGENTS.md and CLAUDE.md files; enhance presentation content for clarity

main
Lucas Strubel 2026-06-29 00:47:17 +02:00
parent ed75d3c8e4
commit dbfdb22e19
5 changed files with 20 additions and 145 deletions

19
.gitignore vendored
View File

@ -1,11 +1,30 @@
# Maven-Build # Maven-Build
target/ target/
dependency-reduced-pom.xml dependency-reduced-pom.xml
.mvn/wrapper/maven-wrapper.jar
# Java
*.class
*.jar
*.war
# Lokale Laufzeitdaten der Anwendung (IF-01, Q-06) # Lokale Laufzeitdaten der Anwendung (IF-01, Q-06)
daten/ daten/
# Logs
*.log
# Generierte HTML-Dateien (aus Markdown)
dokumentation/**/*.html
# IDE # IDE
.idea/ .idea/
.vscode/ .vscode/
*.iml *.iml
.classpath
.project
.settings/
# OS
Thumbs.db
.DS_Store

View File

@ -1,95 +0,0 @@
# AGENTS.md
Diese Datei beschreibt die Arbeitsregeln fuer Codex und andere Coding-Agenten im gesamten
Repository. Vor einer Aenderung ist zu klaeren, welches Modul und welche Projektgruppe
fachlich verantwortlich sind.
## Projekt
Desktop-Fakturierungsanwendung fuer das Hochschulprojekt SE1, Team 1.
- Java 21, Maven, JUnit 5
- Swing-Oberflaeche mit FlatLaf
- lokale JSON-Persistenz unter `daten/` (nicht versioniert)
- deutsche Bezeichner, Kommentare, UI-Texte und Spezifikationen
## Module und Verantwortungsbereiche
| Bereich | Gruppe | Verantwortung |
|---------|--------|---------------|
| `src/main/java/de/team1/faktura/dokumente/` | A | Dokumentenzyklus, Belegnummern und PDF-Export |
| `src/main/java/de/team1/faktura/produkte/` | B | Produktverwaltung, Nummernvergabe und Loeschsperre |
| `src/main/java/de/team1/faktura/kunden/` | C | Kundenverwaltung, Nummernvergabe und Loeschsperre |
| `src/main/java/de/team1/faktura/gui/` | D | Swing-Oberflaeche, Panels, Dialoge und Wizard |
| `src/main/java/de/team1/faktura/gemeinsam/` | alle | EreignisBus, Persistenzhilfe, CSV und Exceptions |
Tests liegen spiegelbildlich unter `src/test/java/de/team1/faktura/`. Pflichtenhefte und
Diagramme der Gruppen liegen unter `dokumentation/anforderungen/` beziehungsweise
`dokumentation/diagramme/`.
Agenten sollen Modulgrenzen respektieren und nur die fuer die Aufgabe erforderlichen
Bereiche aendern. Gruppenuebergreifende Aenderungen sind erlaubt, wenn sie fuer eine
Schnittstelle oder Integration notwendig sind; Auswirkungen auf alle betroffenen Module
muessen dann mit Tests abgesichert werden. Lastenheft, Modultestplan, Project Charter und
Praesentation nur bearbeiten, wenn sie ausdruecklich Teil der Aufgabe sind.
## Allgemeine Entwicklungsregeln
- Bestehende Klassen, Schnittstellen, Repositories und Muster bevorzugen.
- Abhaengigkeiten werden in `Main.java` manuell verdrahtet; kein DI-Framework ergaenzen.
- Der `EreignisBus` ist der vorhandene Mechanismus fuer Aktualisierungen nach
Datenveraenderungen.
- Persistenz erfolgt ueber die vorhandenen Repository-Schnittstellen und JSON-
Implementierungen.
- Keine aufgabenfremden Refactorings, Umbenennungen oder Formatierungsaenderungen
mitziehen.
- Neue Logik mit fokussierten JUnit-Tests absichern.
## Build und Tests
Der Maven-Wrapper ist nicht ausfuehrbar eingecheckt. Deshalb ueber die Shell starten:
```bash
sh mvnw compile
sh mvnw test
sh mvnw test -Dtest=NameDerTestklasse
sh mvnw test -Dtest=NameDerTestklasse#nameDerTestmethode
sh mvnw package
java -jar target/fakturierung-1.0.0.jar
```
Zunaechst die passende modulbezogene Testklasse ausfuehren, vor Commit oder Push den
vollstaendigen Testlauf starten. Neue Logik mit Tests auf der niedrigsten sinnvollen Ebene
absichern.
## Dokumentation und Diagramme
Markdown und PDF werden gemeinsam versioniert. Pflichtenhefte aus dem
Dokumentationsordner bauen, damit die relativen Diagrammpfade stimmen. Beispiel:
```bash
cd dokumentation/anforderungen
pandoc EINGABE.md -o AUSGABE.pdf --pdf-engine=tectonic
```
PlantUML aus dem Repository-Root rendern:
```bash
java -jar tools/plantuml.jar -tpng \
dokumentation/diagramme/DATEI.puml
```
Nach Dokumentaenderungen die erzeugte PDF visuell pruefen. Diagramme duerfen nicht
abgeschnitten oder unlesbar klein sein. Quellen (`.md`, `.puml`) und erzeugte Artefakte
(`.pdf`, `.png`) konsistent aktualisieren.
## Git und Zusammenarbeit
- Vor Aenderungen `git status` und den aktuellen Remote-Stand pruefen.
- Vorhandene fremde oder lokale Aenderungen niemals verwerfen oder ueberschreiben.
- Nur aufgabenbezogene Dateien stagen; insbesondere `.DS_Store`, `target/` und `daten/`
nicht committen.
- Vor Commit den Diff und `git diff --check` pruefen.
- Commit und Push nur nach ausdruecklicher Freigabe des Nutzers.
- Vor einem Push erneut synchronisieren und sicherstellen, dass alle Tests erfolgreich
sind.

View File

@ -1,50 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Projekt
Desktop-Fakturierungsanwendung (Einzelplatz) für ein Hochschulprojekt (SE1, Team 1). Java 21, Swing-GUI mit FlatLaf, Maven-Build. Alle Texte (Klassen, Methoden, Variablen, Kommentare, Spezifikationen) sind auf **Deutsch**.
## Build & Run
```bash
./mvnw compile # Kompilieren
./mvnw test # Alle Tests (JUnit 5)
./mvnw test -Dtest=KundenVerwaltungTest # Einzelne Testklasse
./mvnw test -Dtest=KundenVerwaltungTest#testMethode # Einzelne Testmethode
./mvnw package # Fat-JAR bauen (maven-shade-plugin)
java -jar target/fakturierung-1.0.0.jar # Anwendung starten
```
## PDF-Spezifikationen bauen
Die `*.md`-Dateien unter `dokumentation/` (z. B. `dokumentation/anforderungen/Lastenheft.md`, `Pflichtenheft_Gruppe{A-D}.md`, `dokumentation/tests/Modultestplan.md`) werden mit pandoc + XeLaTeX zu PDF konvertiert — es gibt kein Build-Skript, der Aufruf erfolgt manuell.
## Diagramme
PlantUML-Quelldateien liegen in `dokumentation/diagramme/`. Rendering via `tools/plantuml.jar`.
## Architektur
Vier fachliche Module, jeweils einer Projektgruppe zugeordnet:
| Paket | Gruppe | Verantwortung |
|-------|--------|---------------|
| `dokumente` | A | Dokumentenzyklus: Angebot → Auftragsbestätigung → Lieferschein → Rechnung, Belegnummern, PDF-Export |
| `produkte` | B | Produktverwaltung (CRUD, Nummernvergabe, Löschsperre) |
| `kunden` | C | Kundenverwaltung (CRUD, Nummernvergabe, Löschsperre) |
| `gui` | D | Swing-Oberfläche (HauptFenster, Panels, Dialoge, Wizard) |
| `gemeinsam` | — | Querschnitt: EreignisBus, JsonPersistenz, CSV-Hilfe, Exceptions |
### Wichtige Muster
- **EreignisBus** (Observer): Services melden Datenänderungen (`DatenBereich.KUNDEN/PRODUKTE/DOKUMENTE`), GUI-Panels abonnieren und aktualisieren sich. Kein manueller Refresh nötig.
- **Repository-Interfaces** (`KundenRepository`, `ProduktRepository`, `DokumentRepository`) mit JSON-Implementierungen. Persistenz erfolgt atomar via `JsonPersistenz.schreibeAtomar()`.
- **NummernGenerator-Interfaces** (`KundennummernGenerator`, `ProduktnummernGenerator`, `BelegnummernGenerator`) mit `Einfacher*`-Implementierungen, die den nächsten Wert aus dem Repository-Bestand ableiten.
- **ReferenzPrüfung**: `DokumentReferenzPruefung` verhindert Löschung von Kunden/Produkten, die in Dokumenten referenziert werden.
- **Wiring** in `Main.java`: Manuelle Dependency Injection — kein Framework.
### Persistenz
Alle Daten liegen als JSON-Dateien im Verzeichnis `daten/` (kunden.json, produkte.json, dokumente.json). Dieses Verzeichnis ist in `.gitignore`.

View File

@ -203,6 +203,7 @@ Kundenstammdaten anlegen, ändern, suchen, löschen *(BA-0104)* · eindeutige
### Live-Demo ### Live-Demo
Kunde anlegen → automatische Nummer · suchen / sortieren · ändern · löschen Kunde anlegen → automatische Nummer · suchen / sortieren · ändern · löschen
--- ---
## Gruppe B — Produktverwaltung ## Gruppe B — Produktverwaltung