M5 Kaffeeliste read-only auf Ledger umstellen

- kaffeeliste.php aus ledger_fetch_participant_summaries lesen lassen
- Legacy-Teilnehmerlinks ueber legacy_mitarbeiter_id erhalten
- Sidebar-Zugriff fuer Legacy-Admin und SaaS-Rollen trennen
- Smoke-Test um konkrete Ledger-Werte und Inaktiv-Ausschluss erweitern
- M5-App-Kern-Doku ergaenzen
This commit is contained in:
2026-07-14 21:32:59 +02:00
parent 1aa4a4989e
commit f9544f24fd
8 changed files with 216 additions and 137 deletions
+1 -1
View File
@@ -151,7 +151,7 @@ Installation aus `.local/` verwendet werden.
## Aktueller Pruefstatus
- M4 Ledger-Migration: gruen mit 73 Assertions.
- M4 Ledger-Service: gruen mit 102 Assertions.
- M4 Ledger-Service: gruen mit 110 Assertions.
- M3 SaaS-Basis: weiterhin gruen.
- M3 Tenant-Aufloesung: weiterhin gruen.
- M3 Passwort/E-Mail: weiterhin gruen.
+52
View File
@@ -0,0 +1,52 @@
# M5 App-Kern
Stand: 2026-07-14
M5 stellt die operativen App-Seiten schrittweise auf das neue tenant-sichere
Modell um. Der Start erfolgt bewusst read-only, damit Summen, Links und
Darstellung gegen die bestehende Legacy-Oberflaeche vergleichbar bleiben.
## Ziel
- Kernseiten aus `app/ledger.php` lesen lassen.
- Bestehendes Tabellenlayout und Bediengefuehl erhalten.
- Schreibende Legacy-Flows erst nach stabiler Leseparitaet umstellen.
- Tenant-Kontext serverseitig bestimmen, nicht aus Formularfeldern.
## Umgesetzter erster Schritt
Umgesetzte Datei:
```text
kaffeeliste.php
```
Umgesetzter Umfang:
- Die Gesamtuebersicht liest aktive Teilnehmer aus
`ledger_fetch_participant_summaries()`.
- Angezeigte Werte bleiben fachlich gleich: aktueller Stand, Gesamtausgabe,
Gesamtstriche und Gesamteinzahlungen.
- Links zur bestehenden `teilnehmerauswertung.php` bleiben ueber
`participants.legacy_mitarbeiter_id` erhalten.
- Owner, Admin und Treasurer duerfen die SaaS-Ansicht lesen.
- Der lokale Legacy-/Dev-Admin-Fallback nutzt nur ohne SaaS-Session den
Default-Tenant.
- Die Sidebar zeigt Legacy-Schreibseiten weiterhin nur fuer Legacy-Admins;
Ledger-Leseansichten sind fuer passende SaaS-Rollen sichtbar.
- Export, letzte Eintraege, CSV-Upload und Info-Mail bleiben noch Legacy-Flows.
## Noch offen
- `teilnehmerauswertung.php` lesend auf Ledger umstellen.
- `index.php` Dashboard lesend auf Ledger umstellen.
- Schreibseiten `stricheintragen.php` und `einzahlung.php` erst danach mit
Storno-/Reversal-Strategie vorbereiten.
- Export, Mail und Jahresprozesse bleiben M6-Themen.
## Aktueller Pruefstatus
- M4 Ledger-Migration: gruen mit 73 Assertions.
- M4 Ledger-Service: gruen mit 110 Assertions.
- Golden Master: gruen mit 104 Assertions.
- HTTP-Smoke: gruen mit 23 geprueften Seiten.
+4 -2
View File
@@ -305,7 +305,7 @@ Uebersicht:
| M2 | Technisches Fundament | Abgeschlossen: Migrationen, Bootstrap, Session, CSRF-Helper und Legacy-Schreibseitenschutz stehen |
| M3 | SaaS-Basis | Abgeschlossen: Tenants, User, Registrierung, Login, Rollen, Mail-Links und zentrale Mandantenauswahl funktionieren |
| M4 | Datenmigration | Gestartet: Ledger-Tabelle, Legacy-Backfill, Paritaetscheck, Ledger-Service und Preview sind umgesetzt |
| M5 | App-Kern | Dashboard, Striche, Einzahlungen, Mitglieder und Liste laufen |
| M5 | App-Kern | Gestartet: Gesamtuebersicht liest read-only aus dem Ledger |
| M6 | Betriebsflows | Import, Export, Mail und Jahresprozesse sind auditierbar |
| M7 | Landingpage | Public-Seite und Auth-Seiten sind im gemeinsamen Stil nutzbar; spaetere Ausbaustufen folgen |
| M8 | Haertung | Betrieb, Datenschutz, Monitoring und Isolation sind geprueft |
@@ -509,7 +509,8 @@ Schritte:
- Eigene Stricherfassung umsetzen.
- Zahlungs-/PayPal-Bereich umsetzen.
- Mitgliederverwaltung tenant- und rollenbasiert umsetzen.
- Gesamtuebersicht umsetzen.
- Gesamtuebersicht umsetzen: erster read-only Stand in `kaffeeliste.php`
erledigt.
- Letzte Eintraege und Korrekturen als Storno statt Delete umsetzen.
- Hinweise als tenant-spezifische Notices umsetzen.
@@ -517,6 +518,7 @@ Ergebnis:
- Ein Kunde kann seine Kaffeeliste operativ nutzen.
- App sieht weiterhin nach bestehender Kaffeeliste aus.
- Erster M5-Stand ist in `docs/m5-app-kern.md` dokumentiert.
Abhaengigkeiten: