--- 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//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//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. ```