Taryana
CS Ticketing & SLA TrackingCS Operations & Incident Management
TESTER READY • LIVE ENGINE

SLA Ticketing & CS Incident Assignment Management

Web-Based Customer Issue Categorization, Team Assignment & SLA Resolution Tracking

Sistem manajemen tiket gangguan pelanggan berbasis web portal yang diinput oleh tim Customer Service (CS), dikelompokkan berdasarkan kategori insiden, lalu di-assign ke tim teknis terkait dengan pelacakan batas waktu resolusi SLA.

Diagram Alur Data & Arsitektur Sistem

Visual Interaktif

Alur Manajemen Tiket CS & Eskalasi SLA Berbasis Web

Alur intake tiket oleh Customer Service, penentuan kategori masalah, penugasan ke tim teknis, dan pemantauan SLA

client
Web Ingress

CS Web Portal

Customer Complaint Intake

Submit complaint
guard
LOS / ONT / Bill

Issue Classifier

Category & Severity Matrix

Evaluate target team
service
Auto Assign

Assignment Engine

Route to Relevant Unit

Persist assigned ticket
db
State Log

PostgreSQL Tickets

Audit Trail & Milestones

Live dashboard tracking
device
SLA Timer

Web SLA Monitor

Real-Time Dashboard Alert

Problem & Latar Belakang Kebutuhan

Saat pelanggan mengalami gangguan (misal: kabel fiber putus, redaman tinggi, kendala router Wi-Fi, atau tagihan billing), laporan yang diterima tim CS sering kali tercecer atau lambat diteruskan tanpa kejelasan tim penanggung jawab dan status penyelesaian.

Implementasi TicketAssignmentService di NestJS

Setiap keluhan pelanggan dibuatkan tiket resmi di web portal oleh tim CS dengan klasifikasi kategori masalah (Fiber Cut LOS, Konfigurasi Router/ONT, Klaim Billing). Sistem secara otomatis menghitung tenggat waktu SLA (P1: 2 jam, P2: 4 jam, P3: 24 jam), meng-assign tiket ke unit penanggung jawab (Tim Splicer Lapangan, Tim NOC Jaringan, atau Tim Finance), serta melacak setiap tahapan progres penyelesaian secara real-time di dashboard web.

Aspek Skema Tiket PostgreSQL, Kategori & Riwayat Status

Tabel PostgreSQL support_tickets dan ticket_history mencatat relasi foreign key customer_id, branch_id, assigned_to_user_id, status transisi (OPEN -> ASSIGNED -> IN_PROGRESS -> RESOLVED -> CLOSED), serta timestamp SLA countdown.

Keamanan, Idempotensi & Kepatuhan SLA

Validasi hak akses peran (RBAC): CS berwenang membuat dan mengarahkan tiket, Teknisi/NOC hanya dapat memperbarui progres tiket yang di-assign kepada mereka, dan Supervisor dapat memvalidasi penyelesaian tiket.

NestJS TicketAssignmentService: Klasifikasi & Penugasan Tiket CSNestJS (TypeScript)
// Manajemen Tiket CS & Penugasan Berdasarkan Kategori Masalah di NestJS
@Injectable()
export class TicketAssignmentService {
  constructor(
    @InjectRepository(SupportTicket)
    private readonly ticketRepo: Repository<SupportTicket>,
    @InjectRepository(TechnicalTeam)
    private readonly teamRepo: Repository<TechnicalTeam>,
  ) {}

  async createAndAssignTicket(dto: CreateTicketDto, csUser: User): Promise<SupportTicket> {
    // 1. Tentukan SLA target resolusi berdasarkan tingkat keparahan & kategori masalah
    const slaHours = this.determineSlaHours(dto.category, dto.severity);
    const slaDeadline = new Date(Date.now() + slaHours * 60 * 60 * 1000);

    // 2. Tentukan tim teknis terkait berdasarkan kategori insiden
    const targetTeam = await this.teamRepo.findOneBy({
      category: dto.category,
      branchId: dto.branchId,
    });

    // 3. Terbitkan tiket resmi dan simpan status penugasan awal
    const ticket = this.ticketRepo.create({
      ticketNumber: `TCK-${new Date().getFullYear()}-${Math.floor(1000 + Math.random() * 9000)}`,
      customerId: dto.customerId,
      branchId: dto.branchId,
      category: dto.category, // 'FIBER_CUT_LOS' | 'ONT_ROUTER_CONFIG' | 'BILLING_DISPUTE'
      severity: dto.severity, // 'P1_CRITICAL' | 'P2_MAJOR' | 'P3_STANDARD'
      createdByUserId: csUser.id,
      assignedTeamId: targetTeam?.id,
      status: 'ASSIGNED',
      slaDeadline,
    });

    return await this.ticketRepo.save(ticket);
  }
}

Live Simulator & Execution Sandbox

Interactive State Tester
Alur Kerja Tiket Web CS:Penugasan Berdasarkan Kategori MasalahLaporan masuk CS → Diklasifikasikan → Di-assign ke unit penanggung jawab → SLA countdown aktif di dashboard web.
Execution Telemetry Console
HTTP 200 OK
POST/api/v1/network/coverage/check
> Guard Evaluation Trace:

PostGIS GiST R-Tree ST_DWithin query executed in 3.8ms. Matched ODP-FATMAWATI-42 (84.2m).

> Database & State Result:

Estimated optical attenuation: -17.4 dBm. Port 4 of 8 available. Redis lock acquired with 24h TTL.

Audit Trail PostgreSQL & Redis (2 events)Auto-Appended
[10:14:02]SETTLEMENT(Double-Entry Worker)•WEBHOOK_INVOICE_SETTLED

HMAC-SHA256 verified. Redis Redlock acquired. Invoice INV-2026-0982 settled with zero ledger variance.

SUCCESS
[10:22:15]POSTGIS(Coverage Engine (NestJS))•ODP_PORT_RESERVED

ST_DWithin R-Tree matched ODP in 4.1ms (dist: 84.2m). Optical loss -17.4 dBm. Splitter port locked with 24h Redis TTL.

SUCCESS