{
  "page": {"width_mm": 210, "height_mm": 297, "margins_mm": {"top": 20, "bottom": 20, "left": 20, "right": 20}},
  "header": "PT. Munara Kie Raha — BestWeb ISP",
  "footer": "Dokumen operasional internal",
  "footer_page_numbers": true,
  "styles": [
    {"name": "CoverTitle", "base": "Title", "font": "Aptos Display", "size_pt": 26, "bold": true, "color": "2457D6"},
    {"name": "Lead", "base": "Normal", "font": "Aptos", "size_pt": 12, "color": "334155"},
    {"name": "Warning", "base": "Normal", "font": "Aptos", "size_pt": 10, "bold": true, "color": "9A3412"}
  ],
  "blocks": [
    {"type": "paragraph", "style": "CoverTitle", "text": "MANUAL BOOK OPERASIONAL BESTWEB"},
    {"type": "paragraph", "style": "Lead", "text": "Sistem Billing, Pelanggan, Voucher, ODP, dan Registry Perangkat\nPT. Munara Kie Raha"},
    {"type": "paragraph", "text": "Versi 1.0 — September 2026"},
    {"type": "paragraph", "style": "Warning", "text": "Batas penting: BestWeb saat ini siap untuk administrasi, data pelanggan, billing, voucher, ODP, dan uji alur mapping. Registrasi OLT/MikroTik tidak berarti perangkat terhubung atau telah menerima konfigurasi."},
    {"type": "page_break"},
    {"type": "heading", "text": "Daftar Isi", "level": 1},
    {"type": "toc"},
    {"type": "page_break"},
    {"type": "heading", "text": "1. Tujuan dan Prinsip Operasional", "level": 1},
    {"type": "paragraph", "text": "BestWeb dipakai untuk memusatkan data pelanggan, paket, pembayaran, voucher, ODP, pekerjaan instalasi, dan target perangkat jaringan. Prinsipnya: sistem mempermudah operator. Operator hanya mengisi data yang dibutuhkan; data teknis yang belum diperlukan tidak dibebankan ke form."},
    {"type": "bullet_list", "items": ["Gunakan menu sesuai peran dan urutan kerja.", "Jangan memasukkan password, token, atau credential mentah pada form maupun chat.", "Gunakan data aktual dan konsisten: nama perangkat, area, POP, paket, serta ODP.", "Jangan menandai layanan perangkat fisik sebagai sukses tanpa acknowledgement dari perangkat."]},
    {"type": "heading", "text": "2. Peran Pengguna", "level": 1},
    {"type": "table", "header": ["Peran", "Tanggung jawab utama"], "rows": [["Super Admin", "Akses penuh: user, perangkat, paket, ODP, pelanggan, billing, voucher, laporan, backup, audit."], ["Admin CS", "Pelanggan, pembayaran, paket, ODP, perangkat, voucher, laporan sesuai izin."], ["Teknisi", "Melihat dan memperbarui tugas/instalasi pelanggan."], ["Agen Voucher", "Mengelola voucher dan jaringan agen voucher."]], "style": "Table Grid"},
    {"type": "heading", "text": "3. Login dan Dashboard", "level": 1},
    {"type": "numbered_list", "items": ["Buka alamat BestWeb yang diberikan administrator.", "Masuk memakai akun sesuai peran.", "Setelah login, cek kartu dashboard: Total, Permintaan, Penarikan, Konfigurasi, dan Aktif.", "Klik kartu statistik untuk membuka daftar pelanggan sesuai status.", "Untuk super admin, gunakan kartu Setup Jaringan Baru ketika menyiapkan perangkat dan mapping awal."]},
    {"type": "paragraph", "style": "Warning", "text": "Jika halaman kembali ke login, sesi telah habis atau akun tidak berhak. Jangan mencoba memakai akun orang lain."},
    {"type": "heading", "text": "4. Urutan Setup Jaringan dan Uji Data", "level": 1},
    {"type": "paragraph", "text": "Urutan ini dipakai sekali saat area/POP baru disiapkan. Bila MikroTik dan OLT sudah muncul pada Registry Perangkat, jangan input ulang; lanjut ke langkah yang belum selesai."},
    {"type": "numbered_list", "items": ["Dashboard → Setup Jaringan Baru → Perangkat.", "Daftarkan MikroTik/NAS: nama, host/IP management, port API, dan area/router target. Klik Simpan MikroTik.", "Daftarkan OLT: nama, host/IP management, vendor, model, lokasi, POP, protokol, dan port management. Klik Simpan OLT.", "Pastikan perangkat muncul pada daftar MikroTik terdaftar dan OLT terdaftar dengan status registered.", "Buka ODP: buat kode ODP, nama, lokasi titik peta, dan simpan. Gunakan kode yang mudah dikenali lapangan.", "Buka Katalog Paket: pastikan paket aktif dan parameter layanannya sudah benar.", "Buka Permintaan Pasang Baru: buat satu pelanggan SIMULASI untuk menguji pemilihan paket, ODP, MikroTik, dan OLT.", "Periksa detail pelanggan dan audit/provisioning status. Uji ini membuktikan mapping data, bukan koneksi perangkat fisik."]},
    {"type": "heading", "text": "5. Registrasi Perangkat", "level": 1},
    {"type": "heading", "text": "5.1 MikroTik / NAS", "level": 2},
    {"type": "bullet_list", "items": ["Nama: identitas singkat dan konsisten, misalnya MK-SITE-TERNATE.", "Host/IP management: IP atau hostname management yang benar dan disetujui.", "Port API: port management perangkat yang dipakai organisasi.", "Area/router target: area layanan atau router yang ditangani.", "Simpan. Daftar bawah form harus bertambah satu record."]},
    {"type": "heading", "text": "5.2 OLT Multi-Vendor", "level": 2},
    {"type": "bullet_list", "items": ["Nama OLT: identitas perangkat, misalnya OLT-CDATA-TTE.", "Host/IP management: IP atau hostname management perangkat.", "Vendor dan model: pilih sesuai perangkat aktual; jangan memilih vendor/model lain hanya agar form lolos.", "Lokasi dan POP: lokasi operasional perangkat.", "Protokol dan port management: catat jalur management yang benar tanpa menaruh password.", "Simpan dan pastikan OLT muncul dalam daftar registered."]},
    {"type": "paragraph", "style": "Warning", "text": "Status registered hanya berarti data perangkat tercatat. BestWeb tidak otomatis ping, login, discovery ONU, mengirim CLI, atau mengubah VLAN dari langkah ini."},
    {"type": "heading", "text": "6. ODP dan Mapping Lokasi", "level": 1},
    {"type": "numbered_list", "items": ["Menu ODP → isi kode dan nama ODP.", "Klik peta untuk memilih lokasi atau geser pin sampai titik benar.", "Latitude dan longitude terisi otomatis; pastikan titik sesuai lokasi lapangan.", "Simpan hanya setelah kode, nama, dan koordinat valid.", "Pastikan ODP tersedia pada pilihan form Permintaan Pasang Baru."]},
    {"type": "heading", "text": "7. Katalog Paket", "level": 1},
    {"type": "bullet_list", "items": ["Satu paket adalah sumber data layanan: kode, nama, harga, kecepatan, dan parameter teknis yang diizinkan.", "Gunakan kode paket unik dan mudah dibaca.", "Nonaktifkan paket yang tidak dipakai; jangan menghapus paket yang sudah dipakai pelanggan.", "Sebelum PSB, pastikan paket yang dipilih berstatus aktif."]},
    {"type": "heading", "text": "8. Permintaan Pasang Baru (PSB)", "level": 1},
    {"type": "numbered_list", "items": ["Dashboard → Permintaan Pasang Baru.", "Isi identitas pelanggan. NIK wajib tepat 16 digit dan harus unik.", "Pilih tipe layanan dan paket aktif.", "Pilih ODP, titik instalasi pelanggan, MikroTik/NAS tujuan, serta OLT yang telah terdaftar.", "Isi field vendor OLT yang muncul sesuai vendor/model terpilih. Jangan mengisi nilai asumsi untuk PON, ONU, SN, atau profile.", "Simpan. Sistem membuat ID pelanggan permanen format PLG-xxxxxxx sebagai kode pembayaran dan username PPPoE default.", "Kredensial PPPoE hanya ditampilkan pada tahap awal/reset yang diotorisasi. Jangan salin ke daftar, invoice, chat, atau export." ]},
    {"type": "heading", "text": "9. Pelanggan, Pembayaran, dan Billing", "level": 1},
    {"type": "bullet_list", "items": ["Data Pelanggan: cari, lihat detail, edit data layanan, archive, atau restore sesuai kewenangan.", "Pembayaran: gunakan kode pelanggan untuk pencatatan pembayaran dan cek status setelah simpan.", "Billing Bulanan: kelola tagihan berdasarkan periode dan status pembayaran.", "Archive adalah soft-delete. Jangan hapus data hanya untuk menyembunyikan pelanggan nonaktif.", "Suspend/unsuspend pada sistem administrasi tidak membuktikan perubahan RouterOS fisik sebelum integrasi perangkat terotorisasi tersedia."]},
    {"type": "heading", "text": "10. Voucher dan Agen Voucher", "level": 1},
    {"type": "numbered_list", "items": ["Agen Voucher: daftarkan agen yang aktif beserta area operasionalnya.", "Kelola Voucher: buat/kelola voucher sesuai paket dan masa berlaku.", "Distribusikan voucher hanya ke agen aktif.", "Gunakan export/laporan untuk rekonsiliasi; jangan menyimpan password pelanggan dalam data voucher."]},
    {"type": "heading", "text": "11. Audit, Export, Backup, dan Keamanan", "level": 1},
    {"type": "bullet_list", "items": ["Audit Log: gunakan saat mengecek perubahan data penting dan aktivitas admin.", "Export pelanggan/voucher: gunakan hanya untuk operasional berwenang; file tidak boleh berisi password PPPoE.", "Backup DB: lakukan sebelum perubahan besar dan simpan di lokasi yang aman.", "Jangan memasukkan atau membagikan password perangkat, token, API key, SNMP community, maupun password PPPoE melalui form biasa atau grup chat.", "Gunakan akun per orang. Jangan berbagi sesi super admin."]},
    {"type": "heading", "text": "12. Batas Uji Perangkat Fisik", "level": 1},
    {"type": "paragraph", "text": "Sebelum uji perangkat nyata, harus ada persetujuan, perangkat lab/akses management, jalur jaringan yang dapat dijangkau, vendor/model tervalidasi, dan adapter yang sesuai. Tanpa itu, BestWeb hanya melakukan administrasi dan preview aman."},
    {"type": "table", "header": ["Boleh diuji sekarang", "Belum boleh diklaim berhasil"], "rows": [["Registrasi OLT/MikroTik", "Login ke perangkat fisik"], ["ODP, paket, PSB, pembayaran, voucher", "Discovery ONT/ONU atau alokasi ONU ID"], ["Mapping pelanggan ke perangkat", "Push PPPoE/VLAN/CLI ke OLT atau RouterOS"], ["Audit dan status administrasi", "Suspend/unsuspend fisik perangkat"]], "style": "Table Grid"},
    {"type": "heading", "text": "13. Checklist Uji End-to-End Tanpa Hardware", "level": 1},
    {"type": "numbered_list", "items": ["Login super admin berhasil.", "MikroTik dan OLT muncul sekali masing-masing pada Registry Perangkat.", "ODP tersedia dan memiliki koordinat.", "Paket aktif tersedia.", "PSB pelanggan SIMULASI berhasil dibuat dengan pilihan ODP, paket, OLT, dan MikroTik.", "Detail pelanggan dapat dibuka dan kode pelanggan muncul.", "Pembayaran simulasi dapat dicatat.", "Password PPPoE tidak terlihat pada daftar, detail umum, invoice, maupun export.", "Archive dan restore pelanggan simulasi berjalan.", "Audit Log mencatat aksi relevan."]},
    {"type": "heading", "text": "14. Penanganan Masalah", "level": 1},
    {"type": "table", "header": ["Gejala", "Tindakan operator"], "rows": [["Menu kembali ke login", "Login ulang; pastikan akun memiliki peran yang sesuai."], ["Perangkat tidak muncul di PSB", "Pastikan tersimpan pada Registry Perangkat; muat ulang halaman PSB."], ["ODP tidak muncul", "Pastikan ODP memiliki kode, nama, dan koordinat lalu sudah disimpan."], ["Paket tidak bisa dipilih", "Pastikan paket aktif dan kode paket tidak duplikat."], ["Error aplikasi", "Catat menu, waktu, dan langkah terakhir; laporkan ke developer. Jangan mengubah data berulang-ulang."], ["Perangkat fisik belum berubah", "Itu normal bila belum masuk fase integrasi lab/otorisasi; jangan memaksa command dari aplikasi."]], "style": "Table Grid"},
    {"type": "heading", "text": "15. Penutup", "level": 1},
    {"type": "paragraph", "text": "Manual ini adalah acuan operasional BestWeb versi saat ini. Setiap perubahan alur, vendor adapter, atau integrasi perangkat fisik wajib diuji dan dicatat sebelum dinyatakan siap produksi."}
  ]
}
