feat(webui): Statusfilter als Mehrfachauswahl, Roadmap raus aus der Bugliste

Drei Aenderungen an derselben Liste, alle mit demselben Ziel: Sichtbar sein
soll, was zu tun ist - und wenn etwas ausgeblendet wird, soll es gesagt werden.

1. Status als Ankreuzfelder statt Klappliste. Vorher liess sich genau eine
   Lage waehlen; "offen UND in Nachpruefung" ging nur, wenn jemand die
   Kombination vorher in die Liste geschrieben hatte. Angehakt ist ab Werk,
   was laeuft oder Aufmerksamkeit verlangt. Erledigtes, Geschlossenes und
   Abgelehntes bleibt draussen - es ist der groesste Teil des Bestandes.

   Das versteckte Feld vor den Ankreuzfeldern ist kein Schoenheitsfehler:
   HTML sendet fuer nicht angehakte Kaestchen nichts. Ohne es waere "alle
   Haken entfernt" von "erster Aufruf" nicht zu unterscheiden, und die
   Vorgabe kaeme bei jedem Versuch zurueck, sie loszuwerden.

2. Die Suche meldet verdeckte Treffer. Wer "288" sucht und nichts bekommt,
   schliesst daraus, es gebe den Eintrag nicht - dabei ist er nur erledigt.
   Eine Suche, die schweigt, obwohl sie etwas gefunden hat, ist schlimmer als
   gar keine. Die zweite Abfrage laeuft nur bei aktiver Suche.

3. Roadmap-Eintraege sind ab Werk aus der Bugliste heraus. Seit 2.7.0 IST ein
   Roadmap-Eintrag ein bugtracker_item; damit lag die Planung aller Projekte
   in derselben Liste wie die Meldungen - 217 von 229 Feature Requests. Die
   zwoelf echten Vorschlaege lagen darunter begraben. Getrennte Orte, keine
   geaenderten Daten: Der Filter holt die Planung jederzeit zurueck.

Dazu ein Testfall, den es haette laengst geben muessen: index.php wurde von
keinem einzigen Fall angefasst - die Suite prueft /api/. Ein Syntaxfehler in
der groessten Datei des Projekts waere durch das Deploy-Tor gelaufen, ohne
dass ein Test rot geworden waere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Deploymentcenter Bot
2026-08-31 09:14:18 +02:00
co-authored by Claude Opus 5
parent c9c821a44a
commit 669b165785
3 changed files with 320 additions and 27 deletions
+19
View File
@@ -67,6 +67,25 @@ def _(ctx):
% (r.feld('version'), erwartet))
@test('kern', 'Das WebUI antwortet, statt mit einem Serverfehler abzubrechen')
def _(ctx):
"""
index.php ist mit Abstand die groesste Datei des Projekts und wurde bisher
von keinem Testfall auch nur angefasst: Die Suite prueft /api/. Ein
Syntaxfehler darin waere durch das Deploy-Tor gelaufen und haette die
Oberflaeche lahmgelegt, ohne dass ein einziger Test rot geworden waere.
Mehr als das kann dieser Fall nicht: Ohne Sitzung bricht index.php in
Zeile 45 mit einer Weiterleitung zur Anmeldung ab, der Rumpf laeuft also
nie. Geprueft wird damit, dass PHP die Datei ueberhaupt uebersetzen kann -
und genau das ist der Fehler, der im Betrieb am teuersten ist.
"""
r = ctx.client.get('/index.php', token=None)
erwarte(r.status != 500,
"index.php antwortet mit 500 - vermutlich ein Syntaxfehler: %s" % r.kurz(400))
erwarte_status(r, 200, 302, 303)
@test('kern', 'OpenAPI-Beschreibung ist gueltig')
def _(ctx):
"""Die Beschreibung ist der Vertrag mit den SDKs - sie muss ladbar bleiben."""