M0 Check DB Testdata
@@ -13,9 +13,9 @@ Design-Erhalt und fachliche Vergleichstests.
|
||||
| Code-Inventar | begonnen | Siehe `code-inventory.md` |
|
||||
| Prozesslandkarte | begonnen | In `code-inventory.md` enthalten |
|
||||
| Sicherheitsbaseline | begonnen | Siehe `security-baseline.md` |
|
||||
| DB-Schema-Export | vorbereitet | Siehe `schema-export.sql` |
|
||||
| Golden-Master-Auswertungen | vorbereitet | Siehe `golden-master-queries.sql` |
|
||||
| Design-/Screenshot-Referenz | vorbereitet | Siehe `screenshot-checklist.md` |
|
||||
| DB-Schema-Export | nicht aus Alt-DB verfuegbar | Siehe `legacy-db-status.md` |
|
||||
| Golden-Master-Auswertungen | nicht aus Alt-DB verfuegbar | Siehe `legacy-db-status.md` |
|
||||
| Design-/Screenshot-Referenz | teilweise geliefert | Siehe `screenshot-checklist.md` |
|
||||
|
||||
## Lokal abgeschlossen
|
||||
|
||||
@@ -25,6 +25,10 @@ Design-Erhalt und fachliche Vergleichstests.
|
||||
- Sicherheitsrisiken fuer M0 inventarisiert.
|
||||
- SQL-Vorlagen fuer Schema- und Golden-Master-Export angelegt.
|
||||
- Screenshot-Checkliste fuer Design-Erhalt angelegt.
|
||||
- Erste Screenshot-Referenzen unter `docs/m0/screenshots/` abgelegt.
|
||||
- Festgelegt: Ein alter MS-SQL-Datenbankstand steht aktuell nicht zur
|
||||
Verfuegung; M0 arbeitet deshalb mit Code, Screenshots und rekonstruierter
|
||||
MySQL-Dev-Datenbank als Ausgangsbasis.
|
||||
|
||||
## Lokale Einschraenkungen
|
||||
|
||||
@@ -38,17 +42,17 @@ Design-Erhalt und fachliche Vergleichstests.
|
||||
|
||||
Diese Punkte kann ich ohne externe Informationen nicht abschliessen:
|
||||
|
||||
1. Live- oder Staging-DB-Schema exportieren.
|
||||
2. Tabellen, Spalten, Indizes, Constraints und Rowcounts verifizieren.
|
||||
3. Golden-Master-Ergebnisse gegen echte Daten berechnen.
|
||||
4. Screenshots der echten App-Zustaende aufnehmen, falls die App lokal nicht
|
||||
lauffaehig ist.
|
||||
5. Produktivumgebung dokumentieren: PHP-Version, Webserver, SQL-Server-Version,
|
||||
1. Falls spaeter doch noch ein MS-SQL-Dump auftaucht: Schema und
|
||||
Golden-Master-Werte nachtraeglich exportieren.
|
||||
2. MySQL-Dev-Schema als neue rekonstruierte Baseline weiter verifizieren.
|
||||
3. Fehlende Screenshot-Zustaende nachreichen oder bewusst als optional markieren.
|
||||
4. Produktivumgebung dokumentieren: PHP-Version, Webserver, SQL-Server-Version,
|
||||
Auth-Setup, Cron/Job-Ausfuehrung.
|
||||
|
||||
## Was ich von dir brauche
|
||||
|
||||
Bitte stelle eines der folgenden Pakete bereit:
|
||||
Falls ein alter MS-SQL-Stand spaeter noch auftaucht, bitte eines der folgenden
|
||||
Pakete bereitstellen:
|
||||
|
||||
- Idealerweise: einen anonymisierten SQL-Server-Schemaexport plus Rowcounts.
|
||||
- Alternativ: Zugriffsdaten zu einer Test-/Staging-DB, nicht zu Produktion.
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# M0 Legacy-Datenbankstatus
|
||||
|
||||
Stand: 2026-07-11
|
||||
|
||||
## Entscheidung
|
||||
|
||||
Ein alter MS-SQL-Datenbankstand steht aktuell nicht zur Verfuegung. Deshalb
|
||||
koennen `schema-export.sql` und `golden-master-queries.sql` derzeit nicht gegen
|
||||
eine echte Legacy-Datenbank ausgefuehrt werden.
|
||||
|
||||
Fuer die weitere Umstrukturierung gilt daher:
|
||||
|
||||
- Der Legacy-Code ist die primaere Quelle fuer das fachliche Verhalten.
|
||||
- Die Screenshots unter `docs/m0/screenshots/` sind die visuelle Referenz.
|
||||
- Die MySQL-Testdatenbank ist die rekonstruierte Entwicklungsbasis.
|
||||
- Fachliche Golden-Master-Werte werden aus rekonstruierten Testfaellen statt aus
|
||||
historischer Produktivdatenbank aufgebaut.
|
||||
|
||||
## Konsequenz fuer M1
|
||||
|
||||
M1 wird nicht als Vergleich gegen echte Alt-Daten gestartet, sondern als
|
||||
rekonstruierter Golden-Master:
|
||||
|
||||
1. Fachliche Regeln aus dem Code ableiten.
|
||||
2. Kleine, kontrollierte Testdaten erzeugen.
|
||||
3. Erwartete Salden, Jahreswerte, Striche, Einzahlungen und CSV-Importfaelle
|
||||
manuell beziehungsweise per Testskript definieren.
|
||||
4. Neue Implementierung gegen diese erwarteten Werte testen.
|
||||
|
||||
Wenn spaeter doch noch ein MS-SQL-Dump oder Schemaexport auftaucht, werden die
|
||||
urspruenglichen M0-SQL-Dateien nachtraeglich genutzt und die Baseline ergaenzt.
|
||||
|
||||
## Aktuelle rekonstruierte Basis
|
||||
|
||||
- MySQL-Dev-Schema: `database/mysql-dev-schema.sql`
|
||||
- Initialisierung: `scripts/init-mysql-dev.php`
|
||||
- Dev-Start: `scripts/run-dev-server.sh`
|
||||
- MySQL-Kompatibilitaet: `lib/sqlsrv_mysql_compat.php`
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
- Soll die MySQL-Testdatenbank ab jetzt die verbindliche Entwicklungsdatenbank
|
||||
fuer M1/M2 sein?
|
||||
- Soll das Ziel weiterhin eine angepasste Legacy-PHP-App sein oder ein sauberer
|
||||
SaaS-Neuaufbau mit uebernommener Fachlogik?
|
||||
- Welche Testfaelle muessen fachlich auf jeden Fall abgedeckt werden?
|
||||
|
||||
@@ -16,23 +16,38 @@ aktuellen Umgebung geliefert werden.
|
||||
|
||||
## Kernseiten
|
||||
|
||||
| Prioritaet | Seite | Rolle | Zweck |
|
||||
| --- | --- | --- | --- |
|
||||
| Hoch | `index.php` | Mitglied | Dashboard, Saldo, Jahreswerte, eigene Striche, PayPal |
|
||||
| Hoch | `index.php` | Admin | Dashboard mit Admin-Sidebar |
|
||||
| Hoch | `kaffeeliste.php` | Admin | Gesamtuebersicht und Aktionsleiste |
|
||||
| Hoch | `stricheintragen.php` | Admin | Sammelerfassung Striche |
|
||||
| Hoch | `einzahlung.php` | Admin | Sammelerfassung Einzahlungen |
|
||||
| Hoch | `mitarbeiterverwalten.php` | Admin | Mitgliederliste und Formular |
|
||||
| Hoch | `letzteneintraege.php` | Admin | Korrekturansicht mit Loeschaktionen |
|
||||
| Mittel | `csvupload.php` | Admin | CSV-Upload-Formular und Ergebniszustand |
|
||||
| Mittel | `hinweise.php` | Admin | Hinweise anlegen und Liste |
|
||||
| Mittel | `faq.php` | Mitglied | FAQ-Inhalte und Typografie |
|
||||
| Mittel | `namenanpassen.php` | Mitglied | Formular fuer Anzeigenamen |
|
||||
| Niedrig | `teilnehmerauswertung.php` | Admin | Detailauswertung pro Teilnehmer |
|
||||
| Niedrig | `mailausgebe.php` | Admin | Mail-/Adressausgabe |
|
||||
| Niedrig | `umfrage.php` | Mitglied | Randmodul, falls SaaS-relevant |
|
||||
| Niedrig | `umfrageergebnisse.php` | Admin | Randmodul, falls SaaS-relevant |
|
||||
| Prioritaet | Seite | Rolle | Status | Zweck |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Hoch | `index.php` | Mitglied | vorhanden: `m0-member-dashboard-desktop.png`, `m0-member-dashboard-mobile.png` | Dashboard, Saldo, Jahreswerte, eigene Striche, PayPal |
|
||||
| Hoch | `index.php` | Admin | aktuell identisch wie Mitglied | Dashboard mit Admin-Sidebar |
|
||||
| Hoch | `kaffeeliste.php` | Admin | vorhanden: `m0-admin-kaffeeliste-desktop.png` | Gesamtuebersicht und Aktionsleiste |
|
||||
| Hoch | `stricheintragen.php` | Admin | vorhanden: `m0-admin-stricheintragen-desktop.png` | Sammelerfassung Striche |
|
||||
| Hoch | `einzahlung.php` | Admin | vorhanden: `m0-admin-einzahlung-desktop.png` | Sammelerfassung Einzahlungen |
|
||||
| Hoch | `mitarbeiterverwalten.php` | Admin | vorhanden: `m0-admin-mitglieder-desktop.png` | Mitgliederliste und Formular |
|
||||
| Hoch | `letzteneintraege.php` | Admin | vorhanden: `m0-admin-letzteneintraege-desktop.png` | Korrekturansicht mit Loeschaktionen |
|
||||
| Mittel | `csvupload.php` | Admin | vorhanden: `m0-admin-csv-upload-desktop.png` | CSV-Upload-Formular und Ergebniszustand |
|
||||
| Mittel | `hinweise.php` | Admin | vorhanden: `m0-admin-hinweise-desktop.png` | Hinweise anlegen und Liste |
|
||||
| Mittel | `faq.php` | Mitglied | vorhanden: `m0-member-faq-desktop.png` | FAQ-Inhalte und Typografie |
|
||||
| Mittel | `namenanpassen.php` | Mitglied | offen | Formular fuer Anzeigenamen |
|
||||
| Niedrig | `teilnehmerauswertung.php` | Admin | offen | Detailauswertung pro Teilnehmer |
|
||||
| Niedrig | `mailausgebe.php` | Admin | offen | Mail-/Adressausgabe |
|
||||
| Niedrig | `umfrage.php` | Mitglied | offen, falls SaaS-relevant | Randmodul, falls SaaS-relevant |
|
||||
| Niedrig | `umfrageergebnisse.php` | Admin | offen, falls SaaS-relevant | Randmodul, falls SaaS-relevant |
|
||||
|
||||
## Gelieferte Dateien
|
||||
|
||||
```text
|
||||
docs/m0/screenshots/m0-admin-einzahlung-desktop.png
|
||||
docs/m0/screenshots/m0-admin-csv-upload-desktop.png
|
||||
docs/m0/screenshots/m0-admin-hinweise-desktop.png
|
||||
docs/m0/screenshots/m0-admin-kaffeeliste-desktop.png
|
||||
docs/m0/screenshots/m0-admin-letzteneintraege-desktop.png
|
||||
docs/m0/screenshots/m0-admin-mitglieder-desktop.png
|
||||
docs/m0/screenshots/m0-admin-stricheintragen-desktop.png
|
||||
docs/m0/screenshots/m0-member-dashboard-desktop.png
|
||||
docs/m0/screenshots/m0-member-dashboard-mobile.png
|
||||
docs/m0/screenshots/m0-member-faq-desktop.png
|
||||
```
|
||||
|
||||
## Zustaende
|
||||
|
||||
@@ -71,4 +86,3 @@ docs/m0/screenshots/
|
||||
Vor dem Commit sollten Screenshots anonymisiert sein. Wenn echte Namen,
|
||||
E-Mails, PayPal-Daten oder Salden sichtbar sind, besser ausserhalb des Repos
|
||||
ablegen und nur als Referenz verwenden.
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 210 KiB |
@@ -0,0 +1,146 @@
|
||||
# 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.
|
||||