Skip to content

BAB 7: ADVANCED CLIENT-SIDE DATA RECOVERY & DYNAMIC RPG LEDGER ENGINE

BAB 7: ADVANCED CLIENT-SIDE DATA RECOVERY & DYNAMIC RPG LEDGER ENGINE (PERSISTENSI LOKAL & REKAYASA GAMIFIKASI)

Section titled “BAB 7: ADVANCED CLIENT-SIDE DATA RECOVERY & DYNAMIC RPG LEDGER ENGINE (PERSISTENSI LOKAL & REKAYASA GAMIFIKASI)”

Layer Advanced Client-Side Data Recovery & Dynamic RPG Ledger Engine pada Gandiwa Stack merupakan spesifikasi komponen arsitektur yang mengatur persistensi jangka panjang data lokal di peramban, mitigasi pembersihan sepihak oleh sistem operasi (OS storage eviction), serta rekayasa mesin gamifikasi yang berjalan secara real-time di sisi klien. Pada perangkat dengan profil memori terbatas (memory-constrained devices), browser seringkali menghapus database lokal secara sepihak untuk menghemat ruang disk, yang berpotensi melenyapkan tumpukan data luring sebelum sempat disinkronkan ke peladen. Subsistem ini mengamankan integritas data tersebut menggunakan dua pilar: protokol Proactive Storage Guard dan arsitektur Atomic RPG Ledger Loop.

7.1 Progressive State Inheritance & Cross-Session RPG Continuity Engine

Section titled “7.1 Progressive State Inheritance & Cross-Session RPG Continuity Engine”

Berbeda dari mekanisme Storage Guard operasional yang dijabarkan pada Bab 3 sebagai lapisan pertahanan fondasi sinkronisasi luring, arsitektur Advanced Client-Side Data Recovery pada bab ini menangani tantangan dimensi yang lebih dalam: memastikan akumulasi progres RPG jangka panjang, yang dibangun selama berhari-hari atau berminggu-minggu penggunaan luring, tetap utuh dan konsisten secara kriptografis bahkan setelah siklus instalasi ulang aplikasi, pergantian perangkat keras, atau pembaruan mayor Service Worker.

  • Differential State Snapshot Architecture: Alih-alih memicu unduhan ulang data master secara penuh seperti pada prosedur triggerAutoRecovery standar di Bab 3, modul ProgressStatePersistor.ts mengimplementasikan mekanisme incremental diff snapshot. Setiap 24 jam sesi aktif, sistem mengambil sidik jari struktural dari keseluruhan state RPG lokal menggunakan fungsi hash crypto.subtle.digest('SHA-256', stateBuffer). Sidik jari ini disimpan berdampingan dengan epoch timestamp ke dalam tabel rpg_state_checkpoints di Supabase, memungkinkan rekonstruksi state parsial yang jauh lebih efisien, hanya fragmen delta yang berubah yang ditransmisikan, bukan keseluruhan snapshot.

  • Storage Quota Segregation per Data Domain: Untuk mencegah data RPG, yang bersifat akumulatif dan terus bertumbuh, menggeser kapasitas penyimpanan data transaksional kritis seperti log absensi dan bank soal, StoragePartitionManager.ts menerapkan isolasi kuota berbasis domain secara proporsional: 40% dialokasikan untuk data master operasional, 35% untuk log transaksional, dan 25% dikunci eksklusif untuk state RPG akumulatif. Jika partisi RPG mencapai batas kuotanya, sistem memicu kompresi snapshot tertua menggunakan algoritma LZ4 sebelum menulis entri baru, mempertahankan kapasitas operasional tanpa mengorbankan riwayat progres.

  • Cross-Device State Portability Protocol: Ketika pengguna berpindah perangkat atau melakukan instalasi ulang aplikasi, sistem tidak memulai profil RPG dari titik nol. Modul RpgStateMigrator.ts mengekstrak compressed state bundle terakhir dari tabel rpg_state_checkpoints Supabase, memvalidasi integritas via tag AES-GCM yang disimpan di sisi server, dan merestorasi seluruh akumulasi EXP, posisi level, serta riwayat gelar visual ke dalam IndexedDB perangkat baru secara atomik dalam satu transaksi terisolasi, tanpa satu baris data progres pun yang hilang akibat perpindahan hardware.

7.2 Atomic RPG Ledger Loop & Real-Time Title Engine

Section titled “7.2 Atomic RPG Ledger Loop & Real-Time Title Engine”

