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:
parent
f5950b6cbc
commit
e4eb5bc368
14 changed files with 343 additions and 5 deletions
|
|
@ -7,13 +7,14 @@ class AufgabeForm(forms.ModelForm):
|
|||
class Meta:
|
||||
model = Aufgabe
|
||||
fields = [
|
||||
'titel', 'beschreibung', 'typ', 'prioritaet', 'frist',
|
||||
'titel', 'beschreibung', 'typ', 'phase', 'prioritaet', 'frist',
|
||||
'verantwortlicher', 'los', 'anforderung', 'bieterfrage',
|
||||
]
|
||||
widgets = {
|
||||
'titel': forms.TextInput(attrs={'class': 'form-input', 'autofocus': True}),
|
||||
'beschreibung': forms.Textarea(attrs={'class': 'form-input', 'rows': 3}),
|
||||
'typ': forms.Select(attrs={'class': 'form-input'}),
|
||||
'phase': forms.Select(attrs={'class': 'form-input'}),
|
||||
'prioritaet': forms.RadioSelect(),
|
||||
'frist': forms.DateInput(attrs={'class': 'form-input', 'type': 'date'}),
|
||||
'verantwortlicher': forms.Select(attrs={'class': 'form-input'}),
|
||||
|
|
@ -30,6 +31,7 @@ class AufgabeForm(forms.ModelForm):
|
|||
self.fields['anforderung'].queryset = Anforderung.objects.filter(ausschreibung=ausschreibung)
|
||||
self.fields['bieterfrage'].queryset = Bieterfrage.objects.filter(ausschreibung=ausschreibung)
|
||||
self.fields['beschreibung'].required = False
|
||||
self.fields['phase'].required = False
|
||||
self.fields['frist'].required = False
|
||||
self.fields['verantwortlicher'].required = False
|
||||
self.fields['los'].required = False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue