# M1 Rekonstruierter Golden Master Stand: 2026-07-11 Da kein alter MS-SQL-Datenbankstand verfuegbar ist, wird M1 als rekonstruierter Golden Master aufgebaut. Die Referenz entsteht aus Legacy-Code, Screenshots und kontrollierten Testdaten in der MySQL-Dev-Datenbank. ## Ziel Die wichtigsten fachlichen Regeln werden mit kleinen, nachvollziehbaren Testfaellen festgeschrieben. Diese Tests dienen spaeter als Sicherheitsnetz fuer die SaaS-Umstrukturierung. ## Testdaten-Gruppen ### Teilnehmer - Aktives normales Mitglied. - Aktiver Admin. - Inaktives Mitglied. - Mitglied mit PayPal-Namen. - Mitglied ohne Buchungen. ### Buchungen - Einzahlung mit positivem Betrag. - Mehrere Einzahlungen an unterschiedlichen Tagen. - Strichbuchung mit einem Strich. - Strichbuchung mit zwei Strichen. - Sammelerfassung fuer mehrere Teilnehmer. - Web-Strich-Eintrag mit `Eintragsart = 2`. ### Salden - Positiver Kontostand. - Negativer Kontostand. - Nullsaldo. - Jahreswerte fuer aktuelles Jahr. - Altdaten aus Vorjahr, die nicht in Jahreswerte fallen. ### CSV-Import - Treffer ueber Name. - Treffer ueber `paypalname`. - Dublette gleicher Teilnehmer, Betrag und Datum. - Unbekannter Name. - Negativer oder leerer Betrag. ### Hinweise - Aktiver Hinweis. - Abgelaufener Hinweis. - Neuer Hinweis ueber Admin-Formular. ## Erwartete Referenzwerte Fuer jeden Testfall sollen erwartete Werte dokumentiert werden: - Summe Einzahlungen. - Summe Kosten. - Summe Striche. - Aktueller Stand. - Jahresstriche. - Jahreseinzahlungen. - Jahresausgaben. - Sichtbarkeit in Listen und Filtern. ## Umsetzungsvorschlag 1. `database/mysql-dev-schema.sql` um stabile Seed-Daten erweitern oder separates Seed-Skript anlegen. Erledigt mit `scripts/seed-golden-master.php`. 2. `scripts/init-mysql-dev.php` so erweitern, dass es die Testdaten idempotent anlegt. Entschieden: Golden-Master-Daten bleiben in einem separaten Skript, damit normale Dev-Daten nicht zwangsweise ueberschrieben werden. 3. Ein erstes Vergleichsskript `scripts/check-golden-master.php` erstellen. Erledigt. 4. Die wichtigsten Seiten per HTTP abrufen und auf erwartete Texte/Werte pruefen. 5. Danach M2 starten: technisches Fundament fuer SaaS-Struktur. ## Skripte - `scripts/dev-db.php`: gemeinsame DB-Verbindung fuer Dev-Skripte. - `scripts/golden-master-data.php`: definierte Testdaten und erwartete Werte. - `scripts/seed-golden-master.php`: legt Golden-Master-Testdaten idempotent an. - `scripts/check-golden-master.php`: prueft Salden, Jahreswerte, Rollen, Listenfilter, CSV-Lookup und Hinweise. ## Ausfuehrung Mit normal installierter PHP-CLI: ```bash php scripts/seed-golden-master.php php scripts/check-golden-master.php ``` In der aktuellen lokalen Umgebung mit entpacktem PHP: ```bash LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \ "$PWD/.local/php/usr/bin/php8.3" \ -c "$PWD/.local/php-dev.ini" \ scripts/seed-golden-master.php LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \ "$PWD/.local/php/usr/bin/php8.3" \ -c "$PWD/.local/php-dev.ini" \ scripts/check-golden-master.php ``` Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`, `DB_USER` und `DB_PASS`. ## Abgedeckte Testfaelle | Testfall | Fixture | | --- | --- | | Admin mit Buchung | `gm-admin@test.local` | | Positiver Saldo mit Vorjahresdaten | `gm-positive@test.local` | | Negativer Saldo | `gm-negative@test.local` | | Nullsaldo | `gm-zero@test.local` | | Inaktives Mitglied | `gm-inactive@test.local` | | PayPal-Name fuer CSV-Lookup | `gm-paypal@test.local` | | Mitglied ohne Buchungen | `gm-empty@test.local` | | Vieltrinker fuer Vorderseite | `gm-heavy@test.local` | | Aktiver Hinweis | `[GM] Aktiver Hinweis fuer Golden-Master-Test` | | Abgelaufener Hinweis | `[GM] Abgelaufener Hinweis fuer Golden-Master-Test` | ## Akzeptanzkriterien - Testdaten sind reproduzierbar. - Tests koennen mehrfach laufen, ohne Duplikate zu erzeugen. - Salden und Jahreswerte sind automatisch pruefbar. - CSV-Importfaelle sind fachlich abgedeckt. - Die wichtigsten UI-Seiten liefern HTTP 200 ohne PHP-Warnings. ## Aktueller Pruefstatus Stand 2026-07-11: - `scripts/seed-golden-master.php` erfolgreich gegen die MySQL-Dev-Datenbank ausgefuehrt. - `scripts/check-golden-master.php` erfolgreich ausgefuehrt. - Zweiter Seed+Check-Lauf erfolgreich, Idempotenz bestaetigt. - Ergebnis: 104 Assertions bestanden.