Semua Modul
Panduan Per Tab/Menu

Fungsi, cara kerja, dan langkah penggunaan semua halaman aplikasi.

Halaman ini dibuat sebagai katalog cepat. Setiap modul berisi mockup UI seperti screenshot, penjelasan fungsi, cara kerja, dan langkah penggunaan agar user tidak bingung saat masuk ke menu aplikasi.

Daftar Cepat

Klik nama modul untuk langsung menuju panduan.

DashboardRingkasan operasional tenant. Peta JaringanTopologi, POP, ODP, pelanggan. AlarmGangguan dan event penting. ONU / ONTStatus pelanggan fiber. OLT DevicesPerangkat OLT dan polling. ODP / ODC ManagementDistribusi dan kapasitas jaringan. Network / NASRouter, NAS, PPPoE, hotspot, DHCP lease VyOS, dan pending binding pelanggan tanpa MAC. PRTG MonitoringIntegrasi sensor monitoring. PelangganData customer dan status layanan. Paket InternetProduk, harga, dan billing. Hotspot / VoucherVoucher dan akses hotspot. Kontrak & DokumenArsip kontrak dan file pelanggan. Tiket & HelpdeskLaporan gangguan dan SLA. Jadwal TeknisiDispatch dan agenda kerja. AbsensiCheck-in, lembur, dan payroll teknisi. Home BaseKoordinasi teknisi dan area kerja. LapanganUpdate pekerjaan teknisi. Catatan / MemoInformasi internal operasional. Billing & InvoiceTagihan, overdue, pembayaran. Payment GatewayVA, QRIS, callback pembayaran. Paypoint POPKasir mobile pembayaran cash di POP. Data KeuanganKas/bank, hutang, piutang, dan laba rugi. PenjualanLead, penawaran, order, invoice, gudang, dan jadwal teknisi. Request UangClaim operasional dan reimbursement staff. Referral / ResellerPartner penjualan dan komisi. MitraPendaftaran dan approval mitra. GudangStok perangkat dan material. Aset KantorAset milik kantor per unit. Asset ONUAsset perangkat pelanggan. Request BarangPermintaan material teknisi. Laporan PDFExport laporan resmi. StatistikGrafik operasional. WhatsApp BotPesan otomatis WA. Telegram BotAlert grup Telegram. Email / SMTPEmail sistem dan invoice. NotifikasiTemplate dan channel. Inbox / OutboxStatus pesan masuk/keluar. Log & AktivitasAudit operasional. Backup & RestoreBackup manual/otomatis. File ManagerFolder pribadi dan umum tenant. File ShareRepository file internal tenant master. APK BuilderBuild aplikasi Android. Akun SayaProfil, keamanan, bank, email, dan hak akses akun aktif. Platform AdminKontrol platform pusat. PenggunaAkun user tenant. Role & Hak AksesPermission per modul. PengaturanKonfigurasi tenant.

Monitoring & Network

Menu untuk NOC, admin jaringan, dan tim operasional.

Dashboard
Dashboard

Dashboard

Fungsi: menampilkan ringkasan pelanggan aktif, tiket terbuka, invoice, OLT/ONU, alarm, dan backup terakhir.

Cara kerja: dashboard mengambil data dari modul lain dan merangkum status terbaru agar admin bisa mengambil tindakan cepat.

  1. Buka menu `Dashboard` setelah login.
  2. Cek kartu KPI utama: pelanggan, tiket, billing, alarm, dan backup.
  3. Klik kartu bermasalah untuk masuk ke modul detail.
  4. Gunakan filter periode bila tersedia untuk melihat tren harian/bulanan.
Peta Jaringan
Network Map

Peta Jaringan

Fungsi: melihat lokasi POP, OLT, ODC, ODP, jalur distribusi, dan pelanggan pada peta.

Cara kerja: sistem memakai koordinat perangkat/pelanggan lalu menampilkan hubungan antar titik jaringan.

  1. Buka `Peta Jaringan`.
  2. Pilih layer: POP, OLT, ODP/ODC, pelanggan, atau tiket aktif.
  3. Klik marker untuk melihat detail perangkat atau pelanggan.
  4. Gunakan peta untuk menentukan area gangguan dan rute teknisi.
Alarm
Alert

Alarm

Fungsi: mengumpulkan alarm perangkat, LOS massal, host down, backup gagal, atau event penting lain.

Cara kerja: alarm dibuat dari monitoring, polling, integrasi, atau event internal lalu diberi severity.

  1. Buka `Alarm`.
  2. Filter severity: critical, warning, info, atau resolved.
  3. Buka detail alarm untuk melihat sumber dan waktu kejadian.
  4. Buat tiket atau acknowledge alarm agar tim tahu sedang ditangani.
ONU / ONT
Fiber

ONU / ONT

Fungsi: melihat status ONU/ONT pelanggan, serial number, port PON, redaman, online/offline, dan LOS.

Cara kerja: data diambil dari OLT melalui polling SNMP/CLI lalu dipetakan ke pelanggan. Daftar default menampilkan ONU yang paling baru teregistrasi/terdeteksi di bagian atas; bila waktu registrasi tidak ada, sistem memakai `created_at`, `last_seen`, lalu ID terbaru.

  1. Buka `ONU / ONT`.
  2. Cari berdasarkan pelanggan, SN, port, atau status.
  3. Cek power optic dan status terakhir.
  4. Mapping ONU ke pelanggan jika belum terhubung.
  5. Buat tiket bila ditemukan LOS atau redaman buruk.
  6. Pada modal `Buat Tiket`, dropdown teknisi menampilkan label Home Base/POP seperti `NGR01 - POP-NEGARA`. Teknisi boleh memegang lebih dari satu tiket; status tidak available hanya dipakai untuk bentrok jadwal pada waktu eksekusi.
OLT Devices
OLT

OLT Devices

Fungsi: mengelola data OLT, vendor, IP management, credential, port PON, dan status polling.

Cara kerja: admin memilih tab vendor seperti SmartOLT, C-DATA CMS, VSOL, HSGQ, HIOSO, BDCOM, FiberHome, atau ZTE OLT. FiberHome memakai SNMP untuk status/signal ONU dengan auto-detect OID base fh/hw dan Telnet untuk detail ONU.

  1. Buka `OLT Devices`.
  2. Pilih tab vendor, misalnya `FiberHome` untuk AN5516/AN5506 atau `BDCOM` untuk P3310/P3608/P3616.
  3. Isi nama, model, IP management, port SNMP, community, status polling, dan credential Telnet jika vendor membutuhkan detail ONU.
  4. Klik `Test SNMP`. Jika gagal, cek community, UDP 161, ACL/firewall OLT, VLAN management, dan routing dari server aplikasi.
  5. Simpan lalu jalankan poll untuk membaca status/signal ONU. Untuk FiberHome, sistem menyimpan `snmp_oid_base` sebagai `fh`, `hw`, atau `none`.
  6. Untuk ZTE lengkapi Telnet/SSH; untuk FiberHome lengkapi Telnet karena format ONU memakai port `0/1/1:1`.
ODP / ODC Management
Distribusi

ODP / ODC Management

Fungsi: mencatat ODC, ODP, kapasitas port, lokasi, splitter, dan pelanggan yang terhubung.

Cara kerja: setiap ODP/ODC menjadi node distribusi yang dipakai untuk mapping pelanggan dan perencanaan kapasitas.

  1. Buka `ODP / ODC Management`.
  2. Tambah ODC/ODP dengan nama, lokasi, koordinat, kapasitas, dan parent node.
  3. Hubungkan pelanggan/ONU ke port yang benar.
  4. Pantau port kosong, penuh, atau bermasalah.
Network / NAS
NAS

Network / NAS

Fungsi: mengelola router/NAS untuk PPPoE, hotspot, radius, pool IP, dan autentikasi layanan.

Cara kerja: NAS dipakai sebagai gerbang akses pelanggan; data pelanggan/paket dapat disinkronkan ke perangkat jaringan.

  1. Buka `Network / NAS`.
  2. Tambah NAS dengan IP, secret, tipe, dan lokasi.
  3. Atur profile layanan atau pool IP sesuai paket.
  4. Test koneksi dan cek user aktif.
  5. Jika muncul pesan seperti `Gagal koneksi ke MikroTik: Connection timed out`, cek service API MikroTik, port yang dipakai, firewall/address-list allowed source dari server aplikasi, dan route VPN/NAT. NetAdmin menampilkan error ini inline pada tabel Network agar tidak mengganggu halaman lain.
PRTG Monitoring
Integrasi

PRTG Monitoring

Fungsi: menampilkan sensor PRTG seperti bandwidth, uptime, CPU, memory, interface, dan device down.

Cara kerja: aplikasi membaca data dari API PRTG lalu menampilkan status sensor penting di Netadmin.

  1. Buka `PRTG Monitoring`.
  2. Isi host/API token PRTG di pengaturan integrasi jika belum ada.
  3. Pilih sensor yang ingin ditampilkan.
  4. Gunakan status sensor untuk eskalasi tiket atau alarm.

Pelanggan, Produk, dan Dokumen

Menu untuk admin, CS, billing, dan partner penjualan.

Customer

Pelanggan

