Neuste Version
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
NVJ Turnierplaner — Projektbeschreibung und Befunde
|
||||
|
||||
Kurzbeschreibung
|
||||
- Zweck: Webapp zur Verwaltung von Volleyball-Turnieren (NVJ). Teams anlegen, Runden generieren, Ergebnisse eintragen und Scoreboard anschauen.
|
||||
- Tech-Stack: Vite, React 18, TypeScript, Tailwind CSS, shadcn/ui, Vitest.
|
||||
|
||||
Architekturüberblick
|
||||
- Globaler State: `TournamentContext` ([src/context/TournamentContext.tsx]) verwaltet `teams`, `rounds`, `fieldCount` und stellt Mutationsfunktionen bereit (`startNewRound`, `updateMatchResult`, `completeCurrentRound`, u.a.).
|
||||
- Match-Generierung: `generateMatches` und `createNextRoundMatches` in [src/utils/tournamentUtils.ts] implementieren Start- und Rotationslogik (Circle-Rotation, Wartelisten, Felderaufteilung zwischen Ligen).
|
||||
- Typen: Zentrale Typen in [src/types/tournament.ts] (`Team`, `Match`, `Round`, `TeamScore`).
|
||||
- UI: Hauptansicht `TournamentView` ([src/components/TournamentView.tsx]) zeigt aktuelles Spielgeschehen; `MatchScoreInput` ([src/components/MatchScoreInput.tsx]) ermöglicht Ergebnis-Eingabe.
|
||||
|
||||
Wichtige Erkenntnisse (kurzer Testlauf)
|
||||
- Dev-Server: Vite Dev-Server läuft lokal unter http://localhost:5173/ (getestet).
|
||||
- Tests: `npm run test` (Vitest) ausgeführt — alle Tests bestanden (1 Test, 1 File).
|
||||
- IDs werden via `crypto.randomUUID()` erzeugt — keine DB-Anbindung, alles im Memory State.
|
||||
- Punkteberechnung: Differenzbasiert mit Bonus für Gewinner (siehe `updateMatchResult` in `TournamentContext`).
|
||||
|
||||
Empfohlene nächste Schritte
|
||||
- UI-Test: Kurz manuell Runde generieren, Ergebnisse eintragen, und Scoreboard prüfen.
|
||||
- Feature-Ideen: Persistenz (LocalStorage/IndexedDB), Export/Import von Turnierständen, Druckansicht des Spielplans.
|
||||
|
||||
Rotationslogik beim Rundenwechsel:
|
||||
- Case 1: Keine wartenden Teams -> die erste Mannschaft bleibt als Anker fix, alle anderen rotieren um 1 Position.
|
||||
- Case 2: 1 wartendes Team -> das wartende Team rückt nach vorne, das letzte Spielteam geht auf Warteposition.
|
||||
- Case 3: Mehrere wartende Teams (2+) -> alle wartenden Teams rücken nach vorne, entsprechend viele bisher spielende Teams gehen auf Warteposition.
|
||||
|
||||
Hinweis: Die erste Runde wird separat in `generateMatches()` zufällig aufgebaut; diese 3 Cases beschreiben nur die Rotation für Folgerunden.
|
||||
|
||||
|
||||
Wie man lokal startet
|
||||
```bash
|
||||
npm install
|
||||
npm run dev
|
||||
# In neuem Terminal
|
||||
npm run test
|
||||
```
|
||||
|
||||
Datum des Tests: 2026-04-29
|
||||
|
||||
Testergebnis (Vitest): 1 Test bestanden
|
||||
|
||||
— Copilot (kurze Analyse)
|
||||
Reference in New Issue
Block a user