feat(WP-0014): Aufgaben-Phasenzuordnung und Fertigstellungs-Scores

Aufgabe bekommt ein phase-Feld (1–8). aufgaben_score()-Helper in
core/services.py berechnet abgeschlossen/total/score_pct für jedes
QuerySet. Score-Spalten in Ausschreibungen-Liste, Lose-Liste und
Ausschreibungs-Detail; per-Phase-Scores in der Seitenleisten-Navigation.
Phasenfilter in Aufgaben-Liste. 68 Tests grün.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-05-14 01:47:05 +02:00
parent f5950b6cbc
commit e4eb5bc368
14 changed files with 343 additions and 5 deletions

View file

@ -24,8 +24,16 @@ def _ausschreibung_breadcrumbs(ausschreibung, *extra):
# ─── Lose ────────────────────────────────────────────────────────────────────
def lose_liste(request, ausschreibung_id):
from django.db.models import Count, Q
ausschreibung = get_object_or_404(Ausschreibung, pk=ausschreibung_id)
lose = Los.objects.filter(ausschreibung=ausschreibung).order_by('losnummer')
lose = Los.objects.filter(ausschreibung=ausschreibung).annotate(
aufgaben_total=Count('aufgaben', distinct=True),
aufgaben_erledigt=Count(
'aufgaben',
filter=Q(aufgaben__status__in=['erledigt', 'verworfen']),
distinct=True,
),
).order_by('losnummer')
return render(request, 'lose/liste.html', {
'ausschreibung': ausschreibung,
'lose': lose,