Fungsi: menyimpan data pelanggan, kontak, alamat, paket, status layanan, data teknis, dan riwayat aktivitas.

  1. Buka `Pelanggan`.
  2. Klik `Tambah Pelanggan`.
  3. Isi nama, WhatsApp, alamat, paket, tanggal aktif, dan status.
  4. Isi `Titik Koordinat` dengan paste `lat,lng` atau link Google Maps bila lokasi pelanggan sudah ada; sistem otomatis membaca Latitude dan Longitude.
  5. Pada bagian `Tiket PSB`, aktifkan `Buat tiket PSB & jadwal teknisi`, lalu pilih `Waktu Eksekusi / Jadwal PSB` jika pekerjaan tidak ingin memakai jadwal otomatis default.
  6. Untuk layanan DHCP atau Static IP, field `MAC Address` boleh dikosongkan jika ONU/CPE belum online. Jika sudah ada MAC dari report, format seperti `AABB.CCDD.EEFF`, `AABBCCDDEEFF`, atau `aa-bb-cc-dd-ee-ff` otomatis dirapikan menjadi `AA:BB:CC:DD:EE:FF`.
  7. Lengkapi data teknis bila sudah ada ONU/ODP.
  8. Simpan dan cek detail pelanggan.

Pesan error: jika titik koordinat tidak dikenali atau di luar range Latitude/Longitude, sistem menampilkan contoh format yang benar. Jika tiket PSB otomatis dicentang tetapi waktu eksekusi kosong/tidak valid, sistem meminta operator memilih tanggal dan jam dari form. Jika MAC tidak berisi 12 digit hex, sistem menolak dengan contoh format yang benar agar operator bisa langsung memperbaiki copy-paste report.

Pelanggan
Produk

Paket Internet

Fungsi: membuat paket layanan, speed, harga, siklus tagihan, profile NAS, deskripsi produk, dan paket khusus Mitra.

  1. Buka `Paket Internet`.
  2. Klik tambah paket.
  3. Isi nama paket, speed, harga, pajak, dan periode billing.
  4. Hubungkan ke profile NAS/hotspot bila dipakai.
  5. Centang `Paket khusus Mitra` jika paket hanya untuk layanan internet Mitra.
  6. Simpan lalu gunakan paket saat tambah pelanggan atau saat membuat pelanggan dari detail Mitra.
Paket Internet
Hotspot

Hotspot / Voucher

Fungsi: membuat voucher hotspot, profile masa aktif, kuota, harga, dan distribusi kode voucher.

  1. Buka `Hotspot / Voucher`.
  2. Buat profile voucher: durasi, kuota, speed, harga.
  3. Generate jumlah voucher yang dibutuhkan.
  4. Cetak/export voucher atau kirim ke reseller.
  5. Pantau voucher terjual, aktif, dan expired.
Hotspot / Voucher
Dokumen

Kontrak & Dokumen

Fungsi: menyimpan kontrak pelanggan, KTP/NPWP, BA instalasi, bukti pembayaran, dan dokumen layanan.

  1. Buka detail pelanggan atau menu `Kontrak & Dokumen`.
  2. Klik upload dokumen.
  3. Pilih tipe dokumen dan file.
  4. Isi catatan, tanggal berlaku, atau masa expired.
  5. Simpan. Jika S3 aktif, dokumen tersimpan di object storage.
Kontrak & Dokumen

Tiket, Teknisi, dan Lapangan

Menu untuk helpdesk, koordinator teknisi, teknisi, dan gudang.

Helpdesk

Tiket & Helpdesk

Fungsi: menerima laporan, membuat tiket, mengatur SLA, assign teknisi available dari home base terdekat, membuat incident massal, membatasi role teknisi hanya ke tiket yang ditugaskan kepadanya, dan menutup gangguan.

Cara kerja incident: tombol `Incident` membuat tiket khusus gangguan massal. Operator memilih OLT atau Home Base sebagai scope, mengisi severity, estimasi pulih, area terdampak, dan penyebab awal, lalu bisa klik `Generate Kata-kata` untuk membuat draft deskripsi incident, template tiket anak/jadwal teknisi, dan pesan WA group. Jika `Auto-tautkan tiket terbuka` dicentang, sistem menautkan tiket `Open`/`Diproses` yang cocok dengan OLT/Home Base. Jika `Langsung buat tiket & jadwal teknisi pelanggan terdampak` dicentang, sistem membuat tiket anak untuk pelanggan dari ONU yang berada pada OLT/Home Base terdampak, menghindari duplikat tiket aktif, memakai template kata-kata tiket anak, lalu membuat jadwal pending di `Jadwal Teknisi` untuk tiap tiket anak. Jika `Kirim WA ke group operasional` dicentang, sistem mengirim ringkasan ke group WhatsApp yang aktif untuk event `Incident Massal` di pengaturan WhatsApp Bot. Jika `Kirim WA ke pelanggan tiket tertaut` dicentang, sistem mengirim template `Tiket Terkait Incident` hanya ke pelanggan dari tiket yang tertaut otomatis.

  1. Buka `Tiket & Helpdesk`.
  2. Klik buat tiket dan pilih pelanggan, atau klik `Incident` untuk gangguan massal.
  3. Untuk tiket biasa, isi kategori, prioritas, dan deskripsi.
  4. Untuk incident, pilih OLT/Home Base agar auto-link dan pembuatan tiket/jadwal terdampak aman, isi severity dan estimasi pulih, generate/edit kata-kata bila perlu, lalu centang opsi auto-link, buat tiket & jadwal teknisi, WA pelanggan, atau WA group sesuai kebutuhan.
  5. Atur group tujuan dari `WhatsApp Bot > Daftar Group Notifikasi`; centang event `Incident Massal` pada group NOC/teknisi yang harus menerima pesan.
  6. Koordinator membuka `Jadwal Teknisi` untuk assign/dispatch jadwal pending dari tiket anak incident.
  7. Tutup tiket setelah solusi dan bukti lengkap. Untuk incident, gunakan `Selesaikan Incident + Anak` saat layanan normal agar tiket anak aktif ikut resolved.
  8. Jika tiket selesai perlu dibuka ulang, buka detail tiket lalu klik tombol `Reopen`. Admin dapat mengatur siapa yang boleh reopen dari `Pengaturan > SLA Tiket > Opsi Reopen Tiket Selesai`: pilih role staff yang diizinkan dan, bila perlu, aktifkan pelanggan agar bisa reopen tiket miliknya dari `/portal` dengan alasan wajib.

Indikator sukses incident: toast menampilkan jumlah tiket tertaut otomatis, tiket pelanggan yang dibuat, jadwal teknisi yang dibuat, group WA terkirim, WA pelanggan terkirim, dan WA gagal bila ada. Jika OLT/Home Base kosong, sistem melewati auto-link/pembuatan tiket dengan pesan aman agar tidak semua tiket aktif ikut tertaut.

Tiket & Incident
Dispatch

Jadwal Teknisi

Fungsi: mengatur jadwal PSB, maintenance, gangguan, survey, dan kunjungan pelanggan.

  1. Buka `Jadwal Teknisi`.
  2. Pilih tanggal dan teknisi.
  3. Tambahkan pekerjaan dari tiket/PSB atau buat agenda baru.
  4. Isi lokasi, waktu, prioritas, dan catatan.
  5. Pantau status hadir, proses, selesai, atau batal.
Jadwal Teknisi
HR Operasional

Absensi & Lembur

Fungsi: mencatat check-in/check-out karyawan, bukti GPS dan selfie, multi Home Base absensi, jadwal fleksibel per staff, gaji pokok, tunjangan, potongan, Take Home Pay, pengajuan izin/cuti/sakit/koreksi, kuota cuti tahunan, notifikasi approval ke admin, audit trail perubahan, work log teknisi dari jadwal/tiket, approval lembur, laporan payroll Absensi, dan export CSV.

Policy Payroll Staff: admin dapat mengatur potongan telat sebagai `Per Hari`, `Per Jam`, atau `Per Menit`, mengisi batas `Telat Dianggap Tidak Masuk`, serta membuat kategori `Potongan Lain` seperti BPJS, Asuransi, Kasbon, Koperasi, atau Lainnya. Payroll menampilkan menit telat, hari telat yang dianggap tidak masuk, potongan tidak masuk, dan rincian kategori agar mudah diaudit.

Setup role: buka `Role & Hak Akses`, cari `Absensi`, lalu aktifkan `Lihat absensi` untuk akses dashboard/rekap/export dan `Kelola absensi` untuk pengaturan, approval lembur, izin/koreksi, saldo cuti, dan Policy Staff.

Aturan check-in: `Check-in Saya` wajib memakai kamera langsung dari perangkat. Operator harus membuka kamera, mengambil foto dari pratinjau live, dan mengirim bukti GPS; foto kamera otomatis di-resize/kompres sebelum dikirim, sedangkan upload/pilih foto dari galeri tidak diperbolehkan untuk check-in.

