From 3ffeec1344e1af3d248ac049fcc2861529f4dfea Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Feb 2026 16:50:47 +0100 Subject: [PATCH] todo --- skills/league-planner-todo/SKILL.md | 170 ++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 skills/league-planner-todo/SKILL.md diff --git a/skills/league-planner-todo/SKILL.md b/skills/league-planner-todo/SKILL.md new file mode 100644 index 0000000..c4ef589 --- /dev/null +++ b/skills/league-planner-todo/SKILL.md @@ -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: +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 +```