228 lines
7.1 KiB
Markdown
228 lines
7.1 KiB
Markdown
# AI-Briefing: Vollständige Projektdokumentation für **4Gewinnt**
|
|
|
|
> Zweck dieses Dokuments: Du kannst diese Datei direkt an ein anderes KI-System geben, damit daraus alle geforderten Artefakte erstellt werden:
|
|
>
|
|
> - **Pflichtenheft**
|
|
> - **Meilensteinplanung**
|
|
> - **Klassendiagramm**
|
|
> - **Ablaufplan / Flowchart**
|
|
> - **Benutzerdokumentation / Anleitung**
|
|
|
|
---
|
|
|
|
## 1) Kurzbeschreibung des Projekts
|
|
|
|
**4Gewinnt** ist ein Multiplayer-Spielprojekt mit zwei Hauptteilen:
|
|
|
|
1. **Backend (API)**: ASP.NET Core Web API mit SignalR für Echtzeitkommunikation.
|
|
2. **Frontend (GUI)**: Vue 3 + TypeScript + Vite für die Benutzeroberfläche.
|
|
|
|
Das System ermöglicht die Erstellung und den Beitritt zu Spielrunden über einen **6-stelligen Spielcode**. Züge werden in Echtzeit verarbeitet und an alle Spieler verteilt.
|
|
|
|
---
|
|
|
|
## 2) Technologiestack
|
|
|
|
### Backend
|
|
- .NET 9
|
|
- ASP.NET Core Web API
|
|
- SignalR
|
|
- Swashbuckle/OpenAPI (Swagger in Development)
|
|
|
|
### Frontend
|
|
- Vue 3
|
|
- TypeScript
|
|
- Vite
|
|
- SignalR JavaScript Client
|
|
- Vuetify
|
|
|
|
---
|
|
|
|
## 3) Verzeichnisstruktur (relevant für Doku und Diagramme)
|
|
|
|
```text
|
|
4Gewinnt/
|
|
├── API/
|
|
│ ├── Controllers/
|
|
│ │ ├── GameHubSocket.cs
|
|
│ │ └── StatusController.cs
|
|
│ ├── Models/
|
|
│ │ ├── DataClasses/
|
|
│ │ └── Game/
|
|
│ ├── Repository/GameRepo/
|
|
│ │ ├── IGameRepository.cs
|
|
│ │ └── GameRepository.cs
|
|
│ ├── Services/GameManager/
|
|
│ │ ├── IGameManager.cs
|
|
│ │ └── GameManager.cs
|
|
│ └── Program.cs
|
|
├── GUI/
|
|
│ ├── src/components/
|
|
│ ├── src/routes/
|
|
│ ├── src/scripts/logic/
|
|
│ ├── src/scripts/signalR/
|
|
│ └── src/scripts/interfaces/
|
|
└── 4Gewinnt.sln
|
|
```
|
|
|
|
---
|
|
|
|
## 4) Systemverhalten (fachlich)
|
|
|
|
### Kern-Use-Cases
|
|
1. Spieler erstellt ein Spiel mit Name + Spielfeldgröße.
|
|
2. Backend erzeugt neue Spielinstanz + 6-stelligen Spielcode.
|
|
3. Zweiter Spieler tritt mit Spielcode bei.
|
|
4. Bei zwei Spielern startet das Spiel automatisch.
|
|
5. Spieler setzen abwechselnd Steine in Spalten.
|
|
6. Backend prüft Gewinnbedingung oder Unentschieden.
|
|
7. Bei Spielende wird Ergebnis an beide Clients gesendet.
|
|
8. Bei Disconnect eines Spielers wird das Spiel beendet.
|
|
|
|
### Spielzustände
|
|
- `Lobby`
|
|
- `Running`
|
|
- `Ended`
|
|
|
|
---
|
|
|
|
## 5) Backend-Architektur (für Klassendiagramm & Ablaufdiagramm)
|
|
|
|
### Schichten
|
|
- **Controller/Hub-Schicht**: Eingangspunkte via REST (`StatusController`) und SignalR (`GameHubSocket`).
|
|
- **Service-Schicht**: `GameManager` orchestriert Spielablauf und Regeln.
|
|
- **Repository-Schicht**: `GameRepository` hält Spiele im Speicher.
|
|
- **Domänenmodell**: `Game`, `GameField`, `Player`, DTOs, Value Objects.
|
|
|
|
### Wichtige Domänenobjekte
|
|
- `Game`: Id, GameCode, Players, CurrentTurn, State, Field
|
|
- `GameField`: Spielfeldmatrix, Drop-Operation, Gewinnprüfung
|
|
- `Player`: Name, ConnectionId, PlayerTag
|
|
- `GameInformationDto`: serialisierte Spielinformationen für Clients
|
|
- `SixDigitInt`: Repräsentation/Validierung eines 6-stelligen Codes
|
|
|
|
### SignalR-Hub Methoden
|
|
- `CreateGame(playerName, gFs)`
|
|
- `JoinGame(playerName, gameCode)`
|
|
- `RequestGameInformation(gameId)`
|
|
- `Drop(gameId, column)`
|
|
- `OnDisconnectedAsync(exception)`
|
|
|
|
### Wichtige SignalR-Events an Clients
|
|
- Fehler: `Error`
|
|
- Erfolg: `GameCreated`, `GameJoined`, `GameStarted`
|
|
- Spielupdates: `GameInformation`, `FieldUpdated`
|
|
- Spielende: `GameEnded`
|
|
- Aufräumen: `GameDestroyed`
|
|
|
|
---
|
|
|
|
## 6) Frontend-Architektur (für Benutzerdoku)
|
|
|
|
### Seiten / Routen
|
|
- Startseite (`Home.vue`)
|
|
- Online-Modus (`OnlineMode.vue`)
|
|
- Lokaler Modus (`LocalMode.vue`)
|
|
|
|
### Relevante Komponenten
|
|
- `CreateOrJoinMenu.vue`
|
|
- `GameCreationMenu.vue`
|
|
- `GameJoinMenu.vue`
|
|
- `Field.vue` (Spielbrett)
|
|
- `InfoField.vue` (Statusanzeige)
|
|
- `GameEndedMenu.vue`
|
|
|
|
### Logikmodule
|
|
- Online-Logik: `OnlineGame.ts`
|
|
- Lokal-Logik: `LocalGame.ts`
|
|
- SignalR-Verbindung: `GameConnection.ts`
|
|
|
|
---
|
|
|
|
## 7) Build-, Run- und Übergabeanleitung (technisch)
|
|
|
|
## Voraussetzungen
|
|
- .NET SDK 9
|
|
- Node.js 20+ (oder >=22.12)
|
|
- npm
|
|
|
|
### Lokale Entwicklung
|
|
|
|
#### Backend starten
|
|
```bash
|
|
cd API
|
|
dotnet run
|
|
```
|
|
|
|
#### Frontend starten
|
|
```bash
|
|
cd GUI
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### Produktionsnahe Builds
|
|
|
|
#### Frontend Build
|
|
```bash
|
|
cd GUI
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
#### Backend Build
|
|
```bash
|
|
cd API
|
|
dotnet build
|
|
```
|
|
|
|
### Optional: Gesamtlösung bauen
|
|
```bash
|
|
dotnet build 4Gewinnt.sln
|
|
```
|
|
|
|
---
|
|
|
|
## 8) Konkrete Arbeitsaufträge an die AI (Copy/Paste-Prompts)
|
|
|
|
Nutze die folgenden Prompts 1:1 oder angepasst.
|
|
|
|
### A) Prompt: Pflichtenheft
|
|
|
|
> Erstelle ein vollständiges Pflichtenheft auf Deutsch für das Softwareprojekt „4Gewinnt“ (Web-App mit ASP.NET Core + SignalR + Vue 3). Struktur: Zielbestimmung, Produkteinsatz, funktionale Anforderungen (mit Muss/Soll/Kann), nicht-funktionale Anforderungen, Systemgrenzen, Datenmodell, Akzeptanzkriterien, Risiken, Annahmen, Glossar. Berücksichtige Multiplayer über Spielcode, Echtzeit-Züge, Spielzustände Lobby/Running/Ended, Fehlerfälle (ungültiger Zug, volles Spiel, Disconnect), sowie Bedienbarkeit für Endnutzer.
|
|
|
|
### B) Prompt: Meilensteinplanung
|
|
|
|
> Erstelle eine realistische Meilensteinplanung (Deutsch) für ein studentisches/prototypisches 4Gewinnt-Projekt mit Backend, Frontend und Dokumentation. Liefere: Zeitachse (Wochen), Milestones, Deliverables pro Meilenstein, Abhängigkeiten, Risiken, Puffer, Definition of Done pro Meilenstein und eine Tabelle für Projekttracking.
|
|
|
|
### C) Prompt: Klassendiagramm
|
|
|
|
> Erstelle ein UML-Klassendiagramm in PlantUML für die Kernklassen des Projekts „4Gewinnt“ basierend auf folgender Architektur: GameHubSocket (SignalR Hub), GameManager (Service), IGameRepository/GameRepository, Game, GameField, Player, GameInformationDto, SixDigitInt. Zeige Attribute, zentrale Methoden und Relationen (Assoziation, Abhängigkeit, Interface-Implementierung). Ergänze kurze Erläuterungen.
|
|
|
|
### D) Prompt: Ablaufplan / Flowchart
|
|
|
|
> Erstelle ein detailliertes Flowchart (Mermaid) für den Online-Spielablauf von „4Gewinnt“: Spiel erstellen → Spiel beitreten → Spielstart → Zug senden → Validierung → Feldupdate → Gewinn-/Unentschiedenprüfung → Spielende → optionales Rematch/Neues Spiel. Berücksichtige Fehlerpfade (Spiel nicht gefunden, Spiel voll, ungültiger Zug, Spieler disconnected).
|
|
|
|
### E) Prompt: Benutzerdokumentation
|
|
|
|
> Erstelle eine benutzerfreundliche Anleitung auf Deutsch für Endanwender von „4Gewinnt“ (Weboberfläche): Spiel erstellen, Spiel beitreten, Spielfeld bedienen, Bedeutung von Farben/Symbolen, Fehlermeldungen, Spielende, Neustart. Füge zusätzlich einen Troubleshooting-Abschnitt und FAQ hinzu.
|
|
|
|
---
|
|
|
|
## 9) Qualitätskriterien für die von AI erzeugten Dokumente
|
|
|
|
Die Ergebnisse sollten:
|
|
|
|
- vollständig strukturiert und in sauberem Fachdeutsch sein,
|
|
- klare Überschriftenebenen besitzen,
|
|
- Tabellen dort nutzen, wo Vergleich/Planung sinnvoll ist,
|
|
- konkrete, überprüfbare Kriterien enthalten (insb. Akzeptanzkriterien),
|
|
- direkt für Abgabe/Projektmappe weiterverwendbar sein.
|
|
|
|
---
|
|
|
|
## 10) Optional: Zusatzauftrag für AI
|
|
|
|
> Erzeuge aus allen Ergebnissen ein einheitliches Doku-Paket mit konsistenten Begriffen (z. B. Spiel, Runde, Match, Lobby), einheitlichem Glossar und identischen Rollenbezeichnungen.
|
|
|