Cara kerja: aturan tenant tetap menjadi default. Jika staff punya aturan khusus, admin mengisi tab `Policy Staff`: Home Base absensi yang diizinkan, `Gudang Asal Utama Request Barang`, apakah boleh semua Home Base, jadwal fleksibel atau jam kerja khusus, toleransi telat, gaji pokok, tunjangan makan/transport, potongan telat, dan potongan lain. Saat check-in/check-out, sistem memvalidasi GPS terhadap Home Base staff yang ditugaskan; jika belum ada policy/Home Base valid, sistem memakai titik kantor/home base global tenant sebagai fallback.

  1. Buka menu `Absensi` lalu pilih tab Dashboard untuk melihat ringkasan periode.
  2. Admin membuka tab `Pengaturan`, mengisi koordinat kantor/home base default, radius meter, batas akurasi GPS, kuota cuti tahunan default, serta opsi notifikasi WA/Telegram approval.
  3. Admin membuka tab `Policy Staff`, klik `Edit` pada staff, aktifkan `Staff Absensi` bila user ikut absensi, pilih status kerja, pilih satu atau beberapa Home Base absensi atau semua Home Base, pilih `Gudang Asal Utama Request Barang` bila teknisi perlu default gudang tertentu, atur jadwal fleksibel/jam kerja, toggle `Ikut Payroll`, gaji pokok, tunjangan, dan potongan.
  4. Teknisi menekan `Check-in Saya`, mengizinkan GPS, lalu mengambil atau memilih foto selfie. Jika berada di luar radius semua Home Base yang ditugaskan, sistem menolak dengan pesan jarak dan Home Base terdekat.
  5. Staff membuka tab `Izin/Koreksi`, lalu memilih `Ajukan Izin/Cuti/Sakit` atau `Ajukan Koreksi` dan mengisi alasan minimal 5 karakter.
  6. Admin/koordinator membuka tab `Izin/Koreksi`, memilih `Setujui` agar status/jam absensi diterapkan, atau `Tolak` dengan alasan wajib. Admin menerima notifikasi WA/Telegram jika setting aktif dan channel tersedia.
  7. Admin membuka tab `Kuota Cuti` untuk melihat saldo tahunan, cuti terpakai, penyesuaian, sisa cuti, dan mengubah saldo bila ada carry-over atau koreksi.
  8. Admin/finance membuka tab `Payroll` untuk melihat rekap staff yang `Ikut Payroll`: hadir, telat, izin/cuti/sakit, lembur approved, gaji pokok, tunjangan, potongan, dan `THP`, lalu export CSV. User non Staff Absensi atau status Nonaktif tidak dihitung.
  9. Supervisor membuka tab `Lembur`, memeriksa tiket/jadwal penyebab lembur, lalu memilih `Setujui` atau `Tolak` dengan alasan.
  10. Admin membuka tab `Audit` untuk melihat siapa membuat pengajuan, approve/reject, mengubah policy, mengubah kuota, atau menerapkan koreksi beserta waktu dan detailnya.

Indikator sukses: KPI hadir, work log aktif, lembur pending, menit approved, nominal lembur, badge `GPS` dan `Selfie`, policy Home Base, Gudang Asal Utama Request Barang, status pengajuan `approved/rejected`, sisa cuti, nilai THP, dan audit trail terisi sesuai filter tanggal. Jika tabel policy belum dimigrasikan, tab `Policy Staff` menampilkan pesan error jelas tanpa merusak dashboard Absensi. User yang dinonaktifkan sebagai Staff Absensi tetap bisa login sesuai role, tetapi tidak boleh check-in/check-out dan tidak dihitung payroll.

Absensi Mobile

Full Suite Absensi

Fungsi: memperluas modul Absensi dengan portal mobile `/absensi`, kamera langsung, GPS, device binding, anti-fraud, Shift/Roster, Device & Fraud, Approval Flow, Payroll Detail, dan Analitik. Tampilan mobile baru menampilkan hero dashboard, KPI bulan berjalan, status device, checklist bukti, progres kamera/GPS, timeline riwayat, pengajuan terakhir, dan tombol install ke home screen.

  1. Staff membuka `/absensi`, login memakai akun tenant, lalu melihat status hari ini dan roster.
  2. Staff menekan `Verifikasi Liveness`, mengikuti instruksi wajah hidup, mengambil foto dari pratinjau live, mengizinkan GPS, lalu check-in/check-out. Jika kamera, liveness, GPS, device, radius, mock GPS, atau skor risiko bermasalah, sistem menampilkan pesan error spesifik beserta saran tindakan.
  3. Jika internet putus saat submit, `/absensi` menyimpan payload ke `Offline Queue` dengan idempotency key lalu mengirim ulang otomatis saat online.
  4. Staff membuka tab `Fitur` untuk melihat kalender shift, ringkasan payroll pribadi, QR/NFC lokasi, reminder browser, dan visit/site work.
  5. Admin/koordinator membuka `Approval Mobile` dari tab `Fitur` untuk approve atau tolak pengajuan pending dengan alasan jelas.
  6. Staff membuka tab `Pengajuan` untuk Izin, Cuti, Sakit, atau Koreksi jam absensi. Pengajuan dari mobile ditandai source `mobile` di audit.
  7. Admin membuka `Absensi > Shift/Roster` untuk membuat template shift dan assignment harian/off/on-call.
  8. Admin membuka `Device & Fraud` untuk melihat device yang dipakai staff dan mengubah status menjadi `Trusted` atau `Blocked`.
  9. Admin membuka `Approval Flow` untuk mengatur approval berjenjang per jenis pengajuan. Jika flow belum dibuat, approval lama tetap berjalan.
  10. Finance/admin membuka `Payroll` dan `Analitik` untuk memeriksa THP, lembur approved, flag fraud, dan performa periode.

Fallback aman: migration full suite disiapkan sebagai draft dan belum dijalankan otomatis. Jika tabel baru belum tersedia, tab lanjutan dan endpoint mobile mengembalikan pesan `attendance_full_suite_schema_missing` dengan instruksi menjalankan migration setelah approval production.

/absensi
Auto Liveness

Liveness Otomatis

Fungsi: liveness wajah di `/absensi` berjalan otomatis setelah staff menekan `Buka Kamera` dan preview kamera aktif. Staff tidak perlu menekan tombol liveness terpisah.

  1. Staff membuka `/absensi` lalu menekan `Buka Kamera`.
  2. Sistem menampilkan instruksi liveness singkat dan countdown otomatis.
  3. Jika wajah terlihat jelas, status berubah menjadi berhasil dan staff bisa menekan `Ambil Foto` lalu `Check-in`.
  4. Admin dapat membuka `Absensi > Pengaturan`, mengaktifkan atau mematikan `Liveness wajah wajib`, dan mengatur `Skor Minimal Liveness`.
  5. Jika liveness gagal, sistem menampilkan pesan jelas seperti kamera belum stabil, wajah belum terlihat jelas, atau skor liveness di bawah batas minimal.

Catatan: izin kamera pertama kali tetap mengikuti aturan browser sehingga staff harus menyetujui permission kamera.

Teknisi Mobile

Portal Teknisi di /absensi

Fungsi: menjadikan `/absensi` sebagai pusat kerja teknisi mobile dengan tampilan ala portal pelanggan: ringkas, card-based, mobile-first, dan fokus pada aksi lapangan.

  1. Teknisi membuka tab `Teknisi` untuk melihat `Tugas Hari Ini`, jadwal, tiket aktif, dan work log aktif.
  2. Teknisi membuka sub-tab `Riwayat Tiket` untuk melihat KPI pribadi seperti Pending, Diproses, Sukses, dan SLA Terlambat, lalu memfilter tiket berdasarkan periode, status, atau pencarian nomor tiket/pelanggan.
  3. Teknisi klik kartu pekerjaan/tiket untuk membuka detail mobile. Detail menampilkan ringkasan status, pelanggan/lokasi, home base, sumber tiket, waktu dibuat, teknisi/lead, tim, deskripsi, rute Maps, checklist/material, serta Reward & Punishment.
  4. Untuk tiket aktif, teknisi menekan `Mulai Proses`, `Progress`, `Checklist PSB`, `Request Barang`, `Request Uang`, `Jadwalkan Ulang`, atau `Selesaikan` langsung dari detail. Saat `Progress` dibuka, tiket lain disembunyikan sementara dan form progress tampil tepat di bawah tiket terkait agar catatan/foto tidak salah masuk tiket.
  5. Foto progress bersifat opsional, diupload dari HP, otomatis di-resize, lalu tersimpan sebagai lampiran tiket. Jika Object Storage/S3 tenant sementara tidak bisa dijangkau, sistem fallback ke local storage agar progress tetap tersimpan. `Jadwalkan Ulang` memperbarui waktu eksekusi tiket dan jadwal teknisi aktif yang terkait.
  6. `Mulai Visit/GPS` tidak menjadi langkah wajib tiket; tombol itu dipakai untuk jadwal/work log khusus jika admin memang meminta visit tracking.
  7. Jika pekerjaan PSB, teknisi menekan `Checklist PSB` agar foto wajib, SN ONT, dan material dari `Gudang Teknisi` tersimpan sebelum tiket diselesaikan.
  8. Panel Reward & Punishment menjelaskan estimasi bonus, syarat cair, hold payout, pembagian tim, dokumentasi wajib, dan potensi punishment yang memerlukan review admin atau otomatis sesuai aturan tenant.
  9. Teknisi membuat `Request Uang Operasional` untuk bensin, parkir, tol, konsumsi, pembelian kecil, reimbursement, atau kasbon. Bukti/struk wajib JPG, PNG, WEBP, atau PDF maksimal 5 MB.
  10. Teknisi membuka `Request Barang`, memilih `Gudang Asal` yang otomatis difilter sesuai Home Base teknisi, memilih `Referensi Tiket/Jadwal`, lalu menambahkan satu atau banyak item dengan tombol `Tambah Item`. Setiap baris item memilih barang yang benar-benar tersedia di stok gudang/POP tersebut, quantity, dan catatan opsional. Jika gudang kosong, quantity melebihi stok, item duplikat, atau referensi bukan milik teknisi, sistem menolak dengan pesan jelas. Jika item masih ada di `Gudang Teknisi`, sistem menampilkan stok tersisa dan meminta konfirmasi `Tetap Request Barang`.
  11. Saat Gudang/Admin memproses request teknisi, stok dipindahkan dari Gudang Asal wilayah teknisi ke `Gudang Teknisi - Nama Teknisi`; jika lokasi teknisi belum ada, sistem membuatnya otomatis.
  12. Pesan error menjelaskan field yang kurang: detail pekerjaan belum termuat, tiket tidak ditemukan/assignment salah, catatan progress terlalu pendek, foto progress tidak valid, jadwal ulang belum lengkap, judul/nominal/keterangan/bukti request uang, Gudang Asal tidak sesuai Home Base, item/quantity/alasan request barang, katalog Gudang, atau stok Gudang Teknisi yang belum tersedia.

