From 8e141af91445e984740d97f0412e0c0cb6739aa5 Mon Sep 17 00:00:00 2001 From: Mirkan Guengoer <3029276@stud.th-mannheim.de> Date: Wed, 24 Jun 2026 12:00:42 +0200 Subject: [PATCH] Ergaenze allgemeine Agentenrichtlinien --- AGENTS.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..739b9e2 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,95 @@ +# 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.