2026-02-05 16:50:47 +01:00

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

  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:

# [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

# 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