Indikator sukses: kartu Work bisa diklik ke detail, tombol aksi tidak membuka detail tanpa sengaja, reward/punishment terbaca oleh teknisi, form progress fokus pada tiket terkait, request uang tampil dengan nomor MR dan status pending/approved/paid, request barang tampil dengan nomor request dan jumlah item, stok masuk ke Gudang Teknisi setelah diproses, serta visit/tracking hanya berjalan jika memang dimulai dari fitur Visit.

Portal Teknisi
PSB Mobile

Checklist PSB di /absensi

Fungsi: memastikan tiket PSB tidak ditutup tanpa bukti instalasi, data ONT/SN, dan material terpakai yang lengkap dari HP teknisi.

  1. Teknisi membuka tab `Teknisi`, memilih tiket PSB, lalu menekan `Checklist PSB` atau `Progress`.
  2. Tahap `Foto` mewajibkan Foto ODP, Power ODP, label/port ODP, depan rumah pelanggan, ONT dan SN, power ke ONT, ONT terpasang, dan speedtest. Foto JPG/PNG/WEBP otomatis di-resize sebelum upload dan tersimpan sebagai draft.
  3. Tahap `Material` mewajibkan pilihan ONT/SN, kabel, konektor SC, pigtail, dan item tambahan dari `Gudang Teknisi`. Item muncul hanya jika stok sudah dipindahkan oleh Gudang/Admin dari Request Barang teknisi ke `Gudang Teknisi`; stok gudang pusat/POP tidak langsung bisa dipakai pada form material lapangan.
  4. Tahap `Review` menampilkan foto yang sudah/kurang, ringkasan material, dan tombol `Selesaikan Tiket PSB` hanya efektif saat checklist lengkap.
  5. Saat tiket diselesaikan, sistem mengurangi stok `Gudang Teknisi` sesuai material terpakai dan menandai SN ONT sebagai terpasang/deployed.
  6. Jika data belum lengkap atau stok teknisi belum tersedia, sistem menolak resolve dengan pesan jelas yang menyebut item yang kurang, misalnya foto speedtest, ONT/SN, kabel, konektor SC, pigtail, atau stok Gudang Teknisi.

Setup wajib: tiket PSB harus memiliki jadwal teknisi dan Request Barang harus sudah diproses Gudang/Admin agar stok masuk ke Gudang Teknisi. Jika belum ada stok, teknisi membuat Request Barang terlebih dahulu dari `/absensi`.

Fallback aman: teknisi dapat mengganti foto/material dengan upload atau simpan ulang sebelum tiket selesai. Tiket yang sudah resolved/closed perlu reopen oleh role yang diizinkan sebelum checklist dikoreksi lagi.

Checklist PSB Mobile
Akun Mobile

Akun & Perangkat di /absensi

Fungsi: membantu staff/teknisi mengecek profil, status perangkat, preferensi portal, dan bantuan izin browser langsung dari `/absensi`.

  1. Buka tab `Akun` pada bottom navigation `/absensi`.
  2. Periksa nama, email, role, tenant, Device UID, dan jumlah antrian offline.
  3. Lihat status device: `trusted`, `pending`, atau `blocked`. Jika belum trusted, minta admin membuka `NetAdmin > Absensi > Device & Fraud`.
  4. Gunakan `Ganti Theme`, `Install PWA`, dan `Reminder` sesuai kebutuhan perangkat.
  5. Jika kamera/GPS bermasalah, baca bantuan cepat: izin kamera, lokasi akurasi tinggi, dan panduan device belum trusted.
  6. Gunakan `Salin Device UID` untuk verifikasi admin dan `Logout` saat HP dipakai bersama.

Indikator sukses: halaman mengikuti theme dark/light, kartu device jelas, status browser tampil, dan action button tetap readable di mobile.

Branding

Pengaturan Tampilan /absensi dari NetAdmin

Fungsi: admin dapat mengatur branding dan theme portal `/absensi` tanpa edit file manual.

  1. Buka `NetAdmin > Absensi > Pengaturan`.
  2. Pada bagian `Tampilan /absensi`, isi `Judul Brand`, `Subjudul Brand`, `Judul Hero`, dan `Subtitle Hero`.
  3. Pilih `Mode Theme Default`: `Ikuti pilihan user`, `Paksa Dark`, atau `Paksa Light`.
  4. Pilih `Warna Aksen` dan `Warna Hero` dengan format HEX valid. Sistem menolak warna yang tidak valid.
  5. Aktifkan/nonaktifkan `Tampilkan ilustrasi hero teknisi` sesuai kebutuhan.
  6. Klik `Simpan`, lalu refresh `/absensi`. Portal mobile memakai setting tenant terbaru dari API status mobile.

Fallback aman: jika setting kosong atau warna tidak valid, sistem memakai default `Absensi`, `Portal mobile staff`, `Portal Teknisi`, aksen biru, dan hero biru.

Login

Login /absensi ala Portal Pelanggan

Fungsi: halaman login `/absensi` dibuat lebih informatif dan mobile-friendly agar staff paham manfaat portal sebelum masuk.

  1. Staff membuka `/absensi` dan melihat hero `Selamat datang di Absensi Mobile` dengan penjelasan absensi, GPS, device audit, dan keamanan.
  2. Staff mengisi `Email Staff` dan `Password`, lalu menekan `Masuk Absensi`.
  3. Jika password perlu dicek, staff dapat memakai tombol mata untuk menampilkan/menyembunyikan password.
  4. Jika input salah, sistem menampilkan pesan jelas: email wajib, format email tidak valid, password wajib, email/password tidak cocok, akun tidak punya akses, terlalu banyak percobaan, koneksi terputus, atau server bermasalah.
  5. Setelah login berhasil, perangkat otomatis didaftarkan untuk audit device dan anti-fraud.

Indikator sukses: tombol berubah loading saat proses login, pesan sukses tampil, lalu staff masuk ke dashboard `/absensi`.

GPS Tracking

GPS Tracking Visit /absensi

Fungsi: mencatat titik lokasi teknisi selama visit/site work berjalan, tanpa tracking 24 jam.

  1. Admin membuka `NetAdmin > Absensi > Pengaturan`, lalu mengaktifkan `GPS Tracking Visit`.
  2. Admin mengatur interval tracking, batas akurasi GPS, dan batas stale tracking.
  3. Teknisi membuka `/absensi`, masuk tab `Fitur`, lalu menekan `Mulai Visit`.
  4. Selama visit aktif dan halaman `/absensi` terbuka, sistem mengirim titik lokasi berkala ke backend.
  5. Jika internet putus, titik tracking masuk Offline Queue dan dikirim saat koneksi kembali.
  6. Teknisi dapat menekan `Kirim Titik Sekarang`, `Mulai Tracking`, atau `Stop Tracking` bila diperlukan.
  7. Saat `Selesai Visit`, sistem mengirim titik terakhir lalu menghentikan tracking.

Pesan status: `Tracking aktif`, `GPS lemah`, `Offline`, `Tracking stale`, atau `Belum ada Visit aktif` tampil langsung di `/absensi` agar teknisi tahu apa yang harus dilakukan.

Batasan PWA: browser dapat membatasi GPS saat halaman ditutup/background. Untuk tracking background penuh, gunakan aplikasi native/APK.

Reward

Insentif Staff

