Auswertungen WP-Filter: Format-Mismatch zwischen UI und Backend #137

Closed
opened 2026-04-20 01:36:44 +02:00 by tobias · 1 comment
Owner

Symptom

In /?mode=auswertungen das WP-Dropdown filtert effektiv nichts bzw. liefert 0 Treffer, weil:

  • UI sendet ?wahlperiode=18 (nur die Zahl, aus drucksache.split("/")[0])
  • Backend erwartet "NRW-WP18"-Format (mit BL-Prefix), weil wahlperiode_for(datum, bl) in app/auswertungen.py::aggregate_matrix genau diesen String erzeugt und vergleicht

Reproduktion

curl -s https://gwoe.toppyr.de/api/auswertungen/matrix?wahlperiode=18 | jq .total  # → 0
curl -s https://gwoe.toppyr.de/api/auswertungen/matrix?wahlperiode=NRW-WP18 | jq .total  # → n

Fix-Optionen

  1. UI-Fix: Dropdown-Option-Value generieren als bundesland + "-WP" + nummer. Nachteil: bei „Alle BL + WP18" gibts kein sinnvolles Mapping, weil WP18 in NRW ≠ WP18 in z.B. BY.
  2. Backend-Fix: Matching tolerant machen — entweder "18" → Endswith-"WP18"-Match oder zweites Param wahlperiode_nr. Nachteil: Ambiguität (WP18 in NRW ist 2022-2027, in anderen BL andere Zeiträume).
  3. Konzept-Fix: WP-Dropdown nur zusammen mit BL-Dropdown anbieten. Wenn kein BL gewählt, WP-Filter deaktivieren/ausblenden.

Empfehlung: Option 3 (konzeptuell sauberste Lösung) plus kleines Info-Icon am Dropdown.

Bezug

  • Gefunden beim Deployment von #131 (BL-Filter)
  • Aktuelle Daten: 71 Assessments in 14 BL, WP-Filter bringt also ohne Fix faktisch keinen Mehrwert
## Symptom In `/?mode=auswertungen` das WP-Dropdown filtert effektiv nichts bzw. liefert 0 Treffer, weil: - **UI sendet** `?wahlperiode=18` (nur die Zahl, aus `drucksache.split("/")[0]`) - **Backend erwartet** `"NRW-WP18"`-Format (mit BL-Prefix), weil `wahlperiode_for(datum, bl)` in `app/auswertungen.py::aggregate_matrix` genau diesen String erzeugt und vergleicht ## Reproduktion ```bash curl -s https://gwoe.toppyr.de/api/auswertungen/matrix?wahlperiode=18 | jq .total # → 0 curl -s https://gwoe.toppyr.de/api/auswertungen/matrix?wahlperiode=NRW-WP18 | jq .total # → n ``` ## Fix-Optionen 1. **UI-Fix:** Dropdown-Option-Value generieren als `bundesland + "-WP" + nummer`. Nachteil: bei „Alle BL + WP18" gibts kein sinnvolles Mapping, weil WP18 in NRW ≠ WP18 in z.B. BY. 2. **Backend-Fix:** Matching tolerant machen — entweder `"18"` → Endswith-`"WP18"`-Match oder zweites Param `wahlperiode_nr`. Nachteil: Ambiguität (WP18 in NRW ist 2022-2027, in anderen BL andere Zeiträume). 3. **Konzept-Fix:** WP-Dropdown nur *zusammen* mit BL-Dropdown anbieten. Wenn kein BL gewählt, WP-Filter deaktivieren/ausblenden. Empfehlung: **Option 3** (konzeptuell sauberste Lösung) plus kleines Info-Icon am Dropdown. ## Bezug - Gefunden beim Deployment von #131 (BL-Filter) - Aktuelle Daten: 71 Assessments in 14 BL, WP-Filter bringt also ohne Fix faktisch keinen Mehrwert
Author
Owner

Fix Option 3 deployed.

Verhalten:

  • WP-Dropdown ist defaults ausgeblendet
  • Erst sichtbar wenn BL gewählt
  • WP-Optionen werden dynamisch befüllt aus allAssessments.filter(a => a.bundesland === selectedBl) → nur relevante WPs
  • option.value wird korrekt als "<BL>-WP<N>" gesetzt (z.B. "NRW-WP18"), Format matcht Backend aggregate_matrix
  • BL zurück auf "Alle" → WP-Dropdown blendet aus und resettet sich

Annahme: Drucksachen folgen dem Format <WP>/<Nummer> überall. Das gilt für alle derzeit angebundenen BL laut Codebase. SN (XML-Import) nicht geprüft — falls abweichend, Folge-Ticket.

Schließe.

Fix Option 3 deployed. **Verhalten:** - WP-Dropdown ist defaults ausgeblendet - Erst sichtbar wenn BL gewählt - WP-Optionen werden dynamisch befüllt aus `allAssessments.filter(a => a.bundesland === selectedBl)` → nur relevante WPs - `option.value` wird korrekt als `"<BL>-WP<N>"` gesetzt (z.B. `"NRW-WP18"`), Format matcht Backend `aggregate_matrix` - BL zurück auf "Alle" → WP-Dropdown blendet aus und resettet sich **Annahme:** Drucksachen folgen dem Format `<WP>/<Nummer>` überall. Das gilt für alle derzeit angebundenen BL laut Codebase. SN (XML-Import) nicht geprüft — falls abweichend, Folge-Ticket. Schließe.
Sign in to join this conversation.
No description provided.