171 lines
4.5 KiB
Markdown
171 lines
4.5 KiB
Markdown
---
|
|
name: lp-todo
|
|
description: Erstellt Todo-Dateien für league-planner im todos/-Ordner. Kennt Projektstruktur, Apps und Code-Patterns. Für Feature-Requests, Bugfixes und Verbesserungen.
|
|
argument-hint: <beschreibung des todos>
|
|
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
---
|
|
|
|
# League-Planner Todo Generator
|
|
|
|
Erstellt strukturierte Todo-Dateien im `todos/`-Ordner des league-planner Projekts.
|
|
|
|
## Projektkontext
|
|
|
|
### Tech Stack
|
|
- **Backend:** Django 5.2, Django REST Framework
|
|
- **Database:** PostgreSQL (prod) / SQLite (dev)
|
|
- **Task Queue:** Celery
|
|
- **Solver:** PuLP / Xpress
|
|
- **Python:** 3.13+
|
|
|
|
### Django Apps
|
|
- **scheduler/** - Kernlogik: League, Season, Team, Scenario, Match, Day, Game
|
|
- **draws/** - Turnierauslosungen: Draw, SuperGroup, Group, Clash
|
|
- **qualifiers/** - Qualifikationsturniere: QPath, QTier, QStage, QNode, QMatch
|
|
- **api/** - REST API unter `/api/`
|
|
- **common/** - Shared Utilities, User Model, Middleware
|
|
- **taskmanager/** - Celery Task Tracking
|
|
|
|
### Wichtige Dateien pro App
|
|
```
|
|
scheduler/
|
|
├── models.py - Hauptmodelle
|
|
├── views.py - Class-based Views
|
|
├── views_crud.py - CRUD Views
|
|
├── views_func.py - Funktionale Helfer
|
|
├── helpers.py - Optimierungslogik
|
|
├── widgets.py - Widget-Logik für Templates
|
|
├── choices.py - Choice-Tuples
|
|
└── templates/
|
|
├── _planning/ - Planungsansichten (reports.html, schedule.html)
|
|
└── widgets/ - Widget-Templates (w_*.html)
|
|
```
|
|
|
|
### Key Model Hierarchie
|
|
```
|
|
League → Season → Scenario → Games
|
|
↘ Teams
|
|
↘ Days (Spieltage)
|
|
```
|
|
|
|
## Workflow
|
|
|
|
### Schritt 1: Kontext erfassen
|
|
|
|
1. Lies die Benutzeranfrage
|
|
2. Identifiziere den betroffenen Bereich (App, View, Widget)
|
|
3. Falls unklar, suche mit Glob/Grep nach relevanten Dateien
|
|
|
|
### Schritt 2: Todo erstellen
|
|
|
|
Erstelle eine Datei in `todos/` mit diesem Format:
|
|
|
|
```markdown
|
|
# [Kurzer, prägnanter Titel]
|
|
|
|
**Status:** Offen
|
|
**Priorität:** Hoch | Mittel | Niedrig
|
|
**Bereich:** [app-name]
|
|
|
|
## Beschreibung
|
|
|
|
[Was soll gemacht werden - klar und präzise]
|
|
|
|
## Anforderungen
|
|
|
|
1. [Konkrete Anforderung]
|
|
2. [Konkrete Anforderung]
|
|
|
|
## Betroffene Dateien
|
|
|
|
- `pfad/datei.py` - [Was ändern]
|
|
- `pfad/template.html` - [Was ändern]
|
|
|
|
## Technische Hinweise
|
|
|
|
[Relevante Patterns, wiederverwendbare Funktionen, etc.]
|
|
|
|
## Akzeptanzkriterien
|
|
|
|
- [ ] Kriterium 1
|
|
- [ ] Kriterium 2
|
|
```
|
|
|
|
### Schritt 3: Dateiname wählen
|
|
|
|
Format: `kebab-case-beschreibung.md`
|
|
|
|
Beispiele:
|
|
- `weekday-distribution-multiselect.md`
|
|
- `schedule-rounds-double-home-away.md`
|
|
- `api-team-statistics-endpoint.md`
|
|
|
|
## Häufige Bereiche
|
|
|
|
### Reports & Widgets
|
|
- Template: `scheduler/templates/_planning/reports.html`
|
|
- Widgets: `scheduler/templates/widgets/w_*.html`
|
|
- Backend: `scheduler/widgets.py`
|
|
- Verfügbare Libraries: Bootstrap-Select, DataTables, jQuery
|
|
|
|
### Schedule View
|
|
- Template: `scheduler/templates/_planning/schedule.html`
|
|
- Tabs: Rounds, Matrix, Timeline
|
|
- Backend: `scheduler/views.py`
|
|
|
|
### API Endpoints
|
|
- Location: `api/views.py`
|
|
- Pattern: `@api_view` Decorator (function-based)
|
|
- Docs: drf-spectacular
|
|
|
|
### Solver/Optimization
|
|
- Helpers: `scheduler/helpers.py`
|
|
- Celery Tasks: `taskmanager/`
|
|
- Choices: `scheduler/choices.py`
|
|
|
|
## Best Practices
|
|
|
|
1. **Spezifisch sein** - "Füge Spalte X zur Tabelle Y hinzu" statt "Verbessere Tabelle"
|
|
2. **Dateien angeben** - Immer konkrete Pfade nennen
|
|
3. **Patterns referenzieren** - Wenn ähnliche Lösungen existieren, darauf verweisen
|
|
4. **Keine Implementierung** - Nur beschreiben WAS, nicht WIE im Detail
|
|
|
|
## Beispiel
|
|
|
|
Input: "Zeige Doppelheimspiele im Schedule-View"
|
|
|
|
Output: `todos/schedule-double-home-away-column.md`
|
|
```markdown
|
|
# Schedule-View: Doppelheim/Doppelauswärts Spalte
|
|
|
|
**Status:** Offen
|
|
**Priorität:** Mittel
|
|
**Bereich:** scheduler
|
|
|
|
## Beschreibung
|
|
|
|
Im Rounds-Tab des Schedule-Views eine Extra-Spalte hinzufügen, die pro Team die Anzahl der Doppelheimspiele und Doppelauswärtsspiele anzeigt.
|
|
|
|
## Anforderungen
|
|
|
|
1. Neue Spalte "DH/DA" (Doppelheim/Doppelauswärts) im Rounds-Tab
|
|
2. Zeigt pro Team: Anzahl aufeinanderfolgender Heim- bzw. Auswärtsspiele
|
|
3. Berechnung aktualisiert sich mit Date-Range Filter
|
|
|
|
## Betroffene Dateien
|
|
|
|
- `scheduler/templates/_planning/schedule.html` - Rounds-Tab Tabelle erweitern
|
|
- `scheduler/views.py` - Berechnungslogik im Context
|
|
|
|
## Technische Hinweise
|
|
|
|
- Ähnliche Berechnung existiert bereits für Weekday-Distribution
|
|
- DataTables wird bereits verwendet
|
|
|
|
## Akzeptanzkriterien
|
|
|
|
- [ ] Spalte erscheint im Rounds-Tab
|
|
- [ ] Werte werden korrekt berechnet
|
|
- [ ] Filter-Aktualisierung funktioniert
|
|
```
|