This commit is contained in:
martin 2026-02-05 16:50:47 +01:00
parent 20d085a147
commit 3ffeec1344

View File

@ -0,0 +1,170 @@
---
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
```