todo
This commit is contained in:
parent
20d085a147
commit
3ffeec1344
170
skills/league-planner-todo/SKILL.md
Normal file
170
skills/league-planner-todo/SKILL.md
Normal 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
|
||||
```
|
||||
Loading…
x
Reference in New Issue
Block a user