Fungsi: mengatur reward dan punishment staff/teknisi per tenant agar nominal, satuan, syarat, hold, review, payout, dan deskripsi tidak hardcoded.

  1. Buka `Insentif Staff` di NetAdmin. Modul ini dipisahkan dari `Absensi` agar Absensi fokus ke hadir, telat, izin/cuti, lembur, payroll, dan policy staff.
  2. Pada tab `Aturan Bonus`, setiap aturan tampil sebagai kartu theme-aware. Isi nama aturan, sumber Tiket/Jadwal/Incident/Work Log/Referral, tipe pekerjaan, nominal, satuan hitung, pembagian, hold pencairan, syarat, deskripsi, dan status aktif.
  3. Pengaturan komisi referral tetap berada di `Referral / Reseller`; bonus referral staff/teknisi hanya ditarik ke `Insentif Staff` untuk review dan payout jika email atau nomor HP referrer cocok dengan akun internal.
  4. Pada tab `Punishment`, isi nama potongan, sumber, trigger, nominal/persen, mode review admin atau otomatis, grace period, dan deskripsi transparan untuk staff/teknisi.
  5. Jika ada field salah, sistem menampilkan pesan jelas seperti nama aturan wajib, nominal tidak boleh negatif, hold/grace harus 0-365 hari, deskripsi wajib, permission kurang, atau referensi payout wajib.
  6. Pada tab `Review Bonus`, admin menyetujui, menolak, atau mengembalikan item ke pending dengan catatan jelas.
  7. Pada tab `Payout`, item approved yang belum paid bisa ditandai sudah dibayar dengan referensi payout.
  8. Teknisi membuka `/absensi` sub tab `Insentif` untuk melihat estimasi bonus, status review, hold cair, syarat, dan payout.

Fallback aman: tahap awal menyimpan aturan dan review di setting tenant. Jika perlu audit akuntansi lebih detail, data bisa dimigrasikan ke tabel khusus tanpa mengubah konsep UI.

Insentif Staff
Teknisi

Home Base

Fungsi: mengelompokkan teknisi berdasarkan base/area kerja agar dispatch lebih cepat, sekaligus menentukan gudang mana yang boleh dipakai teknisi untuk Request Barang di `/absensi`.

  1. Buka `Home Base`.
  2. Tambah nama base, lokasi, area cakupan, dan koordinator.
  3. Masukkan teknisi ke base yang sesuai.
  4. Pada bagian Gudang Asal Request Barang, centang gudang/POP yang boleh dipakai teknisi base ini. Contoh: Home Base BONGAN dicentang `Gudang Bongan` dan `Gudang Utama` agar teknisi Tabanan tidak hanya melihat satu gudang.
  5. Gunakan base saat assign tiket atau jadwal PSB.

Catatan: jika tidak ada gudang yang dicentang, sistem memakai pencocokan otomatis dari nama wilayah (perilaku lama). Mapping resmi selalu diprioritaskan bila diisi.

Home Base
Mobile Work

Lapangan

Fungsi: halaman teknisi untuk melihat tugas, update status, upload foto, catatan, dan pemakaian barang.

  1. Teknisi membuka menu `Lapangan`.
  2. Pilih tugas hari ini.
  3. Ubah status saat mulai pekerjaan.
  4. Isi hasil pengecekan, foto, dan material.
  5. Selesaikan pekerjaan saat layanan normal.
Lapangan
Internal

Catatan / Memo

Fungsi: mencatat informasi internal seperti instruksi khusus pelanggan, catatan billing, kendala teknis, atau memo operasional.

  1. Buka `Catatan / Memo` atau detail pelanggan/tiket.
  2. Klik tambah catatan.
  3. Pilih tipe catatan dan visibilitas.
  4. Tulis memo singkat dan jelas.
  5. Simpan agar tim lain bisa melihat konteks.
Catatan / Memo

Billing, Partner, Gudang, dan Laporan

Menu untuk finance, gudang, reseller, dan manajemen.

Finance

Billing & Invoice

Fungsi: membuat invoice, mencatat pembayaran, mengelola overdue, reminder, suspend, dan laporan tagihan.

  1. Buka `Billing & Invoice`.
  2. Generate invoice sesuai periode.
  3. Cek nominal, pajak, diskon, dan jatuh tempo.
  4. Catat pembayaran saat dana masuk.
  5. Kirim reminder untuk invoice overdue.
Billing & Invoice
Payment

Payment Gateway

Fungsi: menghubungkan pembayaran VA, QRIS, e-wallet, atau bank transfer otomatis.

  1. Buka `Payment Gateway`.
  2. Pilih provider dan isi credential.
  3. Atur callback/webhook URL sesuai dokumentasi provider.
  4. Test transaksi kecil.
  5. Pastikan invoice otomatis berubah lunas saat callback valid.
Payment Gateway
Cash POP

Paypoint POP

Fungsi: portal mobile `/paypoint` untuk kasir POP menerima pembayaran cash pelanggan yang titip bayar langsung di POP, mencetak struk thermal, mencatat kas, dan memperpanjang masa aktif pelanggan melalui alur invoice existing.

  1. Buka `/paypoint` dari HP kasir POP.
  2. Login memakai akun staff yang memiliki permission `paypoint.view` dan `paypoint.pay`.
  3. Cari pelanggan dengan kode, nama, nomor HP, atau nomor invoice.
  4. Pilih tagihan belum bayar/terlambat, pilih akun Kas POP, isi cash diterima, lalu klik `Simpan Pembayaran Cash`.
  5. Sistem menandai invoice lunas, membuat `PaymentRecord`, mencatat income ke Data Keuangan jika akun kas dipilih, memperpanjang masa aktif, dan membuka isolir bila semua tunggakan sudah lunas.
  6. Kasir dapat mencetak struk thermal dari browser atau membuka preview struk invoice.
  7. Dashboard menampilkan transaksi kasir hari ini, total cash Paypoint hari ini, dan transaksi terakhir untuk membantu closing shift.

Kontrol akses: admin mengatur role kasir dari `Role & Hak Akses` pada modul `Paypoint POP`. Refund atau hapus payment tetap memakai guard sensitif pembayaran existing.

/paypoint
Finance

Data Keuangan

Fungsi: memantau kas/bank, income manual, pengeluaran, hutang, piutang invoice, transfer antar akun, dan laba rugi periode.

  1. Buka `Data Keuangan`.
  2. Pilih periode hari ini atau bulan berjalan.
  3. Cek KPI pendapatan invoice, income manual, pengeluaran, laba rugi, dan piutang.
  4. Buka tab `Transaksi`, gunakan kolom pencarian di atas tabel, lalu filter tipe, akun, kategori, atau sumber transaksi jika perlu.
  5. Buka tab `Piutang` untuk melihat invoice belum bayar atau terlambat.
  6. Buka tab `Hutang` untuk mencatat hutang supplier/operasional, lalu gunakan tombol `Bayar` saat hutang sudah dibayar dari Kas/Bank.
  7. Tambahkan akun kas/bank seperti Kas Tunai, Bank Utama, atau Payment Gateway.
  8. Tambahkan atau edit kategori income/pengeluaran dari tab `Kategori`.
  9. Klik baris transaksi, akun, kategori, atau hutang untuk membuka detail; gunakan tombol `Edit`, `Hapus`, `Simpan`, `Bayar`, dan `Tutup` sesuai kebutuhan.
  10. Saat mencatat pembayaran invoice, pilih akun Kas/Bank agar pembayaran masuk saldo Data Keuangan.
  11. Saat `Stok Masuk` dibayar dari uang perusahaan, sistem otomatis mencatat pengeluaran `Perangkat / Inventaris` dari akun Kas/Bank yang dipilih.
  12. Tambahkan transaksi income non-invoice atau pengeluaran operasional dengan kategori yang sesuai.
  13. Untuk pengeluaran dan transfer antar akun, upload bukti transfer/nota dalam format JPG, PNG, WEBP, atau PDF maksimal 5 MB.
  14. Gunakan tipe `Transfer antar akun` untuk memindahkan saldo Bank ke Kas, Kas ke Bank, atau Payment Gateway ke Bank tanpa memengaruhi laba/rugi.
  15. Gunakan catatan perhitungan untuk memahami bahwa invoice lunas dihitung sebagai pendapatan, income manual tidak menghitung payment record agar tidak double-count, dan saldo kas/bank memakai transaksi finance.
Data Keuangan
Sales

Penjualan

Fungsi: mengelola lead/prospek, survey, penawaran, sales order jasa/barang, pelanggan existing, non-pelanggan one-time order, invoice, request stok keluar, jadwal teknisi, dan laporan penjualan.

  1. Buka `Penjualan` dari grup menu Bisnis.
  2. Gunakan tab `Dashboard` untuk melihat lead open, quote open, order open, omzet bulan ini, dan margin.
  3. Buka tab `Leads`, klik `Lead`, lalu isi kontak, perusahaan, sumber lead, alamat, dan kebutuhan seperti tarik kabel FO, jasa pemasangan, atau pembelian ONU.
  4. Jika prospek siap ditawarkan, klik `Penawaran` dari baris lead atau buat manual dari tab `Penawaran`.
  5. Tambahkan item jasa atau barang. Pilih item Gudang jika barang berasal dari Inventory; untuk jasa/manual isi nama item, quantity, satuan, harga jual, dan harga modal.
  6. Convert penawaran menjadi `Sales Order`, atau buat order langsung dari tab `Order` untuk pelanggan existing maupun non-pelanggan satu kali order.
  7. Klik detail order lalu gunakan `Confirm` setelah item dan kontak sudah benar.
  8. Klik `Invoice` untuk membuat invoice tipe sales yang terhubung ke Billing & Invoice.
  9. Untuk order barang gudang, klik `Stok`; sistem membuat request stok keluar dan tetap menunggu approval Gudang.
  10. Untuk order jasa lapangan, klik `Jadwal` lalu pilih tanggal/jam dan jenis pekerjaan agar order terhubung ke Jadwal Teknisi.
  11. Setelah pekerjaan selesai, klik `Selesai`; jika order batal, klik `Batal` dan isi alasan agar histori jelas.
  12. Buka tab `Laporan`, lalu pilih `Laporan Penjualan` pada menu Laporan PDF untuk export omzet, margin, status order, dan detail order periode.
