Account Lifecycle

Siklus akun — dari registrasi, aktivasi, sampai penghapusan.

stateDiagram-v2
    [*] --> Registered: Sign up (email + phone)

    state Registered {
        [*] --> Active: Login & verify
    }

    state Active {
        [*] --> CustomerMode: Default mode
        [*] --> DBMode: Toggle ke DB
        CustomerMode --> DBMode: Toggle
        DBMode --> CustomerMode: Toggle
    }

    Active --> ForgotPassword: Lupa password
    ForgotPassword --> Active: Reset password sukses

    Active --> Deactivated: Deactivate account
    Deactivated --> Active: Reactivate (data tetap ada)

    Active --> DeleteRequest: Delete account
    DeleteRequest --> Deleted: Permanent removal
    Deleted --> [*]: Data permanently removed<br/>Cannot be undone

    state InactivityPolicy {
        Inactive6mo --> EmailReminder
        EmailReminder --> LoggedIn: Login → kembali aktif
        EmailReminder --> NoLogin: No login 6+ bln lagi
        NoLogin --> PermanentDelete: Akun dihapus +<br/>saldo hangus
    }

    Active --> Inactive6mo: No activity 6 months

Catatan: User bisa punya dual-role (Customer & DB) dalam satu akun Send App. Merchant punya app terpisah (SendMerchant).

diagrams/customers/08-account-lifecycle.md
# Account Lifecycle

Siklus akun — dari registrasi, aktivasi, sampai penghapusan.

```mermaid
stateDiagram-v2
    [*] --> Registered: Sign up (email + phone)

    state Registered {
        [*] --> Active: Login & verify
    }

    state Active {
        [*] --> CustomerMode: Default mode
        [*] --> DBMode: Toggle ke DB
        CustomerMode --> DBMode: Toggle
        DBMode --> CustomerMode: Toggle
    }

    Active --> ForgotPassword: Lupa password
    ForgotPassword --> Active: Reset password sukses

    Active --> Deactivated: Deactivate account
    Deactivated --> Active: Reactivate (data tetap ada)

    Active --> DeleteRequest: Delete account
    DeleteRequest --> Deleted: Permanent removal
    Deleted --> [*]: Data permanently removed<br/>Cannot be undone

    state InactivityPolicy {
        Inactive6mo --> EmailReminder
        EmailReminder --> LoggedIn: Login → kembali aktif
        EmailReminder --> NoLogin: No login 6+ bln lagi
        NoLogin --> PermanentDelete: Akun dihapus +<br/>saldo hangus
    }

    Active --> Inactive6mo: No activity 6 months
```

**Catatan:** User bisa punya dual-role (Customer & DB) dalam satu akun Send App. Merchant punya app terpisah (SendMerchant).