M3 SaaS-Basis mit Default-Tenant vorbereiten
- Tenant/User/Membership/Participant-Tabellen additiv migrieren - Default-Tenant-Backfill fuer Legacy-Mitarbeiter und Admins ergaenzen - M3-Kontrollskript und Plan-Dokumentation aktualisieren
This commit is contained in:
@@ -24,9 +24,9 @@ das neue Modell umgestellt.
|
||||
- Kein Billing, keine Tarife, keine E-Mail-Verifikation im ersten Schritt.
|
||||
- Kein produktiver Tenant-Wechsel in bestehenden Legacy-Seiten.
|
||||
|
||||
## Vorgeschlagene Migration
|
||||
## Umgesetzter erster Schritt
|
||||
|
||||
Naechste Migration:
|
||||
Umgesetzte Migration:
|
||||
|
||||
```text
|
||||
database/migrations/0002_saas_identity_tenants.sql
|
||||
@@ -40,6 +40,13 @@ Tabellen:
|
||||
- `tenant_memberships`
|
||||
- `participants`
|
||||
|
||||
Ergaenzende Skripte:
|
||||
|
||||
```text
|
||||
scripts/backfill-default-tenant.php
|
||||
scripts/check-m3-saas-basis.php
|
||||
```
|
||||
|
||||
Wichtige Regeln:
|
||||
|
||||
- `users` sind Login-Konten.
|
||||
@@ -49,6 +56,8 @@ Wichtige Regeln:
|
||||
- `participants.legacy_mitarbeiter_id` speichert die alte ID aus
|
||||
`kl_Mitarbeiter`.
|
||||
- Geldwerte in neuen Settings als Cent-Integer speichern.
|
||||
- Die Migration ist rein additiv; bestehende Legacy-Seiten fragen weiter die
|
||||
bisherigen `kl_*`-Tabellen ab.
|
||||
|
||||
## Default-Tenant
|
||||
|
||||
@@ -65,9 +74,9 @@ currency_code: EUR
|
||||
|
||||
Die Werte koennen spaeter in einer Tenant-Einstellungsseite angepasst werden.
|
||||
|
||||
## Backfill-Vorschlag
|
||||
## Backfill
|
||||
|
||||
Ein separates Skript sollte die bestehenden Mitarbeiter spiegeln:
|
||||
Ein separates Skript spiegelt die bestehenden Mitarbeiter:
|
||||
|
||||
```text
|
||||
scripts/backfill-default-tenant.php
|
||||
@@ -87,15 +96,24 @@ Vorgang:
|
||||
Der Backfill muss idempotent sein und darf keine bestehenden Legacy-Daten
|
||||
loeschen.
|
||||
|
||||
Ausgefuehrter Dev-Stand:
|
||||
|
||||
- Default-Tenant `default` wurde angelegt.
|
||||
- 9 Legacy-Mitarbeiter wurden als `participants` gespiegelt.
|
||||
- 2 aktive Admin-/Owner-Logins wurden als `users` und
|
||||
`tenant_memberships` angelegt.
|
||||
- Ein zweiter Backfill-Lauf blieb idempotent.
|
||||
|
||||
## Erste Akzeptanzkriterien
|
||||
|
||||
- Migrationen laufen mehrfach ohne Fehler.
|
||||
- Default-Tenant existiert genau einmal.
|
||||
- `tenant_settings` enthalten Preis pro Strich und bestehende PayPal-Optionen.
|
||||
- Jeder bestehende `kl_Mitarbeiter` hat genau einen `participant`.
|
||||
- `participants.legacy_mitarbeiter_id` ist gesetzt.
|
||||
- Admins werden als tenant-scoped Rolle abgebildet.
|
||||
- Golden-Master und HTTP-Smoke bleiben gruen.
|
||||
- Migrationen laufen mehrfach ohne Fehler: erfuellt.
|
||||
- Default-Tenant existiert genau einmal: erfuellt.
|
||||
- `tenant_settings` enthalten Preis pro Strich und bestehende PayPal-Optionen:
|
||||
erfuellt.
|
||||
- Jeder bestehende `kl_Mitarbeiter` hat genau einen `participant`: erfuellt.
|
||||
- `participants.legacy_mitarbeiter_id` ist gesetzt: erfuellt.
|
||||
- Admins werden als tenant-scoped Rolle abgebildet: erfuellt.
|
||||
- Golden-Master und HTTP-Smoke bleiben gruen: erfuellt.
|
||||
|
||||
## Risiken
|
||||
|
||||
@@ -109,10 +127,9 @@ loeschen.
|
||||
|
||||
## Empfohlene Reihenfolge
|
||||
|
||||
1. Migration `0002_saas_identity_tenants.sql` erstellen.
|
||||
2. `scripts/backfill-default-tenant.php` erstellen.
|
||||
3. Backfill gegen die Dev-Datenbank ausfuehren.
|
||||
4. Kontrollskript fuer Tenant/Participant/Role-Counts schreiben.
|
||||
5. Golden-Master und HTTP-Smoke ausfuehren.
|
||||
6. Danach Login-/Registrierungsrouten planen.
|
||||
|
||||
1. Migration `0002_saas_identity_tenants.sql` erstellen: erledigt.
|
||||
2. `scripts/backfill-default-tenant.php` erstellen: erledigt.
|
||||
3. Backfill gegen die Dev-Datenbank ausfuehren: erledigt.
|
||||
4. Kontrollskript fuer Tenant/Participant/Role-Counts schreiben: erledigt.
|
||||
5. Golden-Master und HTTP-Smoke ausfuehren: erledigt.
|
||||
6. Danach Login-/Registrierungsrouten planen: naechster Schritt.
|
||||
|
||||
Reference in New Issue
Block a user