Taryana
Check-in / Check-out SyncFrontdesk Operations
TESTER READY • LIVE ENGINE

STB Device Pairing & Room Ops

Frontdesk Room Device Assignment & Guest Check-in/Check-out Sync

Otomasi check-in & check-out tamu: pairing perangkat STB, personalisasi nama sambutan TV saat check-in, dan reset sesi privasi secara real-time saat check-out.

Diagram Alur Data & Arsitektur Sistem

Visual Interaktif

Alur Pairing Perangkat STB & Sinkronisasi Tamu (Check-in/Check-out)

Dari registrasi check-in frontdesk hingga personalisasi layar TV kamar

client
Front Office

Frontdesk Desk

Input Room & Guest

Pair STB Request
guard
Quota Check

Quota License Guard

Verify Room Limit

Quota verified
db
Device Doc

MongoDB Devices

Update Device Room Map

Emit device update
service
Live Notify

WebSocket Push

Real-time Greeting

Welcome Mr. Guest
device
TV In-Room

Room TV Screen

Personalized Greeting

Problem & Latar Belakang Kebutuhan

Staf Frontdesk hotel perlu memasangkan perangkat fisik STB ke kamar tamu tertentu tanpa memiliki akses berbahaya ke menu konfigurasi kontrak atau skema database. Jika tamu check-in, nama tamu harus segera tampil di layar TV kamar saat dinyalakan.

Implementasi Rekayasa Backend NestJS

Frontdesk hanya diberi hak akses ke endpoint operasional perangkat. Saat staf memasangkan MAC address STB ke nomor kamar dan memasukkan nama tamu, backend NestJS memverifikasi bahwa total perangkat aktif tidak melebihi kuota kamar yang tertera pada kontrak langganan properti.

Aspek Model Database MongoDB

Koleksi devices menyimpan mapping { macAddress: string, propertyId: string, roomNumber: string, guestName: string, status: 'ONLINE' | 'OFFLINE', lastPing: ISODate }.

Keamanan, Idempotensi & Kepatuhan SLA

Validasi kuota lisensi kamar secara ketat mencegah hotel menghubungkan STB melebihi batas perjanjian kontrak PKS.

NestJS Device Controller: Room PairingNestJS (TypeScript)
// Device Controller: Pairing STB Kamar oleh Frontdesk
@Post('properties/:propertyId/devices/pair')
@Roles('superadmin', 'admin', 'manager', 'frontdesk')
@UseGuards(JwtAuthGuard, RolesGuard, PropertyScopeGuard)
async pairRoomDevice(
  @Param('propertyId') propertyId: string,
  @Body() dto: PairDeviceDto,
) {
  // 1. Verifikasi kuota kamar kontrak
  await this.deviceService.verifyRoomQuotaLimit(propertyId);

  // 2. Hubungkan MAC address STB dengan nomor kamar & nama tamu
  return this.deviceService.assignDeviceToRoom(propertyId, dto);
}

Live Simulator & Execution Sandbox

Interactive State Tester
Execution Telemetry Console
HTTP 201 Created
POST/api/v1/properties/contracts
> Guard Evaluation Trace:

RolesGuard verified caller is 'admin'. Idempotency Key verified in Redis. MongoDB document updated.

> Database & State Result:

Contract for 'Grand Horizon Hotel & Resort' persisted into Property document with 1-Year validity.

Audit Trail MongoDB (2 events)Auto-Appended
[10:14:02]ADMIN(Rian (Platform Admin))•PROPERTY_CONTRACT_PROVISIONED

Provisioned 1-Year Platinum Contract #PKS-2026-042 via manual B2B order.

SUCCESS
[10:22:15]MANAGER(Ahmad (IT Manager))•WELCOME_CONTENT_MUTATED

Updated welcome video banner and personalized TV dining directory.

SUCCESS