claude-vault/memory/patterns.md
2026-02-04 16:49:53 +01:00

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_view mit Function-Based Views, NICHT ViewSets
  • Immer @extend_schema fü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=True für häufig gefilterte Boolean-Felder

MIP Optimization Patterns

Xpress-spezifisch

  • Indicator Constraints bevorzugen über Big-M wenn möglich
  • p.controls.miprelstop für akzeptable Gap-Toleranz setzen
  • Bei Infeasibility: IIS-Analyse mit p.firstiis(1) starten

Allgemein

  • Variablen mit beschreibenden Namen (production_team_day, nicht x_i_j)
  • Constraints gruppieren und kommentieren
  • Test-Instanzen für Validierung erstellen

Celery Task Patterns

Task-Struktur

  • AbortableTask für lange Tasks verwenden
  • Progress via TaskManager kommunizieren
  • Idempotenz sicherstellen

Queue Routing

  • CPU-intensive Tasks: compute Queue
  • I/O-bound Tasks: default Queue
  • Timeout immer explizit setzen

Testing Patterns

Django Tests

  • @tag('crud') für CRUD-Tests
  • Multi-Database-Setup bei Tests beachten
  • setUpTestData fü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-child für Memory-Hygiene

Letzte Aktualisierung: 2026-02-04 Quelle: Manuelle Initialisierung