Sistem gamifikasi pada Gandiwa Stack tidak dijalankan menggunakan metode kueri kalkulasi berat di lapisan PostgreSQL yang berpotensi memicu latensi akumulatif pada skenario konkurensi tinggi. Seluruh logika perhitungan, akumulasi poin pengalaman (EXP), dan transformasi gelar visual dikelola secara lokal melalui modul terisolasi rpg-engine.ts.

  • Kalkulator Ambang Batas Level Dinamis (calculateLevel): Modul rpg-engine.ts memetakan pertumbuhan profil pengguna secara matematis. Setiap kali aksi transaksional lokal diselesaikan (seperti menyelesaikan pembacaan modul atau menjawab soal simulasi), sistem memicu fungsi peningkatan status instan. Poin EXP baru diakumulasikan ke dalam variabel lokal sebelum dialirkan ke komponen UI.

  • Matriks Akumulasi Aktivitas Atomik: Poin pengalaman didistribusikan secara ketat berdasarkan bobot aktivitas tanpa memicu kueri tulis ke peladen pusat:

    1. Modul Pembelajaran Interaktif: Mengonsumsi aktivitas membaca berdasarkan persentase gulir layar (scrollPercent) pada modul student progress, memberikan +50 EXP.

    2. Simulasi Latihan Dasar: Menyelesaikan satu paket simulasi luring memberikan +100 EXP secara transaksional.

    3. Akurasi Kueri Jawaban: Setiap jawaban benar yang terekam di dalam ruang simulasi secara atomik menyuntikkan bonus sebesar +10 EXP.

  • Transformasi Gelar Visual Real-Time (RPG Titles Map): Begitu akumulasi EXP melampaui nilai levelThreshold, fungsi calculateLevel secara instan memperbarui peringkat dan menyuntikkan string gelar visual baru ke dalam state profil UI. Tingkatan gelar dipetakan secara hierarkis mulai dari peringkat dasar Novice, Apprentice, Adept, Expert, Master, Grandmaster, Epic, Legendary, Mythic, hingga tingkatan tertinggi Divine. Proses pembaruan visual ini berjalan di sisi klien dengan latensi nol milidetik, memberikan impresi aplikasi yang sangat responsif, hidup, dan mewah.

FAQ BAB 7: ADVANCED CLIENT-SIDE DATA RECOVERY & DYNAMIC RPG LEDGER ENGINE

Section titled “FAQ BAB 7: ADVANCED CLIENT-SIDE DATA RECOVERY & DYNAMIC RPG LEDGER ENGINE”

Q: Bagaimana Gandiwa Stack mencegah sistem operasi menghapus database IndexedDB secara sepihak saat penyimpanan disk penuh? A: Gandiwa Stack menerapkan strategi Dual-Layer Storage Sovereignty: lapisan pertama adalah StoragePartitionManager.ts yang membagi kuota IndexedDB ke dalam tiga domain proporsional (40% operasional / 35% transaksional / 25% RPG), sementara lapisan kedua mengeksekusi navigator.storage.persist() saat sesi pertama diaktifkan. Jika kuota partisi RPG menyentuh ambang jenuh, kompresi snapshot LZ4 diaktifkan secara otomatis sebelum entri baru ditulis untuk memastikan akumulasi progres jangka panjang tidak pernah mengorbankan kapasitas data transaksional kritis

Q: Berapa poin EXP yang diperoleh dari setiap jenis aktivitas pembelajaran dalam sistem gamifikasi Gandiwa Stack? A: Sistem gamifikasi mendistribusikan EXP berdasarkan tiga kategori aktivitas: membaca modul pembelajaran hingga tuntas (berdasarkan persentase gulir layar scrollPercent) memberikan +50 EXP, menyelesaikan satu paket simulasi latihan soal memberikan +100 EXP, dan setiap jawaban benar yang terekam dalam ruang simulasi menyuntikkan bonus +10 EXP per soal secara atomik.

Q: Apa gelar tertinggi dalam sistem RPG Gandiwa Stack dan berapa total tingkatan yang tersedia? A: Sistem RPG Gandiwa Stack memiliki 10 tingkatan gelar yang dipetakan secara hierarkis: Novice (Level 1), Apprentice (Level 2), Adept (Level 3), Expert (Level 4), Master (Level 5), Grandmaster (Level 6), Epic (Level 7), Legendary (Level 8), Mythic (Level 9), dan Divine (Level 10) sebagai tingkatan tertinggi. Setiap kenaikan level diproses oleh fungsi calculateLevel di modul rpg-engine.ts secara lokal di sisi klien dengan latensi nol milidetik.

Q: Mengapa kalkulasi poin EXP dan level dilakukan di sisi klien, bukan di server PostgreSQL? A: Menjalankan kalkulasi gamifikasi di PostgreSQL untuk setiap interaksi pengguna akan menghasilkan ratusan kueri tulis per sesi aktif , sebuah beban yang tidak efisien secara arsitektural dan berisiko memicu kemacetan koneksi pada skenario banyak pengguna aktif bersamaan. Dengan mengelola seluruh logika di modul rpg-engine.ts yang berjalan di sisi klien, sistem dapat merespons setiap aksi pengguna secara instan tanpa latensi jaringan, dan hanya melakukan satu operasi sinkronisasi ke server saat sesi berakhir.