> - **CLOSED** didefinisikan di enum tapi **tidak ada implementasi** — tidak ada endpoint/code path yang mengarah ke status ini
> - **UNASSIGNED ← ASSIGNED (BLOCKED)** — kode secara eksplisit throw error: *"Status cannot be changed to unassigned, you must resolve or reassign to another member."*
> - **RESOLVED tidak bisa di-reopen** — customer reply setelah RESOLVED akan membuat **conversation BARU** dengan status UNASSIGNED, bukan membuka kembali yang lama
> - **Chain Mechanism**: Conversation baru di-link ke conversation lama via `previousConversationId` (linked list)
> - **RESOLVED tidak bisa di-resolve ulang** — kode throw `ConversationAlreadyResolvedError`
> - **Hanya agent yang di-assign** yang bisa resolve conversation-nya sendiri
> - **Pesan ke conversation RESOLVED diblok** — kode throw `ConversationAlreadyResolvedError`
### State Diagram
```mermaid
```mermaid
stateDiagram-v2
stateDiagram-v2
[*] --> UNASSIGNED: Customer sends first message
[*] --> UNASSIGNED: Webhook menerima pesan dari customer<br/>(WA / IG / TG)<br/>→ createConversation()<br/>status: UNASSIGNED
UNASSIGNED --> ASSIGNED: ③ Auto-Assign (WhatsApp)<br/>Agent kirim pesan → otomatis assign<br/>(di-trigger saat WA status: SENT,<br/>skipped untuk campaign blast)
RESOLVED --> ASSIGNED: Customer replies<br/>(new message in chain)
ASSIGNED --> ASSIGNED: Reassign ke agent lain<br/>PATCH /conversations/:id/status<br/>(member: hanya miliknya,<br/>admin/owner: semua)