Tata Kelola Data
Kontrol tata kelola data yang tersedia di aplikasi: retensi data, permintaan ekspor data, dan permintaan penghapusan/anonymisasi data, termasuk verifikasi isolasi antar-penyewa (tenant). Semua kontrol ini dikelompokkan pada menu Governance dan hanya tampil bagi pengguna dengan izin yang sesuai.
Dokumentasi ini bersifat teknis-operasional dan bukan nasihat hukum. Untuk kepatuhan (misalnya GDPR, UU PDP), konsultasikan dengan penasihat hukum Anda.
Tujuan
- Menjalankan pembersihan retensi untuk jenis entitas tertentu dan membaca hasilnya.
- Membuat permintaan ekspor data serta memahami statusnya.
- Membuat permintaan penghapusan atau anonymisasi data (satu kontak atau seluruh akun).
- Memverifikasi bahwa data akun Anda terisolasi dari akun lain (tenant isolation).
- Memahami dengan jujur apa yang belum tersedia (misalnya mengunduh file ekspor).
Untuk siapa
- Admin/owner — menjalankan retensi dan verifikasi isolasi (izin
manage_account, peran owner/admin). - Pengguna dengan izin
export_data— membuat dan memantau permintaan ekspor. - Pengguna dengan izin
manage_contacts— membuat dan membatalkan permintaan penghapusan.
Prasyarat
- Masuk dengan akun yang memiliki izin sesuai (lihat Untuk siapa).
- Memahami konsekuensi tindakan penghapusan/anonymisasi yang tidak dapat dibatalkan.
Langkah-langkah
1. Menjalankan retensi data
- Buka menu Governance.
- Pada bagian Run retention, pilih satu atau beberapa jenis entitas:
contacts,conversations,messages, atauattachments. (Jenisaudit_logdapat dipicu lewat API.) - Klik Run.
- Periksa hasil pada daftar riwayat: tiap entitas menampilkan jenis, aksi yang diterapkan, jumlah baris terdampak, dan status (
completed/failed). - Bila sebuah jenis entitas tidak memiliki kebijakan retensi yang aktif, entitas itu dilaporkan
skippeddengan alasanno policy— tidak ada data yang diubah.
Cara kerja retensi:
- Kebijakan retensi disimpan per akun per jenis entitas: jumlah hari retensi (bawaan
730hari ≈ 24 bulan), aksi (deleteatauanonymize), dan bendera aktif (enabled). - Saat dijalankan, sistem memproses data yang lebih lama dari ambang hari retensi.
- Percakapan yang dihapus/dianonimkan hanyalah percakapan berstatus resolved.
- Riwayat audit (
audit_log) selalu dihapus permanen (tidak pernah dianonimkan); trigger keabadian (immutable) audit dilepas sementara selama penghapusan lalu dipasang kembali. - Setiap run dicatat dalam riwayat dan jejak audit (
retention.run).
2. Membuat permintaan ekspor data
- Buka menu Governance.
- Pada bagian Create export, pilih jenis entitas (
contacts,conversations,messages) dan format (JSONatauCSV). - Klik Create; sistem membuat permintaan dan menjalankannya secara sinkron.
- Pantau status permintaan di daftar:
completed,failed, atau status antara lainnya. UI memuat ulang hingga mencapai status akhir. - Bila berhasil, catat jumlah baris yang dilaporkan.
3. Membuat permintaan penghapusan / anonymisasi
- Buka menu Governance.
- Pada bagian Create deletion, pilih mode:
- Anonymize (bawaan) — menimpa nilai identitas dengan penanda, tidak menghapus baris.
- Hard delete — menghapus baris secara permanen (berjenjang lewat relasi).
- Pilih jenis entitas yang terdampak (
contacts,conversations,messages). - Opsional: isi Contact ID untuk membatasi tindakan ke satu kontak; kosongkan untuk memproses seluruh akun.
- Klik Create. Permintaan dijalankan seketika; status langsung menjadi
completedataufailed.
Apa yang terjadi pada masing-masing mode:
- Anonymize kontak: nama →
[deleted], email dan telepon →NULL, atribut kustom →{}. - Anonymize pesan: konten →
[anonymized], metadata →{}. - Anonymize percakapan: prioritas →
0, atribut kustom →{}. - Hard delete: penghapusan berjenjang lewat kunci asing. Untuk entitas
messages, pembersihan objek media di MinIO hanya dilakukan bilacontact_iddiisi dan penyimpanan objek terkonfigurasi.
4. Membatalkan permintaan penghapusan
- Lihat daftar permintaan penghapusan di menu Governance.
- Tombol Cancel hanya muncul untuk permintaan berstatus
pending.
5. Memverifikasi isolasi antar-penyewa
- Pastikan Anda berperan owner/admin.
- Panggil verifikasi isolasi (tersedia lewat API di bawah
/data-governance/verify-isolation). - Periksa hasil per tabel: jumlah baris milik akun Anda (
owned) dan jumlah baris yang terlihat (total). - Bila RLS bekerja,
total = owneduntuk setiap tabel — nilaiisolated: true.
Tanda berhasil
- Run retensi muncul di riwayat dengan status dan jumlah baris; entitas tanpa kebijakan dilaporkan
skipped: no policy. - Permintaan ekspor mencapai status
completeddan melaporkan jumlah baris. - Permintaan penghapusan mencapai status
completed/failedseketika, tercatat di riwayat. - Verifikasi isolasi melaporkan
isolated: trueuntuk tabel yang ada.
Jika terjadi masalah
- Status
skipped: no policypada retensi: akun belum memiliki kebijakan aktif untuk jenis entitas itu. Kebijakan disimpan sebagai data (baris per akun); tidak ada editor kebijakan di UI — atur lewat akses data/DB yang dikelola tim Anda, lalu jalankan ulang. - Status
faileddenganerror_message: baca pesan galat pada riwayat; perbaiki penyebab (misalnya koneksi penyimpanan objek), lalu jalankan ulang. - Cancel mengembalikan "request not found or not pending": karena eksekusi bersifat sinkron, permintaan tidak pernah tertinggal berstatus
pending; pembatalan hanya berlaku untuk permintaan yang benar-benar masih antre. - Ekspor melaporkan 0 baris padahal ada data: pastikan jenis entitas yang dipilih sesuai dan data berada di akun yang sama.
Batasan
- Unduhan file ekspor belum tersedia. Permintaan ekspor berjalan sinkron dan hanya menghitung baris (tanpa membuat/menyimpan berkas); kolom ukuran berkas selalu
0dan URL unduhan tercatat tanpa rute pengunduhan yang terdaftar. Gunakan ekspor CSAT (CSV) yang tersedia pada laporan untuk kebutuhan berkala. - Editor kebijakan retensi tidak ada di UI/API — kebijakan dikelola sebagai baris data per akun; UI hanya menjalankan dan menampilkan hasilnya.
- Tidak ada dialog konfirmasi sebelum membuat permintaan penghapusan di UI saat ini. Tindakan
anonymizedanhard_deletetidak dapat dibatalkan: anonymize menimpa nilai dengan penanda, hard delete menghapus baris permanen. Periksa Contact ID dan mode sebelum mengirim. - Penghapusan seluruh akun dengan mode
hard_deleteuntuk entitasmessagestidak membersihkan objek media di penyimpanan objek (pembersihan MinIO hanya berjalan saatcontact_iddiisi). - Riwayat yang ditampilkan dibatasi 50 entri terbaru per kategori.
- Satu operasi dijalankan pada satu waktu dari UI (tombol dinonaktifkan selama proses berjalan).
Tugas terkait
- Keamanan dan isolasi penyewa (bagian Memverifikasi isolasi antar-penyewa di atas) — cara RLS memisahkan data antar-akun.
- Portal Bantuan dan Survei CSAT — konten publik yang dikelola tim Anda.
- Login dan workspace — peran dan izin akun.
- Referensi API — endpoint tata kelola data.