msteudtn / Mat-O-Wahl

:de: Mat-O-Wahl - Ein einfach zu bedienender, freier Open Source Wahl-O-Mat Klon fuer jedermann ### :gb: :us: A simple to handle, free "Voting Advice Application" / "Electoral Compass" alternative
https://mat-o-wahl.de/
GNU General Public License v3.0
35 stars 15 forks source link

Entfernung eines Eintrags aus der parteien.csv macht Results-Datenbanktabelle unbrauchbar #77

Open fenglisch opened 1 year ago

fenglisch commented 1 year ago

Wenn die statistische Auswertung aktiviert ist, wird in der Results-DB-Tabelle ja auch die Übereinstimmung des Nutzers mit den Parteien gespeichert. Die Zuordnung des Übereinstimmungswertes mit der Partei findet dabei lediglich über die Reihenfolge statt. Wenn ich nach einem halben Jahr einen Eintrag aus der Mitte der parteien.csv lösche, kann keine richtige Zuordnung von Übereinstimmungswert mit Partei mehr stattfinden, weil sich alles verschiebt (aber der Stelle, wo der Eintrag entfernt wurde).

Ein Lösung wäre, dass man Einträge in der parteien.csv nicht mehr ersatzlos löscht, sondern sie durch einen Dummy-Eintrag ersetzt. Dieser müsste irgendeinen Wert enthalten (z. B. <span data-hide="yes"></span>), damit dieser in der Auswertung nirgendwo angezeigt wird, sondern nur in der parteien.csv den Platz des gelöschten Eintrags einnimmt, damit die Zuordnung weiterhin möglich ist.

Alternativ könnte die Zuordnung vielleicht anders als über die Reihenfolge stattfinden, z. B. indem vor jedem Übereinstimmungswert das Kürzel der Partei steht.

msteudtn commented 1 year ago

Hallo,

zum besseren Verständnis: Wir reden hier über die Spalte parties (https://github.com/msteudtn/Mat-O-Wahl/blob/master/extras/statistics/results_db.sql) mit den Werten von mowparties, richtig?

Das sieht in der Auswertung also im Moment so aus:

vorher: Partei: A B C D
Punkte 5 1 0 2
nachher, ohne B, mit E: Partei: A C D E
Punkte 5 1 0 2

Ein Dummy-Eintrag in der parties.csv würde umfangreiche Änderungen nach sich ziehen, da die ganze Berechnung der Punkte von der richtigen Anzahl der Parteien und Fragen abhängt.

Die Alternative, stattdessen das Parteikürzel mit in die Datenbank zu schreiben, wäre eine einfache Lösung. :)

fenglisch commented 1 year ago

Genau das meinte ich.

Da der Dummy-Eintrag ohnehin nur eine ziemlich unsaubere Lösung gewesen wäre, klingt das doch gut!

msteudtn commented 1 year ago

Der folgende Entwicklungszweig hat die nötigen Änderungen.

Die Tabelle sieht am Ende so aus:

resultID ip timestamp personal parties partynames
12 0.0.0.0 2023-02-05 1,1,1,1,1,1 4.5,2,2,3 APPD,Neutrale,Bananen,TBC
13 0.0.0.0 2023-02-05 1,-1,-1,-1,-1,1 1.5,6,4,3 Bananen,TBC,Neutrale,APPD

Alle Änderungen kann man hier einsehen. https://github.com/msteudtn/Mat-O-Wahl/pull/80

fenglisch commented 11 months ago

Danke dir @msteudtn ! Wir haben es tatsächlich jetzt erst geschafft, das zu testen.

Kleine Anmerkung: Die Charakter-Begrenzung der Spalte partynames würde ich sicherheitshalber nochmal verdoppeln

Größere Anmerkung: Die Nummern in der Spalte parties sind nach wie vor geordnet nach der Reihenfolge der Parteien in der parteien.csv. In der partynames Spalte wird aber die Reihenfolge aus dem Ranking übernommen. Hier sollte auch die Reihenfolge aus der CSV-Datei beibehalten werden