Penjualan
Finance

Request Uang

Fungsi: staff membuat request dana operasional, reimburse / claim uang pribadi, uang bensin, pembelian barang, atau kasbon/advance dengan bukti/nota wajib.

  1. Buka `Request Uang`.
  2. Klik `Tambah Request`, pilih tipe kebutuhan, isi judul, nominal, kategori pengeluaran, vendor/toko, tanggal dibutuhkan, dan keterangan.
  3. Upload bukti/nota pembelian. Format yang didukung JPG, PNG, WEBP, atau PDF maksimal 5 MB.
  4. Pantau riwayat request, filter status/tipe, atau cari nomor request, staff, vendor, dan keterangan.
  5. Klik baris request untuk membuka detail dan download nota.
  6. Administrator atau Super Admin menyetujui/menolak request dengan catatan jelas.
  7. Setelah disetujui, Administrator atau Super Admin mencatat pembayaran dari akun Kas/Bank; sistem otomatis membuat transaksi pengeluaran di `Data Keuangan`.
Request Uang
Partner

Referral / Reseller

Fungsi: mencatat referral pelanggan, reseller voucher, komisi, dan performa partner.

  1. Buka `Referral / Reseller`.
  2. Tambah partner/reseller.
  3. Hubungkan pelanggan atau voucher ke partner.
  4. Atur komisi atau margin.
  5. Cek laporan penjualan dan komisi.
Referral / Reseller
Approval

Mitra

Fungsi: menerima pendaftaran mitra dari form publik `/mitra/daftar`, memeriksa dokumen legalitas, menyetujui pengajuan, serta menghubungkan Mitra ke layanan internet, tagihan, tiket, kontrak, dan dokumen.

  1. Bagikan link `/mitra/daftar?tenant=slug-tenant` kepada calon mitra.
  2. Calon mitra mengisi nama, alamat, wilayah dari `wilayah.id`, kode pos, koordinat, nama bisnis, tipe badan usaha, KTP, foto KTP, NIB, dan SK Menkumham.
  3. Admin juga dapat klik `Tambah Mitra`; field Provinsi, Kota/Kabupaten, Kecamatan, dan Desa memakai dropdown API wilayah yang sama.
  4. Pengajuan masuk ke menu `Mitra` dengan status `Menunggu`.
  5. Admin membuka dokumen KTP/NIB/SK, lalu klik `Setujui` atau `Tolak` dengan catatan.
  6. Setelah disetujui, buka detail Mitra tab `Layanan Internet` untuk membuat pelanggan dari Mitra atau menautkan pelanggan existing.
  7. Gunakan paket yang ditandai `Paket khusus Mitra`; invoice, pembayaran, dan tiket akan mengikuti alur pelanggan normal tetapi tampil juga di detail Mitra.
Mitra
Gudang

Gudang

Fungsi: mengelola stok perangkat, material, serial number, stok masuk, stok keluar, retur, dan opname.

  1. Buka `Gudang`.
  2. Tambah item dan kategori.
  3. Catat stok masuk dari pembelian.
  4. Jika pembelian stok sudah dibayar dari uang perusahaan, centang opsi Kas/Bank agar saldo Data Keuangan ikut berkurang.
  5. Jika stok belum dibayar ke supplier, jangan centang opsi Kas/Bank; stok tetap bertambah tanpa membuat transaksi finance.
  6. Catat stok keluar untuk teknisi/PSB/tiket.
  7. Lakukan opname berkala.
Gudang
Asset

Aset Kantor

Fungsi: mencatat aset milik kantor yang tidak diperlakukan sebagai stok gudang, seperti laptop, PC, printer, furniture, kendaraan, tools kerja, dan perangkat kantor bernilai.

Cara kerja: setiap aset dicatat per unit dengan kode aset, lokasi, PIC, status, kondisi, harga beli, garansi, dokumen, serta riwayat tambah/edit, mutasi, maintenance, opname, dan disposal.

  1. Buka `Aset Kantor` dari side menu.
  2. Klik `Tambah Aset`, isi nama aset, kategori, serial number, lokasi, PIC, tanggal beli, harga, vendor, garansi, dan dokumen jika ada.
  3. Klik kartu aset untuk membuka detail.
  4. Gunakan `Mutasi/PIC` untuk serah terima lokasi atau user penanggung jawab.
  5. Gunakan `Maintenance` untuk mencatat servis, biaya, kondisi akhir, dan jadwal maintenance berikutnya.
  6. Gunakan `Opname` untuk mencocokkan kondisi dan lokasi fisik saat audit berkala.
  7. Gunakan `Disposal` untuk aset dijual, dihapuskan, atau hilang agar audit tetap tersimpan.

Indikator sukses: KPI total/aktif/dipinjam/maintenance/rusak-hilang/nilai aset terisi, daftar bisa difilter, detail aset menampilkan status dan riwayat, serta pesan error menyebut field atau permission yang perlu diperbaiki.

Troubleshooting: jika menu tidak muncul, cek plan `office_assets` dan permission role. Jika pesan menyebut tabel belum dibuat, migration `office_assets` perlu dijalankan setelah approval production. Jika hapus ditolak, gunakan `Disposal` karena aset sudah memiliki riwayat audit.

Aset Kantor
Asset

Asset ONU

Fungsi: melacak ONU/ONT sebagai aset tenant: serial number, status, pelanggan, lokasi, garansi, dan histori pemakaian.

  1. Buka `Asset ONU`.
  2. Tambah perangkat dengan serial number dan tipe.
  3. Set status: stok, terpasang, rusak, retur, atau hilang.
  4. Hubungkan ke pelanggan saat instalasi.
  5. Cek riwayat saat perangkat diganti.
Asset ONU
Request

Request Barang

Fungsi: teknisi mengajukan kebutuhan banyak barang dalam satu nomor request untuk PSB, gangguan, maintenance, transfer gudang, atau retur internal.

  1. Buka `Request Barang`.
  2. Isi header request: tipe, gudang asal/tujuan, referensi tiket/jadwal/pelanggan, alasan, dan catatan.
  3. Tambahkan beberapa baris di tabel `Daftar Barang`: pilih barang, jumlah, cek stok tersedia, dan isi catatan item bila perlu.
  4. Klik `Kirim Request` atau simpan sebagai `Draft`.
  5. Daftar kanan menampilkan ringkasan nomor request, pemohon, jumlah item, status, dan waktu. Klik baris untuk membuka detail lengkap.
  6. Admin gudang dapat `Edit`, `Setujui`, `Tolak` dengan alasan wajib, `Tangguhkan` dengan alasan wajib, `Proses`, `Selesai`, atau `Batalkan` sesuai status workflow.

Status workflow: `Draft`, `Pending`, `Ditangguhkan`, `Disetujui`, `Ditolak`, `Diproses`, `Selesai`, dan `Batal`. Saat status `Diproses`, stok keluar/transfer/retur dicatat sebagai mutasi inventaris per item.

Request Barang Multi Item
Report

Laporan PDF

Fungsi: membuat laporan resmi untuk pelanggan, billing, tiket, gudang, teknisi, dan manajemen.

  1. Buka `Laporan PDF`.
  2. Pilih jenis laporan dan periode.
  3. Filter tenant, pelanggan, teknisi, status, atau area.
  4. Klik generate PDF.
  5. Download atau arsipkan laporan.
Laporan PDF
Analytics

Statistik

Fungsi: melihat grafik pelanggan, revenue, tiket, SLA, perangkat, pemakaian stok, dan performa teknisi.

  1. Buka `Statistik`.
  2. Pilih periode data.
  3. Pilih metrik yang ingin dianalisa.
  4. Bandingkan tren dengan periode sebelumnya.
  5. Gunakan hasilnya untuk keputusan operasional.
Statistik

Komunikasi dan Log

Menu untuk notifikasi pelanggan, teknisi, admin, dan audit pesan.

WhatsApp

WhatsApp Bot

Fungsi: mengirim invoice, reminder, status tiket, OTP, broadcast, status backup, test kirim grup Wablas, dan auto-reply melalui provider WhatsApp/Pancake.

  1. Buka `WhatsApp Bot`.
  2. Pilih provider: Wablas, Fonnte, BalesOtomatis.id, atau Pancake.
  3. Tambah/Edit akun provider untuk mengisi credential. Untuk Pancake, isi `Page Access Token`, `Page ID`, dan Base URL `https://pages.fm`.
  4. Jika hanya satu akun aktif, sistem memakai akun itu saja; jika ada beberapa akun aktif, sistem otomatis mengirim bergantian round-robin. Atur limit per menit dan jeda per akun di modal akun.
  5. Tempel `URL Webhook` di provider agar pesan masuk masuk ke Kliniktech.
  6. Untuk Wablas, status device dicek langsung ke API Wablas setiap 30 detik saat halaman provider Wablas aktif. Webhook Device tetap dicatat sebagai fallback event online/offline/expired/QR.
  7. Kirim test; khusus Pancake gunakan `Conversation ID`, bukan nomor HP biasa.
  8. Pantau Inbox/Outbox, statistik provider, statistik akun, akun pengirim, dan status terkirim. Pesan gagal tidak dialihkan otomatis dan bisa dikirim ulang manual dari Outbox.
