chore: initial project import
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled
Some checks failed
CI - Production Readiness / Verify (push) Has been cancelled
This commit is contained in:
502
screen-flow-whatsapp-inbox.md
Normal file
502
screen-flow-whatsapp-inbox.md
Normal file
@ -0,0 +1,502 @@
|
||||
# Screen Flow WhatsApp Inbox MVP
|
||||
|
||||
Dokumen ini menjabarkan `screen flow` utama untuk WhatsApp Inbox MVP berdasarkan role dan use case paling penting.
|
||||
|
||||
Tujuan dokumen:
|
||||
- membantu desain prototype dan wireflow
|
||||
- menjelaskan urutan perpindahan layar
|
||||
- menandai action, keputusan, dan state penting
|
||||
- memudahkan mapping route dan prioritas build
|
||||
|
||||
## 1. Cara Membaca Dokumen
|
||||
|
||||
Format flow:
|
||||
|
||||
`Screen A -> action -> Screen B -> action -> Screen C`
|
||||
|
||||
Catatan:
|
||||
- jika sebuah langkah lebih cocok sebagai modal, drawer, atau side panel, itu disebutkan di bawah flow
|
||||
- jika ada kondisi berhasil/gagal, dicatat sebagai state
|
||||
- fokus dokumen ini adalah MVP, bukan flow lanjutan post-MVP
|
||||
|
||||
## 2. Public / Auth Flow
|
||||
|
||||
### 2.1 Login Flow
|
||||
|
||||
Tujuan:
|
||||
- user masuk ke sistem sesuai role dan tenant
|
||||
|
||||
Flow:
|
||||
`Login -> submit credentials -> Role-based Dashboard`
|
||||
|
||||
Kemungkinan hasil:
|
||||
- valid -> masuk dashboard sesuai role
|
||||
- invalid -> tetap di `Login` dengan error alert
|
||||
- account disabled -> tetap di `Login` dengan status message
|
||||
|
||||
Screen terlibat:
|
||||
- Login
|
||||
- Dashboard Super Admin atau Dashboard Admin Client atau Dashboard Agent
|
||||
|
||||
### 2.2 Forgot Password Flow
|
||||
|
||||
Flow:
|
||||
`Login -> klik Forgot Password -> Forgot Password -> submit email -> Reset Request Sent`
|
||||
|
||||
State:
|
||||
- email valid -> tampil success info
|
||||
- email tidak ditemukan -> bisa tetap tampil generic success agar aman
|
||||
|
||||
### 2.3 Reset Password Flow
|
||||
|
||||
Flow:
|
||||
`Email Reset Link -> Reset Password -> submit new password -> Login`
|
||||
|
||||
State:
|
||||
- token valid -> reset berhasil
|
||||
- token expired/invalid -> `Reset Password` menampilkan expired state
|
||||
|
||||
### 2.4 Invitation Acceptance Flow
|
||||
|
||||
Flow:
|
||||
`Invitation Link -> Invitation Acceptance -> set full name & password -> submit -> Login atau langsung Dashboard`
|
||||
|
||||
Catatan:
|
||||
- keputusan final apakah setelah invite masuk ke login atau langsung dashboard bisa ditentukan saat desain sistem auth
|
||||
|
||||
## 3. Shared Global Flow
|
||||
|
||||
### 3.1 Open Profile Flow
|
||||
|
||||
Flow:
|
||||
`Any App Screen -> klik Profile Menu -> Profile Menu -> pilih My Profile -> My Profile`
|
||||
|
||||
Lanjutan:
|
||||
`My Profile -> klik Edit Profile -> Edit Profile -> save -> My Profile`
|
||||
|
||||
### 3.2 Change Password Flow
|
||||
|
||||
Flow:
|
||||
`Profile Menu -> Change Password -> submit -> success -> kembali ke screen sebelumnya atau tetap di Change Password`
|
||||
|
||||
### 3.3 Unauthorized Flow
|
||||
|
||||
Flow:
|
||||
`Restricted Route -> authorization check failed -> Unauthorized / Forbidden`
|
||||
|
||||
## 4. Super Admin Flow
|
||||
|
||||
## 4.1 Onboard Tenant Baru
|
||||
|
||||
Tujuan:
|
||||
- membuat tenant baru agar siap dipakai client
|
||||
|
||||
Flow utama:
|
||||
`Super Admin Dashboard -> Tenants List -> klik Create Tenant -> Create Tenant -> submit -> Tenant Detail`
|
||||
|
||||
Lanjutan:
|
||||
`Tenant Detail -> lihat invitation/admin setup status`
|
||||
|
||||
State penting:
|
||||
- sukses buat tenant
|
||||
- slug sudah dipakai
|
||||
- field wajib belum lengkap
|
||||
|
||||
UI notes:
|
||||
- `Create Tenant` bisa halaman penuh atau modal besar
|
||||
- setelah sukses, paling masuk akal diarahkan ke `Tenant Detail`
|
||||
|
||||
## 4.2 Edit Tenant
|
||||
|
||||
Flow:
|
||||
`Tenants List -> Tenant Detail -> klik Edit Tenant -> Edit Tenant -> save -> Tenant Detail`
|
||||
|
||||
## 4.3 Suspend / Reactivate Tenant
|
||||
|
||||
Flow:
|
||||
`Tenant Detail -> klik Suspend/Reactivate -> Confirmation Modal -> confirm -> Tenant Detail`
|
||||
|
||||
State:
|
||||
- status tenant berubah
|
||||
- audit log tercatat
|
||||
|
||||
## 4.4 Hubungkan Channel WhatsApp Tenant
|
||||
|
||||
Tujuan:
|
||||
- mengaktifkan channel WhatsApp tenant
|
||||
|
||||
Flow utama:
|
||||
`Tenant Detail -> tab/section Channel Status -> klik Connect Channel -> Connect Channel -> submit config -> Connection Validation Result -> Channel Detail`
|
||||
|
||||
Kemungkinan hasil:
|
||||
- valid -> `Channel Detail` status connected
|
||||
- invalid -> tetap di `Connect Channel` dengan error detail
|
||||
|
||||
UI notes:
|
||||
- `Connection Validation Result` bisa berupa inline result state atau dedicated result screen
|
||||
|
||||
## 4.5 Monitor Kesehatan Platform
|
||||
|
||||
Flow:
|
||||
`Super Admin Dashboard -> klik alert/widget -> Channel List atau Platform Reports atau Audit Log`
|
||||
|
||||
Contoh cabang flow:
|
||||
- `Dashboard -> disconnected channels widget -> Channel List -> Channel Detail`
|
||||
- `Dashboard -> subscription health widget -> Tenant Subscription List -> Tenant Detail`
|
||||
- `Dashboard -> delivery failures widget -> Platform Reports`
|
||||
|
||||
## 4.6 Kelola Subscription Tenant
|
||||
|
||||
Flow:
|
||||
`Super Admin Dashboard atau Subscription List -> Tenant Subscription List -> pilih tenant -> Tenant Detail atau Invoice Detail`
|
||||
|
||||
Lanjutan:
|
||||
`Tenant Detail -> ubah plan -> plan update form/modal -> save -> Tenant Detail`
|
||||
|
||||
## 4.7 Audit dan Investigasi Event
|
||||
|
||||
Flow:
|
||||
`Super Admin Dashboard -> Audit Log -> filter event -> Log Detail`
|
||||
|
||||
Lanjutan lain:
|
||||
`Super Admin Dashboard -> API / Webhook Logs -> pilih event -> Webhook Log Detail`
|
||||
|
||||
## 5. Admin Client Flow
|
||||
|
||||
## 5.1 Login dan Masuk Dashboard Harian
|
||||
|
||||
Tujuan:
|
||||
- admin melihat kondisi operasional tenant
|
||||
|
||||
Flow:
|
||||
`Login -> Admin Dashboard`
|
||||
|
||||
Cabang cepat dari dashboard:
|
||||
- `Dashboard -> klik Open Conversations -> Shared Inbox`
|
||||
- `Dashboard -> klik Agent Workload -> Team Performance Snapshot`
|
||||
- `Dashboard -> klik Broadcast Performance -> Campaign List atau Campaign Detail`
|
||||
- `Dashboard -> klik Contact Growth -> Contact List atau Contact Growth Report`
|
||||
|
||||
## 5.2 Review Shared Inbox dan Distribusi Conversation
|
||||
|
||||
Ini flow operasional paling penting.
|
||||
|
||||
Flow utama:
|
||||
`Admin Dashboard atau Sidebar -> Shared Inbox -> pilih conversation -> Conversation Detail`
|
||||
|
||||
Cabang aksi dari `Conversation Detail`:
|
||||
- `Conversation Detail -> assign/reassign -> Assignment Panel/Modal -> save -> Conversation Detail`
|
||||
- `Conversation Detail -> change status -> status action -> Conversation Detail`
|
||||
- `Conversation Detail -> add tag -> tag selector -> save -> Conversation Detail`
|
||||
- `Conversation Detail -> add internal note -> note input -> save -> Conversation Detail`
|
||||
- `Conversation Detail -> reply -> send -> Conversation Detail`
|
||||
|
||||
State penting:
|
||||
- belum ada conversation dipilih
|
||||
- inbox kosong
|
||||
- channel disconnected
|
||||
- outbound failed
|
||||
|
||||
## 5.3 Assign Conversation ke Agent
|
||||
|
||||
Flow:
|
||||
`Shared Inbox -> Conversation Detail -> klik Assign -> Assignment Panel -> pilih agent -> confirm -> Conversation Detail`
|
||||
|
||||
Hasil:
|
||||
- assigned user tampil di header/panel
|
||||
- activity log bertambah
|
||||
|
||||
## 5.4 Ubah Status Conversation
|
||||
|
||||
Flow:
|
||||
`Conversation Detail -> Status Selector -> pilih open/pending/resolved/spam -> save -> Conversation Detail`
|
||||
|
||||
Lanjutan:
|
||||
- jika `resolved`, conversation pindah ke tab/list resolved
|
||||
- jika `spam/archive`, conversation hilang dari flow utama
|
||||
|
||||
## 5.5 Balas Pesan dari Inbox
|
||||
|
||||
Flow:
|
||||
`Shared Inbox -> Conversation Detail -> Reply Composer -> send -> Conversation Detail`
|
||||
|
||||
Alternatif:
|
||||
- `Conversation Detail -> Template Picker -> pilih template -> preview -> send -> Conversation Detail`
|
||||
- `Conversation Detail -> Quick Reply -> pilih canned response -> edit jika perlu -> send -> Conversation Detail`
|
||||
|
||||
State:
|
||||
- sending
|
||||
- sent
|
||||
- failed
|
||||
|
||||
## 5.6 Tambah Internal Note atau Tag
|
||||
|
||||
Flow note:
|
||||
`Conversation Detail -> Internal Notes -> add note -> save -> Conversation Detail`
|
||||
|
||||
Flow tag:
|
||||
`Conversation Detail -> Tags -> add/edit tag -> save -> Conversation Detail`
|
||||
|
||||
## 5.7 Tambah Contact Manual
|
||||
|
||||
Flow:
|
||||
`Contact List -> klik Add Contact -> Create Contact -> submit -> Contact Detail`
|
||||
|
||||
State:
|
||||
- nomor tidak valid
|
||||
- nomor duplikat
|
||||
- sukses tersimpan
|
||||
|
||||
## 5.8 Edit Contact
|
||||
|
||||
Flow:
|
||||
`Contact List -> Contact Detail -> klik Edit -> Edit Contact -> save -> Contact Detail`
|
||||
|
||||
## 5.9 Import Contacts
|
||||
|
||||
Flow:
|
||||
`Contact List -> klik Import -> Import Contacts -> upload CSV -> Field Mapping -> Validation Preview -> Confirm Import -> Import Result`
|
||||
|
||||
Kemungkinan hasil:
|
||||
- semua valid -> import sukses
|
||||
- sebagian gagal -> partial success + error rows
|
||||
|
||||
## 5.10 Export Contacts
|
||||
|
||||
Flow:
|
||||
`Contact List -> klik Export -> Export Contacts -> pilih filter/field -> confirm -> export result/download state`
|
||||
|
||||
## 5.11 Kelola Segments
|
||||
|
||||
Flow buat segment:
|
||||
`Contact List atau Segments List -> Create Segment -> isi rules -> save -> Segment Detail`
|
||||
|
||||
Flow edit segment:
|
||||
`Segments List -> Segment Detail -> Edit Segment -> save -> Segment Detail`
|
||||
|
||||
## 5.12 Kelola User / Agent
|
||||
|
||||
Flow buat user:
|
||||
`Team / Users List -> klik Create User -> Create User -> submit -> User Detail atau kembali ke Users List`
|
||||
|
||||
Flow edit user:
|
||||
`Users List -> User Detail -> klik Edit -> Edit User -> save -> User Detail`
|
||||
|
||||
Flow activate/deactivate:
|
||||
`Users List atau User Detail -> klik Activate/Deactivate -> Confirmation Modal -> confirm -> User Detail`
|
||||
|
||||
## 5.13 Review Laporan Operasional
|
||||
|
||||
Flow umum:
|
||||
`Admin Dashboard atau Sidebar -> Reports Overview -> pilih report -> Report Detail`
|
||||
|
||||
Cabang:
|
||||
- `Reports Overview -> Response Time Report`
|
||||
- `Reports Overview -> Resolution Report`
|
||||
- `Reports Overview -> Agent Productivity Report`
|
||||
- `Reports Overview -> Campaign Analytics Report`
|
||||
- `Reports Overview -> Contact Growth Report`
|
||||
|
||||
Pola interaksi:
|
||||
`Report Detail -> set filter -> lihat chart/table -> export jika tersedia`
|
||||
|
||||
## 5.14 Buat Campaign Broadcast
|
||||
|
||||
Ini flow operasional besar kedua setelah inbox.
|
||||
|
||||
Flow utama:
|
||||
`Campaign List -> klik Create Campaign -> Create Campaign Step 1/2/3 -> Campaign Review -> submit -> Campaign Detail`
|
||||
|
||||
Langkah yang disarankan:
|
||||
- Step 1: metadata campaign
|
||||
- Step 2: pilih channel dan template
|
||||
- Step 3: pilih audience
|
||||
- Step 4: schedule/send now
|
||||
- Review
|
||||
|
||||
Kemungkinan hasil:
|
||||
- valid -> campaign dibuat
|
||||
- template belum approved -> tetap di create flow dengan warning
|
||||
- audience kosong -> tidak bisa lanjut
|
||||
|
||||
## 5.15 Monitor Hasil Campaign
|
||||
|
||||
Flow:
|
||||
`Campaign List -> pilih campaign -> Campaign Detail -> klik Recipient List -> Campaign Recipients`
|
||||
|
||||
Lanjutan:
|
||||
`Campaign Detail -> klik error breakdown -> filtered recipient state atau failure detail`
|
||||
|
||||
## 5.16 Kelola Template
|
||||
|
||||
Flow buat template:
|
||||
`Template List -> Create Template Request -> submit -> Template Detail`
|
||||
|
||||
Flow lihat status template:
|
||||
`Template List -> pilih template -> Template Detail`
|
||||
|
||||
Flow revisi template rejected:
|
||||
`Template Detail -> klik Edit/Resubmit -> Create Template Request atau Edit Template -> submit -> Template Detail`
|
||||
|
||||
## 5.17 Review Billing Tenant
|
||||
|
||||
Flow:
|
||||
`Sidebar -> Billing & Subscription -> Billing Overview`
|
||||
|
||||
Cabang:
|
||||
- `Billing Overview -> Usage Quota Detail`
|
||||
- `Billing Overview -> Billing History`
|
||||
- `Billing History -> Invoice Detail`
|
||||
|
||||
## 5.18 Review Audit Log Tenant
|
||||
|
||||
Flow:
|
||||
`Sidebar -> Audit Log -> filter event -> Log Detail Drawer/Modal`
|
||||
|
||||
## 5.19 Kelola Settings Tenant
|
||||
|
||||
Flow umum:
|
||||
`Sidebar -> Settings -> pilih submenu -> Settings Detail`
|
||||
|
||||
Cabang:
|
||||
- `Settings -> Tenant Profile Settings`
|
||||
- `Settings -> Business Hours Settings`
|
||||
- `Settings -> Auto Assignment Rules`
|
||||
- `Settings -> Chat Tags Management`
|
||||
- `Settings -> Canned Responses`
|
||||
- `Settings -> Webhook / Integration Settings`
|
||||
|
||||
## 6. Agent Flow
|
||||
|
||||
## 6.1 Mulai Shift dan Review Inbox
|
||||
|
||||
Flow:
|
||||
`Login -> Agent Dashboard -> klik Assigned Conversations -> My Inbox`
|
||||
|
||||
Cabang dari dashboard:
|
||||
- `Dashboard -> unread conversations -> My Inbox filtered unread`
|
||||
- `Dashboard -> due follow-up -> My Inbox filtered pending/due`
|
||||
|
||||
## 6.2 Tanggapi Percakapan Customer
|
||||
|
||||
Flow utama:
|
||||
`My Inbox -> pilih conversation -> Agent Conversation Detail -> reply -> Agent Conversation Detail`
|
||||
|
||||
Alternatif:
|
||||
- `Agent Conversation Detail -> canned response -> insert -> send -> Agent Conversation Detail`
|
||||
- `Agent Conversation Detail -> template picker -> pilih template -> send -> Agent Conversation Detail`
|
||||
|
||||
## 6.3 Tambah Note Internal atau Tag
|
||||
|
||||
Flow:
|
||||
`Agent Conversation Detail -> Internal Notes atau Tags -> add/edit -> save -> Agent Conversation Detail`
|
||||
|
||||
## 6.4 Ubah Status Conversation
|
||||
|
||||
Flow:
|
||||
`Agent Conversation Detail -> Status Selector -> pilih status -> save -> Agent Conversation Detail`
|
||||
|
||||
Kemungkinan efek:
|
||||
- resolved -> muncul di `Resolved History`
|
||||
- pending -> muncul di queue follow-up
|
||||
|
||||
## 6.5 Ambil Conversation dari Queue
|
||||
|
||||
Flow:
|
||||
`Agent Dashboard atau Sidebar -> Unassigned Queue -> pilih conversation -> preview/detail -> klik Take Assignment -> Agent Conversation Detail`
|
||||
|
||||
Hasil:
|
||||
- conversation pindah ke daftar assigned agent
|
||||
|
||||
## 6.6 Lihat Riwayat Resolved
|
||||
|
||||
Flow:
|
||||
`Agent Dashboard atau Sidebar -> Resolved History -> pilih conversation -> Agent Conversation Detail`
|
||||
|
||||
## 6.7 Lihat Contact Terkait
|
||||
|
||||
Flow:
|
||||
`Agent Conversation Detail -> klik contact card -> Agent Contact Detail`
|
||||
|
||||
Alternatif:
|
||||
`Sidebar -> Agent Contact List -> pilih contact -> Agent Contact Detail`
|
||||
|
||||
## 6.8 Cek Performa Pribadi
|
||||
|
||||
Flow:
|
||||
`Sidebar -> My Performance -> filter date -> lihat personal stats`
|
||||
|
||||
## 7. Cross-Role End-to-End Flow
|
||||
|
||||
## 7.1 End-to-End Inbound Message Flow
|
||||
|
||||
Ini flow paling penting dari sisi produk.
|
||||
|
||||
Flow lintas sistem:
|
||||
`Customer kirim WhatsApp -> Webhook Ingestion -> sistem create/update Contact -> sistem create/update Conversation -> Shared Inbox -> Admin/Agent buka Conversation Detail -> Reply -> status berubah -> activity log tercatat`
|
||||
|
||||
Jika diterjemahkan ke screen:
|
||||
`Shared Inbox -> Conversation Detail -> Reply Composer -> send -> Conversation Detail`
|
||||
|
||||
Pihak yang terlibat:
|
||||
- customer
|
||||
- sistem webhook/worker
|
||||
- admin client atau agent
|
||||
|
||||
## 7.2 End-to-End Broadcast Flow
|
||||
|
||||
Flow lintas sistem:
|
||||
`Admin create campaign -> sistem validate template & audience -> campaign queued -> worker kirim bertahap -> delivery webhook masuk -> Campaign Detail update metrics`
|
||||
|
||||
Jika diterjemahkan ke screen:
|
||||
`Campaign List -> Create Campaign -> Campaign Review -> Campaign Detail -> Campaign Recipients`
|
||||
|
||||
## 7.3 Channel Disconnected Exception Flow
|
||||
|
||||
Flow:
|
||||
`System detects disconnected channel -> Notification/Alert -> Super Admin Dashboard atau Admin Billing/Settings area -> Channel Detail / Integration Settings -> Reconnect action -> validation result`
|
||||
|
||||
Screen yang bisa muncul:
|
||||
- dashboard alert
|
||||
- channel detail
|
||||
- webhook/integration settings
|
||||
|
||||
## 7.4 Template Rejected Exception Flow
|
||||
|
||||
Flow:
|
||||
`Template List -> Template Detail -> status rejected -> Edit/Resubmit -> submit -> Template Detail`
|
||||
|
||||
## 7.5 Message Delivery Failed Exception Flow
|
||||
|
||||
Flow inbox reply:
|
||||
`Conversation Detail -> send reply -> failed state -> retry action atau note error -> Conversation Detail`
|
||||
|
||||
Flow campaign:
|
||||
`Campaign Detail -> failed metrics -> Campaign Recipients filtered failed -> lihat failure reason`
|
||||
|
||||
## 8. Rekomendasi Wireflow Prioritas
|
||||
|
||||
Kalau ingin dibuat ke prototype lebih dulu, urutan flow yang paling penting untuk divisualkan:
|
||||
|
||||
1. Login -> Dashboard
|
||||
2. Dashboard -> Shared Inbox -> Conversation Detail
|
||||
3. Conversation Detail -> Assign -> Reply -> Change Status
|
||||
4. Contact List -> Create Contact -> Contact Detail
|
||||
5. Campaign List -> Create Campaign -> Campaign Review -> Campaign Detail
|
||||
6. Users List -> Create User -> User Detail
|
||||
7. Super Admin Dashboard -> Tenant List -> Create Tenant -> Tenant Detail
|
||||
8. Tenant Detail -> Connect Channel -> Channel Detail
|
||||
|
||||
## 9. Kesimpulan
|
||||
|
||||
Kalau `struktur screen` menjawab daftar layarnya, maka dokumen ini menjawab alur kerja user di antara layar-layar itu.
|
||||
|
||||
Untuk MVP ini, flow yang paling wajib matang dulu adalah:
|
||||
- login
|
||||
- dashboard entry
|
||||
- shared inbox
|
||||
- conversation handling
|
||||
- contact management
|
||||
- campaign creation dan monitoring
|
||||
- tenant onboarding
|
||||
- channel connection
|
||||
Reference in New Issue
Block a user