Lewati ke konten utama

Support Ticket Management

Fitur utama yang membedakan Frog Cloud dari penyedia Cloud lainnya adalah layanan dukungan pelanggannya (Customer Service).

Tim Admin atau tim Support dapat merespons keluhan, membalas obrolan teknis, mengubah status penugasan (assignment), serta memantau antrean ticket secara real-time menggunakan teknologi Server-Sent Events (SSE).


1. Analisis & Metrik (Insight)

Pada saat Admin membuka menu "Support", Frontend sebaiknya merender kartu statistik (contoh: Jumlah tiket "Open", "In Progress", dsb.).

Request
GET /api/backoffice/ticket/insight

Respons: Mengembalikan perhitungan agregasi status seluruh tiket.


2. Tabel Antrean Tiket (List & Detail)

Semua obrolan dari berbagai Customer dikelompokkan ke dalam tiket dengan ID unik.

Request (Daftar Tiket)
GET /api/backoffice/ticket
Request (Detail Obrolan)
GET /api/backoffice/ticket/{id}/conversations

Tindakan Frontend:

  • Endpoint /ticket mengembalikan array informasi tiket dasar (siapa pengirimnya, status, dan judul keluhan).
  • Endpoint /conversations mengembalikan seluruh untaian pesan/balasan layaknya aplikasi chat (termasuk attachment atau gambar).

3. Siklus Hidup Tiket (Lifecycle)

Selama proses investigasi masalah, Admin akan banyak mengubah atribut dari sebuah tiket. Tersedia beberapa endpoint spesifik untuk menangani pergantian status atau properti tiket.

Diagram Alur Penanganan Tiket

Membalas Pesan

Request
POST /api/backoffice/ticket/{id}/reply

Merubah Prioritas & Penugasan

  • Ubah Prioritas (Low, Medium, High): PATCH /api/backoffice/ticket/{id}/priority
  • Oper ke Admin Lain (Assignment): PATCH /api/backoffice/ticket/{id}/assignment

Mengakhiri Tiket

  • Tutup Masalah (Close): PATCH /api/backoffice/ticket/{id}/close
  • Arsipkan Tiket (Archive): PATCH /api/backoffice/ticket/{id}/archive

4. Notifikasi Real-time (SSE)

Agar tim Support tidak perlu melakukan refresh halaman (F5) berkali-kali untuk melihat pesan baru dari Customer, Backend mengimplementasikan aliran Server-Sent Events (SSE) yang disinkronkan lewat koneksi Redis Pub/Sub.

Request URL (Membuka Koneksi)
GET /api/backoffice/ticket/sse/stream

Implementasi di Frontend (React/Vanilla JS):

const eventSource = new EventSource('/api/backoffice/ticket/sse/stream', {
withCredentials: true // Wajib untuk melewatkan Cookie otentikasi
});

eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
// Cek apakah ada tiket baru, pesan baru, atau perubahan status
if (data.type === 'NEW_REPLY') {
appendMessageToChat(data.payload);
}
};

Perhatian: Koneksi SSE bersifat terus-menerus (long-lived). Pastikan Anda menutup koneksi (eventSource.close()) saat Admin berpindah halaman dari menu Support untuk mencegah kebocoran memori (memory leak).