M6: CSV-Import mit Vorschau, Dublettenpruefung und Audit-Trail
csvupload.php verarbeitete CSV-Zeilen bisher sofort beim Upload, ohne Vorschau, ohne Zugriffskontrolle (nur CSRF) und schrieb ausschliesslich in die global unscoped kl_Einzahlungen-Tabelle. - Neue Tabellen payment_import_batches/payment_import_rows protokollieren jeden Import: Datei, Pruefsumme, jede Zeile mit Rohwerten, erkanntem Mitglied, Status und erzeugter Ledger-Zeile. - Zweistufiger Ablauf: Hochladen zeigt nur eine Vorschau (matched/ duplicate/unmatched/invalid), erst "Import bestaetigen" bucht. - Zuordnung per paypal_name oder display_name (tenant-scoped), Dubletten- pruefung gegen bestehende nicht-stornierte Ledger-Zahlungen. - Buchung folgt dem etablierten Zweig-Muster: Default-Mandant per Dual-Write nach kl_Einzahlungen plus Spiegelung, alle anderen Mandanten direkt ueber ledger_record_payment(). - Zugriffskontrolle ergaenzt (owner/admin/treasurer + Legacy-Fallback). - Live getestet: Treffer, unbekannter Name, ungueltiger Betrag korrekt klassifiziert; Import bestaetigt mit korrektem Dual-Write; erneuter Upload derselben Datei erkennt die Zeile korrekt als Dublette. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -306,7 +306,7 @@ Nicht tun:
|
||||
| M3 | SaaS-Basis | Abgeschlossen: Tenants, User, Registrierung, Login, Rollen, Mail-Links und zentrale Mandantenauswahl funktionieren |
|
||||
| M4 | Datenmigration | Gestartet: Ledger-Tabelle, Legacy-Backfill, Paritätscheck, Ledger-Service und Preview sind umgesetzt |
|
||||
| M5 | App-Kern | Weit fortgeschritten: Kernseiten lesen und schreiben tenant-sicher gegen das Ledger, inklusive Hinweise und rollenbasiertem Zugang; offen ist ein eigener Zahlungs-Screen |
|
||||
| M6 | Betriebsflows | Import, Export, Mail und Jahresprozesse sind auditierbar |
|
||||
| M6 | Betriebsflows | Gestartet: CSV-Import mit Vorschau/Dublettenprüfung steht; Export, Mail und Jahresprozesse offen |
|
||||
| M7 | Landingpage | Public-Seite und Auth-Seiten sind im gemeinsamen Stil nutzbar; spätere Ausbaustufen folgen |
|
||||
| M8 | Härtung | Betrieb, Datenschutz, Monitoring und Isolation sind geprüft |
|
||||
| M9 | Cutover | Produktivumstellung ist vorbereitet und Legacy ist read-only |
|
||||
@@ -565,8 +565,13 @@ Admin- und Treasurer-Flows produktionsreif machen.
|
||||
|
||||
Schritte:
|
||||
|
||||
- CSV-Import mit Vorschau, Dublettenprüfung und Audit bauen.
|
||||
- Uploads außerhalb des Webroots speichern.
|
||||
- CSV-Import mit Vorschau, Dublettenprüfung und Audit bauen: erledigt.
|
||||
Neue Tabellen `payment_import_batches`/`payment_import_rows`,
|
||||
zweistufiger Ablauf (Vorschau vor Buchung), Zuordnung per PayPal-Name
|
||||
oder Anzeigename, Dublettenprüfung gegen bestehende Ledger-Zahlungen.
|
||||
`csvupload.php` hatte zuvor keine Zugriffskontrolle; das ist behoben.
|
||||
- Uploads außerhalb des Webroots speichern: erledigt (bereits in M2,
|
||||
weiterhin genutzt).
|
||||
- PDF-/Listenexport aus neuem Datenmodell bauen.
|
||||
- Mailversand als nachvollziehbaren Versandjob mit Dry-Run und Versandlog
|
||||
gestalten.
|
||||
@@ -576,6 +581,7 @@ Ergebnis:
|
||||
|
||||
- Kassenverwaltung ist für reale Betriebsabläufe vollständig.
|
||||
- Import/Export/Mail sind auditierbar.
|
||||
- Stand: gestartet. Dokumentation: `docs/m6-import-export-mail.md`.
|
||||
|
||||
Abhängigkeiten:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user