diff --git a/.gitignore b/.gitignore index 831ea9d..71434ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,30 @@ # Maven-Build target/ dependency-reduced-pom.xml +.mvn/wrapper/maven-wrapper.jar + +# Java +*.class +*.jar +*.war # Lokale Laufzeitdaten der Anwendung (IF-01, Q-06) daten/ +# Logs +*.log + +# Generierte HTML-Dateien (aus Markdown) +dokumentation/**/*.html + # IDE .idea/ .vscode/ *.iml +.classpath +.project +.settings/ + +# OS +Thumbs.db +.DS_Store diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index 739b9e2..0000000 --- a/AGENTS.md +++ /dev/null @@ -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. diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index c5a837a..0000000 --- a/CLAUDE.md +++ /dev/null @@ -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`. diff --git a/dokumentation/projekt/Praesentation.md b/dokumentation/projekt/Praesentation.md index da930e6..7791d5e 100644 --- a/dokumentation/projekt/Praesentation.md +++ b/dokumentation/projekt/Praesentation.md @@ -203,6 +203,7 @@ Kundenstammdaten anlegen, ändern, suchen, löschen *(BA-01–04)* · eindeutige ### Live-Demo Kunde anlegen → automatische Nummer · suchen / sortieren · ändern · löschen + --- ## Gruppe B — Produktverwaltung diff --git a/dokumentation/projekt/Praesentation.pdf b/dokumentation/projekt/Praesentation.pdf index 119a794..e3fae8d 100644 Binary files a/dokumentation/projekt/Praesentation.pdf and b/dokumentation/projekt/Praesentation.pdf differ