WhatsApp Bot
Telegram

Telegram Bot

Fungsi: mengirim alert ke grup admin/NOC, termasuk backup, alarm, tiket prioritas, dan gangguan massal.

  1. Buka `Telegram Bot`.
  2. Cek KPI `Status Bot`, `Token`, `Chat Target`, dan `Routing Aktif`.
  3. Isi Bot Token dari BotFather dan default Chat ID / Group ID.
  4. Tambahkan bot ke grup/channel dan beri izin kirim pesan.
  5. Pilih event pada kartu `Notifikasi yang Diizinkan`, lalu simpan routing Telegram.
  6. Kirim test pesan dari tombol `Test`.
  7. Gunakan opsi hapus token hanya saat reset credential tenant.
Telegram Bot
AI

Pengaturan AI

Fungsi: mengatur provider, API key, model, gaya jawaban, bahasa, scope konteks, data tools, aksi teknis, riwayat, retensi, instruksi khusus, dan toggle `Tampilkan Tombol Bantuan AI` untuk menampilkan/menyembunyikan tombol robot serta widget bantuan per tenant.

  1. Buka `Pengaturan AI` dari sidebar.
  2. Pilih tab provider: Claude, ChatGPT/OpenAI, Gemini, DeepSeek, atau Aksita AI. Provider aktif dipakai untuk semua fitur teks AI.
  3. Tab Claude tetap perlu diisi jika ingin OCR bukti/KTP (AI Center) dan aksi teknis AI (tools), meski provider aktif adalah DeepSeek/OpenAI/Gemini.
  4. Isi API key dan pilih model pada tab provider tersebut. Setiap provider menyimpan key dan model masing-masing.
  5. Tab yang dipilih menjadi provider aktif untuk AI Assistant. Badge `Key` menandakan provider sudah punya API key tersimpan.
  6. Atur status AI, bahasa jawaban, gaya jawaban, scope konteks, jumlah riwayat chat, dan batas panjang jawaban.
  7. Aktifkan `Gunakan Data Tools` agar AI bisa membaca data operasional sesuai permission. Aktifkan `Aksi Teknis AI` hanya jika AI boleh membuat tiket, ack alarm, atau reboot ONU sesuai permission user.
  8. Isi instruksi khusus organisasi jika ingin gaya jawaban atau aturan operasional tertentu.
  9. Aktifkan `Tampilkan Tombol Bantuan AI` bila tombol robot kanan atas dan widget bantuan halaman perlu muncul; biarkan OFF untuk menyembunyikannya. Klik `Test Koneksi`, lalu `Simpan AI`. Panel chat AI hanya dapat dibuka dari tombol atas atau bantuan halaman saat toggle ini ON.
Pengaturan AI
Email

Email / SMTP

Fungsi: mengirim invoice, laporan, reset password, backup status, notifikasi formal, serta mengatur email client pribadi dari `Akun Saya`.

  1. Buka `Email / SMTP` untuk SMTP tenant notifikasi.
  2. Buka `Akun Saya` → tab `Email Setting` untuk email client per user.
  3. Gunakan `Default Virtualmin` untuk mengisi host IMAP/POP3 dan SMTP dari mailbox tenant.
  4. Isi password mailbox Virtualmin, lalu simpan dan test incoming.
  5. `Sisakan email asli di server` aktif default; hapus email dari Inbox hanya menghapus salinan lokal aplikasi.
  6. Gunakan `Sync Email` di Inbox / Outbox untuk menarik email masuk.
Email Setting
Notify

Notifikasi

Fungsi: mengatur template, channel, penerima, event trigger, dan preferensi notifikasi.

  1. Buka `Notifikasi`.
  2. Pilih event: invoice, tiket, backup, alarm, atau sistem.
  3. Pilih channel WA, Email, Telegram, Push.
  4. Edit template pesan.
  5. Simpan dan test event.
Notifikasi
Message Log

Inbox / Outbox

Fungsi: melihat pesan masuk/keluar, status terkirim, gagal, pending, riwayat komunikasi, daftar kontak WhatsApp tenant, serta email masuk dari Email Setting akun.

  1. Buka `Inbox / Outbox`.
  2. Klik `Sync Email` untuk menarik email masuk dari IMAP/POP3 akun aktif.
  3. Pakai tab `Inbox`, `Outbox`, atau `Gagal` untuk memantau pesan WhatsApp, Email, Telegram, Push, dan System.
  4. Untuk Wablas, pesan pending yang memiliki Message ID dicek otomatis melalui report realtime setiap 5 detik saat halaman WhatsApp Bot atau Inbox / Outbox aktif. Tombol `Sync Status Outbox` juga bisa dipakai untuk cek manual.
  5. Status `Diterima Provider` berarti provider menerima/antri pesan, belum bukti sampai penerima. Bukti sampai penerima ditandai `Tersampaikan` atau `Dibaca` setelah callback/report Wablas masuk.
  6. Pada pesan WhatsApp Outbox yang gagal/pending, klik `Kirim Ulang` hanya pada baris pesan yang ingin dikirim ulang. Sistem hanya memproses pesan tersebut, bukan semua pesan Outbox.
  7. Jika akun WhatsApp sedang jeda/rate-limit, retry manual tidak mengirim semua pesan. UI menunggu sesuai detik yang diminta Wablas lalu mencoba ulang hanya pesan yang diklik.
  8. Buka detail email masuk lalu klik `Reply Email`; balasan dikirim memakai SMTP dari `Akun Saya` → `Email Setting`.
  9. Hapus Inbox/Outbox hanya menghapus salinan lokal aplikasi. Email asli tetap berada di server mail.
  10. Pakai tab `Kontak` untuk melihat kontak dari pelanggan, pengguna, kontak manual, dan nomor dari riwayat pesan.
  11. Jika tab Kontak atau Email Setting menampilkan pesan migration belum siap, jalankan migration backend sebelum dipakai.
Inbox / Outbox
Audit

Log & Aktivitas

Fungsi: melacak aktivitas user, perubahan data, login, revoke token, restore backup, dan aksi sensitif.

  1. Buka `Log & Aktivitas`.
  2. Filter user, modul, aksi, dan tanggal.
  3. Buka detail untuk melihat sebelum/sesudah bila tersedia.
  4. Gunakan log saat audit atau investigasi masalah.
Log & Aktivitas

Administrasi Sistem

Menu untuk admin tenant dan platform administrator.

Backup

Backup & Restore

Fungsi: menjalankan backup manual/otomatis, upload ke S3 Object Storage, melihat daftar backup, dan restore data.

  1. Buka `Backup & Restore`.
  2. Pilih tab `Backup Manual`, `Otomatis & Remote`, atau `Daftar Backup`.
  3. Pilih lokasi `S3 Object Storage` jika sudah dikonfigurasi.
  4. Centang channel notifikasi.
  5. Jalankan backup dan cek status detail.
Backup & Restore
Tenant Storage

File Manager

Fungsi: menyimpan file tenant dengan pemisahan folder pribadi user dan folder umum tenant.

  1. Buka `File Manager` dari menu Sistem.
  2. Pilih `Folder pribadi saya` untuk file yang hanya terlihat oleh user tersebut.
  3. Pilih `Folder umum tenant` untuk file yang dapat diakses semua user dalam tenant.
  4. Admin tenant dengan permission `file_manager.admin` dapat melihat semua folder user tenantnya.
  5. Superadmin atau tenant master dapat memilih tenant target untuk audit/support lintas tenant.
  6. Upload, download, dan hapus file tercatat di Log & Aktivitas.
File Manager
Master Storage

File Share

Fungsi: repository file internal tenant master untuk dokumen teknis, APK, laporan PDF, export, template, dan arsip verifikasi backup.

  1. Login ke tenant master.
  2. Buka `File Share` dari menu Sistem.
  3. Pilih folder: docs, apk, reports, exports, templates, backup-verification, atau other.
  4. Pilih file, isi catatan, lalu klik upload.
  5. Download file dengan klik baris atau tombol download.
  6. Hapus file yang sudah tidak dipakai; aksi tercatat di audit log.
File Share
Mobile

APK Builder

Fungsi: membuat paket aplikasi Android tenant dengan konfigurasi branding, endpoint, versi, dan target portal. APK Builder mendukung `Portal Pelanggan`, `Netadmin`, `Partner`, dan `Absensi Mobile`.

  1. Buka `APK Builder`.
  2. Pilih tab aplikasi yang akan dibuat. Untuk `/absensi`, pilih tab `Absensi`.
  3. Isi `Nama App`, `Package ID`, version code/version name, warna theme, orientasi, dan signing mode.
  4. Untuk APK Absensi, isi `Base URL` domain utama saja, misalnya `https://apps.ion.net.id`; builder otomatis membuka `/absensi/` dan halaman mengikuti theme/branding dari `Absensi > Pengaturan`.
  5. Upload icon/splash PNG, generate atau upload keystore release bila akan distribusi resmi.
  6. Jalankan build debug/release, download APK, lalu lakukan testing kamera, GPS, liveness, login, dan offline queue sebelum distribusi.

