M1 Abschluss

This commit is contained in:
2026-07-12 00:51:01 +02:00
parent 84d957e3ec
commit 66bdd38d54
5 changed files with 307 additions and 13 deletions
+65 -4
View File
@@ -1,6 +1,6 @@
# M1 Rekonstruierter Golden Master
Stand: 2026-07-11
Stand: 2026-07-12
Da kein alter MS-SQL-Datenbankstand verfuegbar ist, wird M1 als rekonstruierter
Golden Master aufgebaut. Die Referenz entsteht aus Legacy-Code, Screenshots und
@@ -75,8 +75,10 @@ Fuer jeden Testfall sollen erwartete Werte dokumentiert werden:
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.
4. Die wichtigsten Seiten per HTTP abrufen und auf erwartete Texte/Werte
pruefen. Erledigt mit `scripts/http-smoke.php`.
5. Danach M2 starten: technisches Fundament fuer SaaS-Struktur. M1 ist als
Sicherheitsnetz nutzbar; offene Dependency-Themen sind unten dokumentiert.
## Skripte
@@ -85,6 +87,8 @@ Fuer jeden Testfall sollen erwartete Werte dokumentiert werden:
- `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.
- `scripts/http-smoke.php`: ruft sichere GET-Seiten per HTTP ab und prueft auf
HTTP 200, erwartete Texte und PHP-Fehlermarker.
## Ausfuehrung
@@ -93,6 +97,7 @@ Mit normal installierter PHP-CLI:
```bash
php scripts/seed-golden-master.php
php scripts/check-golden-master.php
php scripts/http-smoke.php
```
In der aktuellen lokalen Umgebung mit entpacktem PHP:
@@ -107,6 +112,11 @@ 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
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/http-smoke.php
```
Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`,
@@ -127,6 +137,28 @@ Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`,
| Aktiver Hinweis | `[GM] Aktiver Hinweis fuer Golden-Master-Test` |
| Abgelaufener Hinweis | `[GM] Abgelaufener Hinweis fuer Golden-Master-Test` |
## HTTP-Smoke-Abdeckung
Der HTTP-Smoke-Test prueft nur GET-Seiten ohne bekannte Schreib- oder
Versand-Nebenwirkungen.
| Seite | Erwartung |
| --- | --- |
| `index.php` | Dashboard laedt fuer `Test Admin` |
| `stricheintragen.php` | Stricherfassung laedt |
| `einzahlung.php` | Einzahlungserfassung laedt |
| `kaffeeliste.php` | Gesamtuebersicht laedt |
| `mitarbeiterverwalten.php` | Mitgliederverwaltung inkl. `PayPal-Name` laedt |
| `letzteneintraege.php` | letzte Einzahlungen und Striche laden |
| `csvupload.php` | CSV-Upload-Formular laedt |
| `hinweise.php` | Hinweisverwaltung laedt |
| `faq.php` | FAQ laedt |
| `namenanpassen.php` | Namensanpassung laedt |
| `teilnehmerauswertung.php?user_id=1` | Teilnehmerauswertung fuer Dev-Admin laedt |
| `mailausgebe.php` | Mailadress-Ausgabe laedt |
| `umfrage.php` | geschlossene Umfrage laedt |
| `umfrageergebnisse.php` | Umfrageauswertung laedt |
## Akzeptanzkriterien
- Testdaten sind reproduzierbar.
@@ -134,13 +166,42 @@ Die Skripte erwarten die bekannten Dev-Umgebungsvariablen `DB_HOST`, `DB_NAME`,
- Salden und Jahreswerte sind automatisch pruefbar.
- CSV-Importfaelle sind fachlich abgedeckt.
- Die wichtigsten UI-Seiten liefern HTTP 200 ohne PHP-Warnings.
- Seiten mit Schreib- oder Versand-Nebenwirkungen werden nicht automatisch per
GET ausgefuehrt, sondern als Risiko dokumentiert.
## Gefundene Fehler und Bewertung
Im M1-Abschlusslauf wurden folgende Punkte geprueft:
- `number_format(null)` in `kaffeeliste.php`: behoben; leere Summen werden als
`0` behandelt.
- `paypalname` in der Mitgliederverwaltung: eingepflegt und im Golden Master
abgedeckt.
- `umfrage.php`: `mb_strtolower()` ist in der lokalen PHP-Umgebung nicht
verfuegbar; Fallback auf `strtolower()` ergaenzt.
- `exportKaffeeliste.php`: Pfad auf `TCPDF/tcpdf.php` korrigiert. Der Export
bleibt trotzdem als bekannter Dependency-Fehler offen, weil die TCPDF-Kopie im
Repo unvollstaendig ist und `TCPDF/include/tcpdf_font_data.php` fehlt.
- `mailversenden.php`: nicht automatisch per HTTP ausgefuehrt, weil ein GET bei
vollstaendiger PHPMailer-Installation E-Mails versenden kann. Zusaetzlich ist
die PHPMailer-Kopie im Repo unvollstaendig.
- `jahresauswertung.php`: nicht automatisch per HTTP ausgefuehrt, weil ein GET
Jahresbuchungen schreiben und E-Mails versenden kann. Zusaetzlich ist die
PHPMailer-Kopie im Repo unvollstaendig.
## Aktueller Pruefstatus
Stand 2026-07-11:
Stand 2026-07-12:
- `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.
- `scripts/http-smoke.php` erfolgreich gegen `http://127.0.0.1:8080`
ausgefuehrt.
- Ergebnis: 14 sichere Seiten bestanden ohne `Deprecated`, `Warning`,
`Fatal error`, `Parse error`, `Notice` oder `Uncaught Error`.
- Bekannter offener Punkt: PDF-Export wegen unvollstaendiger TCPDF-Abhaengigkeit.
- Bewusst nicht automatisch ausgefuehrt: `mailversenden.php` und
`jahresauswertung.php`, da GET dort Nebenwirkungen haben kann.
+17 -6
View File
@@ -281,7 +281,7 @@ Uebersicht:
| Meilenstein | Schwerpunkt | Hauptergebnis |
| --- | --- | --- |
| M0 | Baseline | Bestand, Sicherheit und Designreferenz sind dokumentiert |
| M1 | Golden Master | Legacy-Ergebnisse sind als Vergleichsbasis eingefroren |
| M1 | Golden Master | Legacy-Ergebnisse sind als Vergleichsbasis eingefroren; HTTP-Smoke prueft sichere Seiten |
| M2 | Technisches Fundament | Public-/App-Struktur, Bootstrap, Session und CSRF stehen |
| M3 | SaaS-Basis | Tenants, User, Registrierung, Login und Rollen funktionieren |
| M4 | Datenmigration | Legacy-Daten sind tenant-sicher im Zielmodell abgebildet |
@@ -335,23 +335,33 @@ Bestand liefern.
Schritte:
- Referenzdatensatz aus Legacy erzeugen.
- Referenzdatensatz aus Legacy erzeugen. Erledigt als rekonstruierter Golden
Master in der MySQL-Dev-Datenbank.
- Pro Mitglied berechnen: Gesamteinzahlungen, Gesamtausgaben, Gesamtstriche,
aktueller Stand, Jahreswerte.
- PDF-/Export-Summen als Referenz sichern.
- CSV-Importfaelle sammeln: Treffer, Dubletten, unbekannte Namen.
aktueller Stand, Jahreswerte. Erledigt mit `scripts/check-golden-master.php`.
- CSV-Importfaelle sammeln: Treffer, Dubletten, unbekannte Namen. Erledigt im
Golden-Master-Check.
- Testfaelle fuer Guthaben, Schulden, Nullsaldo und inaktive Teilnehmer
anlegen.
anlegen. Erledigt.
- Sichere GET-Seiten per HTTP-Smoke pruefen. Erledigt mit
`scripts/http-smoke.php`.
- PDF-/Export-Summen als Referenz sichern. Offen, weil die TCPDF-Kopie im Repo
unvollstaendig ist.
Ergebnis:
- Golden-Master-Daten.
- Vergleichsqueries oder Vergleichsskript.
- HTTP-Smoke-Test fuer sichere UI-Seiten.
- Akzeptanzkriterien fuer Migration und neue App.
- Dokumentierte offene Punkte: PDF-Export/TCPDF, PHPMailer-Abhaengigkeit,
GET-Nebenwirkungen bei Mailversand und Jahresauswertung.
Abhaengigkeiten:
- M0 abgeschlossen.
- PDF-/Mail-/Jahresprozesse werden in M6 gezielt neu gestaltet, statt sie in M1
per GET-Smoke auszufuehren.
### M2: Technisches Fundament
@@ -608,6 +618,7 @@ UX-Pruefungen:
| Bestehendes Design driftet weg | Designreferenz und App-Komponenten definieren |
| CSV-Upload unsicher | Upload ausserhalb Webroot, Dateityppruefung, Importvorschau |
| Mailversand nicht nachvollziehbar | Versandlog, Dry-Run, Job-Status |
| Unvollstaendige Vendor-Kopien fuer PDF/Mail | Dependencies sauber vendoren oder ersetzen, Smoke-Tests danach erweitern |
| AD/LDAP blockiert SaaS-Onboarding | E-Mail/Passwort als Basis, SSO spaeter optional |
| Kein DB-Schema im Repo | Schema exportieren und Migrationen einfuehren |