SE1_Team_1/AGENTS.md

96 lines
3.8 KiB
Markdown

# 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.