2.3 KiB
2.3 KiB
Destillierte Patterns & Best Practices
Dieses Dokument enthält erprobte Patterns, die sich aus vergangenen Sessions ergeben haben. Der Vault-Janitor extrahiert und aktualisiert diese automatisch aus /memory/log/.
Django / DRF Patterns
Query Optimization
- Immer
select_related()für FK/O2O,prefetch_related()für M2M/Reverse - Bei Listen-Endpoints:
only()für benötigte Felder - Bei Detail-Endpoints: Vollständiges Prefetching aller Relations
API Design (league-planner)
- Verwende
@api_viewmit Function-Based Views, NICHT ViewSets - Immer
@extend_schemafür OpenAPI-Dokumentation - Permission-Decorators:
@admin_only,@staff_only,@crud_decorator
Model Design
- Fat Models: Business-Logik ins Model, nicht in Views
- Custom Manager für häufige Queries
db_index=Truefür häufig gefilterte Boolean-Felder
MIP Optimization Patterns
Xpress-spezifisch
- Indicator Constraints bevorzugen über Big-M wenn möglich
p.controls.miprelstopfür akzeptable Gap-Toleranz setzen- Bei Infeasibility: IIS-Analyse mit
p.firstiis(1)starten
Allgemein
- Variablen mit beschreibenden Namen (
production_team_day, nichtx_i_j) - Constraints gruppieren und kommentieren
- Test-Instanzen für Validierung erstellen
Celery Task Patterns
Task-Struktur
AbortableTaskfür lange Tasks verwenden- Progress via
TaskManagerkommunizieren - Idempotenz sicherstellen
Queue Routing
- CPU-intensive Tasks:
computeQueue - I/O-bound Tasks:
defaultQueue - Timeout immer explizit setzen
Testing Patterns
Django Tests
@tag('crud')für CRUD-Tests- Multi-Database-Setup bei Tests beachten
setUpTestDatafür gemeinsame Fixtures
API Tests
- Authentifizierung via
force_authenticate() - Status-Codes explizit prüfen
- Response-Struktur mit Serializer validieren
Infrastructure Patterns
Kubernetes/K3s
- ServiceMonitor Labels:
release: prometheus - PrometheusRule Labels:
app: kube-prometheus-stack,release: prometheus - Dashboard ConfigMaps:
grafana_dashboard: "1"
Redis/Celery
- Redis-Passwort immer aus Secret injizieren
- Celery-Worker mit
--max-tasks-per-childfür Memory-Hygiene
Letzte Aktualisierung: 2026-02-04 Quelle: Manuelle Initialisierung