Taryana
Idempotent Contract PKSB2B Monetization & Provisioning
TESTER READY • LIVE ENGINE

Subscription Contract Engine

Manual B2B Provisioning & Idempotent Contract Lifecycle

Provisioning langganan berbasis kontrak formal B2B dengan Idempotency Key, masa berlaku otomatis, dan fitur tersemat (embedded entitlements) pada dokumen MongoDB.

Diagram Alur Data & Arsitektur Sistem

Visual Interaktif

Alur Data Provisioning Kontrak B2B & Idempotensi

Dari penandatanganan kesepakatan B2B hingga pembaruan state di MongoDB & Redis

client
Operator

Admin Portal

Input Kontrak & Key

POST (Idempotency-Key)
cache
0.4ms

Redis Key Guard

Check Idempotency

Key Valid / New
service
Core Engine

NestJS Service

Contract State Machine

Update embedded contract
db
Single-Doc Write

MongoDB Property

Embedded Sub-Doc

Log contract creation
db
Append-Only

Activity Log

Audit Trail Store

Problem & Latar Belakang Kebutuhan

Pada segmen hospitality B2B, pelanggan hotel dan apartemen tidak menggunakan sistem checkout kartu kredit retail otomatis. Setiap properti menandatangani kontrak kerja sama resmi (PKS) dengan kuota kamar dan paket siaran khusus. Sistem membutuhkan aktivasi manual oleh Admin IPTV dengan jaminan idempotensi agar tidak terjadi duplikasi kontrak saat koneksi jaringan operator mengalami timeout.

Implementasi Rekayasa Backend NestJS

Admin atau Superadmin menginput data kontrak dan properti via portal internal dengan menyertakan header Idempotency-Key. NestJS memvalidasi key di Redis, lalu menyematkan sub-dokumen subscription (startsAt, expiresAt, status, planCode, features) langsung ke dalam dokumen Property di MongoDB. Pola embedded document ini menghasilkan zero-join read saat perangkat STB properti melakukan pengecekan hak siar.

Aspek Model Database MongoDB

Dokumen properti menyimpan embedded snapshot subscription aktif: { planCode: 'PLATINUM', contractNumber: 'PKS-2026-042', status: 'ACTIVE', startsAt: ISODate, expiresAt: ISODate, features: ['welcome_video', 'amenities', 'package_all'] }. Kueri hak akses selesai dalam satu operasi findOne tanpa lookup antar-tabel.

Keamanan, Idempotensi & Kepatuhan SLA

Validasi token Idempotency-Key di-cache selama 24 jam di Redis. Request berulang dengan key yang sama akan mengembalikan salinan respons awal tanpa mengeksekusi mutasi ulang ke MongoDB.

NestJS Subscription Provisioning Controller & IdempotencyNestJS (TypeScript)
// NestJS Controller: Manual Provisioning with Idempotency Key
@Post('properties/:id/contracts')
@Roles('superadmin', 'admin')
@UseGuards(JwtAuthGuard, RolesGuard)
async provisionContract(
  @Param('id') propertyId: string,
  @Headers('Idempotency-Key') idempotencyKey: string,
  @Body() dto: ProvisionContractDto,
) {
  // 1. Cek idempotency key di Redis
  const cachedResponse = await this.redis.get(`idemp:${idempotencyKey}`);
  if (cachedResponse) {
    return JSON.parse(cachedResponse);
  }

  // 2. Eksekusi mutasi kontrak ke dokumen Property MongoDB
  const result = await this.subscriptionService.provisionContract(propertyId, dto);

  // 3. Simpan hasil di Redis untuk idempotency caching (24 jam)
  await this.redis.set(`idemp:${idempotencyKey}`, JSON.stringify(result), 'EX', 86400);

  return result;
}

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