4.5 KiB
4.5 KiB
| name | description | argument-hint | allowed-tools |
|---|---|---|---|
| lp-todo | Erstellt Todo-Dateien für league-planner im todos/-Ordner. Kennt Projektstruktur, Apps und Code-Patterns. Für Feature-Requests, Bugfixes und Verbesserungen. | <beschreibung des todos> | 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
- Lies die Benutzeranfrage
- Identifiziere den betroffenen Bereich (App, View, Widget)
- Falls unklar, suche mit Glob/Grep nach relevanten Dateien
Schritt 2: Todo erstellen
Erstelle eine Datei in todos/ mit diesem Format:
# [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.mdschedule-rounds-double-home-away.mdapi-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_viewDecorator (function-based) - Docs: drf-spectacular
Solver/Optimization
- Helpers:
scheduler/helpers.py - Celery Tasks:
taskmanager/ - Choices:
scheduler/choices.py
Best Practices
- Spezifisch sein - "Füge Spalte X zur Tabelle Y hinzu" statt "Verbessere Tabelle"
- Dateien angeben - Immer konkrete Pfade nennen
- Patterns referenzieren - Wenn ähnliche Lösungen existieren, darauf verweisen
- Keine Implementierung - Nur beschreiben WAS, nicht WIE im Detail
Beispiel
Input: "Zeige Doppelheimspiele im Schedule-View"
Output: todos/schedule-double-home-away-column.md
# 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