Statemachine-Atlas: 6 Zustände, 6 Übergänge

Entity-Statemachines aus planung_entitaet_zustand und planung_zustand_uebergang. Zeigt Lebenszyklus pro fachlicher Entitaet (z.B. magic_code: requested → sent → verified → consumed/expired/blocked).

Entität: magic_code

Zustände (6)

ZustandInitialFinalFehlerBeschreibung
requested JA Code wurde angefragt, noch nicht generiert
sent Code generiert, persistiert, Mail-Queue
verified Vorpruefung bestanden (vor atomarem UPDATE)
blocked JAJA Zu viele Fehlversuche oder Manipulation
consumed JA Atomar eingeloest, used_at gesetzt
expired JA Ablaufzeit erreicht, nicht mehr gueltig

Übergänge (6)

VonNachProzessSchrittAuslöserBedingung
sentblocked magic_code_login 2: Rate-Limit pro E-Mail prüfen rate_limit_ueberschritten attempts_count > 5
requestedsent magic_code_login 5: Magic-Code im Datensatz speichern code_persistiert
sentverified magic_code_login 9: Atomare Code-Einloesung: Pruefen UND Markieren in einer Transaktion code_match_pre_check Code stimmt, expires_at>NOW
verifiedconsumed magic_code_login 9: Atomare Code-Einloesung: Pruefen UND Markieren in einer Transaktion atomares_update affected_rows=1
sentexpired magic_code_login 9: Atomare Code-Einloesung: Pruefen UND Markieren in einer Transaktion expires_at_erreicht expires_at < NOW
verifiedblocked magic_code_login 9: Atomare Code-Einloesung: Pruefen UND Markieren in einer Transaktion concurrent_attempt affected_rows=0 trotz Vorpruefung OK