--- 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: 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 ```