Pesan error: sistem memberi pesan jelas untuk Package ID tidak valid, Base URL bukan URL, HEX theme salah, app type tidak valid, keystore release belum siap, environment build belum lengkap, atau file APK/keystore tidak ditemukan.

APK Builder
Platform

Platform Admin

Fungsi: mengelola tenant, lisensi, konfigurasi global, health platform, fitur tenant, Mode Demo Aman, dan draft provisioning tenant multi-database.

  1. Buka `Platform Admin` sebagai super admin.
  2. Pilih tenant yang ingin dikelola.
  3. Tenant master `kliniktech` tetap berada di `apps.ion.net.id` dan tidak boleh dimigrasikan ke database tenant terpisah. Dedicated database hanya untuk tenant subscriber/non-master; tenant non-master memakai domain/email `kliniktech.com`, misalnya `demo@kliniktech.com`.
  4. Di card `Credential Provisioning`, isi credential DB admin tenant, Cloudflare, Virtualmin, dan S3/storage jika pilot sudah disetujui. Nilai rahasia disimpan terenkripsi dan akan tampil sebagai masker.
  5. Gunakan tombol test credential untuk pengecekan read-only. Test tidak membuat DNS, database tenant, mailbox, atau object storage.
  6. Cek status lisensi, domain, storage, fitur aktif, dan badge Demo/Suspend.
  7. Di panel `Provisioning Tenant`, isi subdomain, domain utama, target DNS, tipe record, mailbox awal, dan quota mailbox.
  8. Klik `Preview` untuk melihat rencana database tenant, FQDN, DNS, mailbox, dan urutan step tanpa side effect production.
  9. Klik `Preview DB Pilot` untuk melihat rencana database/user dummy dan rollback plan. Klik `Run DB Pilot` hanya untuk tenant demo/pilot dan ketik `RUN DB PILOT` jika benar-benar ingin membuat database/user dummy.
  10. Klik `Test Tenant DB` setelah metadata pilot tersedia untuk memvalidasi dynamic connection read-only. Test hanya menjalankan query aman dan tidak menjalankan migration. Klik `Read Sample` untuk membandingkan sample shared DB vs tenant DB pilot dan melihat indikator `Tenant DB readable` tanpa cutover modul production. Untuk pilot terbatas, aktifkan checkbox `Pilot read users dari tenant DB`, simpan, lalu klik `Read Users Pilot` untuk memastikan endpoint read-only users membaca dari tenant DB, dan `Read Customers Pilot`, `Read Invoices Pilot`, dan `Read Tickets Pilot` untuk validasi endpoint modul read-only; ini belum mengubah login atau modul production. Gunakan `Seed Demo Data` untuk membuat data demo kecil customer/invoice/ticket di tenant DB pilot, `Demo Flow Pilot` untuk membaca dan memvalidasi relasi `DEMO-CUST-001` → `DEMO-INV-001` → `DEMO-TICK-001` dari tenant DB secara read-only, `Pilot Health` untuk melihat readiness flag/schema/koneksi/count/token pilot sebelum shadow-read, `Shadow Read` untuk membandingkan shared DB vs tenant DB secara read-only pada users/customers/invoices/tickets, `Reconcile` untuk merangkum severity gap parity, `Cutover Gate` untuk mengecek block sebelum approval production, `Module Read Pilot` untuk menguji resolver source modul dengan flag granular tanpa mengubah route production, `Write Plan` untuk melihat dry-run jalur write/rollback sebelum dual-write pilot, `Run Dual Write` dan `Rollback Dual Write` untuk exercise write terbatas pada row demo `DEMO-*` di tenant DB pilot, dan `Rollback Demo Data` untuk menghapus row demo `DEMO-*` saja. Gunakan `Auth Check Pilot` untuk mengecek email/password terhadap hash di tenant DB tanpa membuat token, tanpa session, dan tanpa update `last_login`. Gunakan `Pilot Login` hanya untuk pilot internal setelah mengetik `PILOT TENANT DB LOGIN`; aksi ini membuat token Sanctum pilot tanpa mengubah `/auth/login`, tanpa menghapus token lain, dan tanpa update `last_login`. Gunakan `Pilot Token Status` untuk audit token pilot, dan `Revoke Pilot Token` dengan frasa `REVOKE TENANT DB PILOT TOKEN` bila token pilot perlu dibersihkan.
  11. Klik `Preview Schema` untuk melihat tabel minimal tenant pilot, lalu `Run Schema` dan ketik `RUN TENANT SCHEMA` untuk membuat tabel pilot tanpa memindahkan data production. Setelah schema tersedia, klik `Dry-run Copy Data` untuk menghitung/memetakan data `users`, `customers`, `invoices`, dan `tickets` tanpa menulis ke tenant DB. Jika collision 0 dan tenant masih pilot, klik `Copy Data Pilot` lalu ketik `COPY TENANT DATA PILOT`; gunakan `Rollback Data Pilot` dengan frasa `ROLLBACK TENANT DATA PILOT` untuk menghapus row hasil copy terakhir.
  12. Klik `Rollback DB Pilot` dan ketik `ROLLBACK DB PILOT` jika perlu membersihkan database/user dummy pilot. Rollback ditolak untuk metadata non-pilot.
  13. Cek readiness checklist: tabel metadata sudah aktif setelah migration metadata dijalankan; credential DB tenant, Cloudflare, Virtualmin, S3/storage, dan backup strategy tetap harus siap sebelum pilot production.
  14. Klik `Buat Draft` hanya untuk menyimpan draft job. Aksi ini belum membuat DNS, database tenant, mailbox, atau migration tenant.
  15. Centang `Tenant demo aman` untuk sandbox presentasi/trial agar aksi berbahaya diblokir.
  16. Ubah konfigurasi global dengan hati-hati dan catat perubahan penting di log aktivitas.
Platform Admin
Self Service

Akun Saya

Fungsi: menampilkan profil akun aktif, keamanan/password, Akun Bank untuk Request Uang, Email Setting pribadi, dan daftar hak akses role.

Cara kerja: halaman dan tab `Akun Saya` mengikuti permission modul `Akun Saya` di `Role & Hak Akses`: `view`, `profile`, `security`, `bank`, `email`, dan `permissions`.

  1. Buka `Akun Saya` dari sidebar atau avatar kanan atas.
  2. Gunakan tab `Profil` untuk update nama, email, WhatsApp, dan foto jika role memiliki `account.profile`.
  3. Gunakan tab `Keamanan` untuk ganti password, mengaktifkan/nonaktifkan `Login Multi Device`, mengatur maksimal device aktif, melihat daftar sesi/device, mencabut device tertentu, atau mengeluarkan semua device lain jika role memiliki `account.security`.
  4. Gunakan tab `Akun Bank` untuk rekening Request Uang jika role memiliki `account.bank`.
  5. Gunakan tab `Email Setting` untuk IMAP/SMTP pribadi jika role memiliki `account.email`.
  6. Tab `Hak Akses` menampilkan permission aktif bila role memiliki `account.permissions`.
  7. Jika `Login Multi Device` nonaktif, login baru otomatis mencabut sesi lama; jika aktif, sistem menjaga jumlah device sesuai batas dan menampilkan pesan jelas jika migration/permission belum siap.
  8. Jika tab tidak muncul atau API menolak akses, minta admin membuka `Role & Hak Akses` dan centang permission `Akun Saya` yang sesuai.
Akun Saya
User

Pengguna

Fungsi: membuat akun user, reset password, nonaktifkan user, refresh daftar user, dan mengatur identitas operator.

  1. Buka `Pengguna`.
  2. Klik `Refresh` untuk memuat ulang daftar pengguna dari server.
  3. Klik tambah user.
  4. Isi nama, email/username, nomor HP, dan role.
  5. Set password awal atau kirim undangan.
  6. Nonaktifkan user yang tidak lagi bertugas.
Pengguna
Security

Role & Hak Akses

Fungsi: membatasi akses user per modul dan aksi seperti lihat, tambah, edit, hapus, export, restore, atau revoke token.

  1. Buka `Role & Hak Akses`.
  2. Buat role sesuai pekerjaan: Admin, Billing, NOC, Teknisi, Gudang, Viewer.
  3. Centang akses minimum yang diperlukan, termasuk `Akun Saya: Lihat halaman`, `Profil`, `Keamanan`, `Akun Bank`, `Email Setting`, atau `Hak Akses` sesuai kebutuhan role.
  4. Simpan dan test login user role tersebut.
  5. Review role secara berkala.
Role & Hak Akses
Settings

Pengaturan

Fungsi: pusat konfigurasi tenant: profil, object storage, notifikasi, API Integrasi, billing, theme, preferensi sistem, dan indikator demo.

  1. Buka `Pengaturan`.
  2. Pilih tab konfigurasi yang ingin diubah.
  3. Isi data dengan hati-hati, terutama credential dan token.
  4. Jika banner `Mode Demo` muncul, pahami bahwa credential, payment, restore, broadcast, dan aksi hapus sengaja diblokir.
  5. Simpan dan cek dampaknya di modul terkait.
Pengaturan