generated from coulomb/repo-seed
- Fristen-Widget-Format: DateInput/DateTimeInput mit ISO-Format-Attribut, damit Browser date/datetime-local korrekt vorausfüllen (Feedback #4) - Phase 2 Teilnahmeentscheidung: URL in build_phase_nav von /teilnahmeentscheidung/ → /entscheidung/ korrigiert (Feedback #6) - Phase 3 Detaillierte Durchsicht: URL in build_phase_nav von /anforderungen/ → /lose/anforderungen/ korrigiert (Feedback #7) - Phase 7 Abgabe: order_by('bezeichnung') → order_by('beschreibung') in abgabe_views.py (Dokument hat kein Feld 'bezeichnung') (Feedback #8) - Ausschreibungen-Liste: Ausschreiber zuerst, Titel zweite Spalte, neues geschätztes Volumen (Feedback #5) - Feedback-Backlog Leerstand: bereits durch vorherigen URL-Fix abgedeckt (Feedback #1) - Rechtsgrundlage (VgV/UVgO/VOB/A/SektVO/GWB) als neues Formularfeld incl. Migration (Feedback #2) - Bindefrist in Tagen + berechnetes Enddatum als Modell-Property bindefrist_berechnet, Formular und Detailansicht erweitert (Feedback #3) 68/68 Tests grün. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
144 lines
4.9 KiB
Markdown
144 lines
4.9 KiB
Markdown
---
|
|
id: WP-0013
|
|
title: Feedback-Bugs — Fehlerbehebungen und Verbesserungen aus dem Backlog
|
|
status: done
|
|
phase: 13-of-13
|
|
created: "2026-05-14"
|
|
depends_on: WP-0012
|
|
---
|
|
|
|
# WP-0013 — Feedback-Bugs
|
|
|
|
Fehlerbehebungen und Verbesserungen, die während der ersten realen Nutzung
|
|
des Systems im Feedback-Backlog erfasst wurden. Priorisiert nach Dringlichkeit:
|
|
zuerst die kritischen Fehler (Fristen, Teilnahmeentscheidung), dann mittlere
|
|
(Phase 3, Abgabe, Listen-Darstellung), zuletzt kosmetische Hinweise.
|
|
|
|
---
|
|
|
|
```task
|
|
id: WP-0013-T01
|
|
title: Fehler — Fristen verschwinden nach Speichern (Feedback #4, Hoch)
|
|
status: done
|
|
|
|
Nach dem Speichern einer Ausschreibung sind beim erneuten Bearbeiten die Fristen
|
|
nicht mehr vorausgefüllt. Ursache vermutlich: DateTimeField-Konvertierung oder
|
|
fehlendes `initial`-Argument im Bearbeitungsformular.
|
|
|
|
Schritte:
|
|
1. `apps/ausschreibungen/views.py` — Bearbeitungs-View debuggen: prüfen, ob
|
|
die Fristen-Felder korrekt aus der Instanz gelesen und ans Template übergeben
|
|
werden.
|
|
2. Formular-Template prüfen: `value="{{ form.frist_angebot.value|date:'Y-m-d\\TH:i' }}"` o.ä.
|
|
3. Reproduzieren: Ausschreibung anlegen, Fristen setzen, speichern, erneut öffnen.
|
|
4. Fix und Regression-Test.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T02
|
|
title: Fehler — Phase Teilnahmeentscheidung liefert Fehler (Feedback #6, Hoch)
|
|
status: done
|
|
|
|
Die Seite für Phase 2 "Teilnahmeentscheidung" gibt einen Fehler aus oder fehlt.
|
|
|
|
Schritte:
|
|
1. URL `/ausschreibungen/<pk>/teilnahmeentscheidung/` aufrufen und Traceback lesen.
|
|
2. View und Template für Phase 2 identifizieren.
|
|
3. Fehlenden Import, fehlende Migration oder fehlendes Template beheben.
|
|
4. Manuell testen: Teilnahmeentscheidung für eine Ausschreibung setzen.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T03
|
|
title: Fehler — Phase "Detaillierte Durchsicht" fehlerhaft (Feedback #7, Mittel)
|
|
status: done
|
|
|
|
Die Seite für Phase 3 "Detaillierte Durchsicht & offene Punkte" ist fehlerhaft
|
|
oder fehlt.
|
|
|
|
Schritte:
|
|
1. URL aufrufen, Traceback/Fehlermeldung dokumentieren.
|
|
2. View, URLs und Template der Phase prüfen.
|
|
3. Ursache beheben (fehlender Import, Query-Fehler, Template-Variable).
|
|
4. Manuell testen.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T04
|
|
title: Fehler — Abgabe-Seite defekt (Feedback #8, Mittel)
|
|
status: done
|
|
|
|
Die Seite für Phase 7 "Abgabe" funktioniert nicht korrekt.
|
|
|
|
Schritte:
|
|
1. URL `/ausschreibungen/<pk>/abgabe/` aufrufen, Fehler dokumentieren.
|
|
2. `apps/nachbetrachtung/views.py` und `abgabe_views.py` prüfen.
|
|
3. Namespace-Fehler in Templates ausschließen (wurden in WP-0012 teilweise bereits
|
|
gefixt — prüfen ob noch weitere URL-Referenzen falsch sind).
|
|
4. Fix und manuell testen.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T05
|
|
title: Hinweis — Ausschreibungen-Liste: Ausschreiber zuerst, Volumen ergänzen (Feedback #5, Mittel)
|
|
status: done
|
|
|
|
In der Liste "Alle Ausschreibungen" soll der Ausschreiber in die erste Spalte,
|
|
der Titel in die zweite. Das geschätzte Auftragsvolumen soll als weitere Spalte
|
|
erscheinen.
|
|
|
|
Schritte:
|
|
1. `templates/ausschreibungen/liste.html` — Spaltenreihenfolge anpassen.
|
|
2. Sicherstellen, dass `ausschreiber` und `auftragsvolumen` im Queryset und
|
|
Template-Kontext vorhanden sind.
|
|
3. `auftragsvolumen` ggf. formatiert darstellen (Tausendertrennzeichen, EUR).
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T06
|
|
title: Fehler — Feedback-Backlog bei leerem Bestand (Feedback #1, Niedrig)
|
|
status: done
|
|
|
|
Die Feedback-Backlog-Seite liefert einen Fehler, wenn noch kein Eintrag vorhanden
|
|
ist. Vermutlich ein Template-Fehler beim Iterieren über ein leeres QuerySet.
|
|
|
|
Schritte:
|
|
1. Alle Einträge temporär deaktivieren oder neuen User testen.
|
|
2. `templates/feedback/backlog.html` — `{% if eintraege %}` Guard prüfen
|
|
(ist vorhanden, aber ggf. greift `.count` oder ein anderer Ausdruck vorher).
|
|
3. Fix, ggf. auch den `{{ eintraege.count }}` im Header absichern.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T07
|
|
title: Hinweis — Rechtsgrundlage in Ausschreibungs-Stammdaten (Feedback #2, Mittel)
|
|
status: done
|
|
|
|
In den Stammdaten der Ausschreibung fehlt das Feld "Rechtsgrundlage" (z.B. VgV,
|
|
UVgO, VOB/A, SektVO).
|
|
|
|
Schritte:
|
|
1. `apps/ausschreibungen/models.py` — Feld `rechtsgrundlage` ergänzen
|
|
(CharField mit choices: VgV, UVgO, VOB/A, SektVO, GWB, Sonstige).
|
|
2. Migration erstellen und anwenden.
|
|
3. Formular und Template für Stammdaten erweitern.
|
|
4. In der Detailansicht darstellen.
|
|
```
|
|
|
|
```task
|
|
id: WP-0013-T08
|
|
title: Hinweis — Bindefrist: Tage erfassen, Datum berechnen (Feedback #3, Niedrig)
|
|
status: done
|
|
|
|
Bindefrist soll als Anzahl Tage erfasst werden. Das konkrete Enddatum ergibt
|
|
sich dann aus "Abgabe bis" + Bindefrist-Tage und soll ergänzend dargestellt werden.
|
|
|
|
Schritte:
|
|
1. `apps/ausschreibungen/models.py` — Feld `bindefrist_tage` (PositiveIntegerField,
|
|
optional) ergänzen neben dem bestehenden Datums-Feld (falls vorhanden).
|
|
2. Migration erstellen.
|
|
3. Template: berechnetes Datum `{{ ausschreibung.abgabe_bis|add_days:ausschreibung.bindefrist_tage }}`
|
|
oder Berechnung im View/Model-Property.
|
|
4. Formular anpassen.
|
|
```
|