All checks were successful
CI / test (push) Successful in 1m37s
- filter from/to pada list - checkbox pilih semua, batch delete dengan password admin - reset histori tetap - versi 0.6.6
14 KiB
14 KiB
Changelog
Format mengikuti Keep a Changelog dan Semantic Versioning.
[0.6.6] — 2026-11-06 — "qr-custom-bulk"
Ditambahkan
- Filter tanggal (dari/sampai) pada histori QR-Custom Payment.
- Pilih semua / per baris + tombol Hapus Terpilih (batch remove) dengan password admin.
- Reset Histori tetap tersedia untuk menghapus semua data.
[0.6.5] — 2026-11-06 — "qr-custom-delete"
Ditambahkan
- Hapus satu QR custom dari detail (wajib password admin).
- Reset seluruh histori QR custom dari header tabel (wajib password admin, konfirmasi).
[0.6.4] — 2026-11-06 — "qr-custom-ux"
Diperbaiki
- QR pada link publik kini center.
- Timer hanya tampil saat QR masih aktif; berhenti/disembunyikan ketika LUNAS, ditolak, atau kedaluwarsa.
- Reject / Refund kini tersedia juga untuk pembayaran yang sudah LUNAS.
- QR kedaluwarsa: nominal dan gambar QR disembunyikan di link publik maupun detail dashboard.
- Tombol Regenerate untuk membuat QR baru + kode unik baru dari QR yang kedaluwarsa (juga tersedia di tabel histori).
[0.6.3] — 2026-11-06 — "webhook-secret-auto"
Diperbaiki
- Secret Token webhook pembayaran dibuat otomatis (64 hex) bila kosong/default, ditampilkan di Pengaturan dan langsung dipakai pada URL webhook.
- URL webhook memakai Public Base URL; bila kosong memakai host saat ini (tidak lagi menghasilkan URL relatif).
- Default lama
billing-rtrw-secret-keytidak lagi diterima — forwarder harus memakai secret dari Pengaturan.
[0.6.2] — 2026-11-06 — "webhook-diag"
Diperbaiki
- Respons webhook pembayaran kini menyertakan
matched_custom_qr_iduntuk memudahkan diagnosis QR-Custom Payment.
[0.6.1] — 2026-11-06 — "qr-custom-gate"
Diperbaiki
- Ikon menu QR-Custom Payment memakai ikon yang tersedia (
bi-qr-code). - Fitur QR-Custom dinonaktifkan otomatis bila QRIS Statis (Semi-Otomatis) belum aktif atau
qris_static_payloadkosong:- menu disembunyikan,
- form pembuatan dinonaktifkan,
- request pembuatan ditolak (tidak ada data/list dibuat tanpa QR).
[0.6.0] — 2026-11-06 — "qr-custom"
Ditambahkan
- QR-Custom Payment (menu baru di sidebar UTAMA): membuat QRIS nominal bebas dengan kode unik untuk kebutuhan di luar billing (sewa, donasi perusahaan, dll).
- Durasi 20 menit per QR, link share publik, QR dinamis, timer, dan halaman status.
- Webhook pembayaran mencocokkan nominal unik; pembayaran dalam 20 menit → LUNAS + notifikasi admin.
- Pembayaran dengan nominal sama setelah 20 menit → status
warning+ notifikasi admin, dapat diselesaikan atau ditolak/refund. - Panel histori, statistik masuk/pending/warning/rejected, manual pay bila sinkron webhook gagal.
- Mode Webhook Secret GOWA: pilihan Auto Generate (kolom terkunci, tombol simpan nonaktif) atau Manual (isi secret → Simpan → terkunci, tombol Ubah untuk mengganti), plus tombol salin.
[0.5.20] — 2026-11-06 — "copy-secret"
Ditambahkan
- Tombol salin di samping Webhook Secret GOWA (sama seperti tombol salin Webhook URL), dengan umpan balik ikon centang.
[0.5.19] — 2026-11-06 — "restart-notice"
Ditambahkan
- Setelah update sukses, aplikasi menulis penanda
.restart-required. - Floating notification di semua halaman admin: "Billing perlu restart" berisi versi yang sudah diterapkan dan tautan cara restart.
- Banner di halaman Update menjelaskan bahwa versi sudah terbaru tetapi kode lama masih berjalan sampai restart.
- Penanda otomatis dihapus saat proses aplikasi baru start, jadi notifikasi hilang setelah restart.
[0.5.18] — 2026-11-06 — "gowa-autodevice"
Diperbaiki
- Device ID kosong = otomatis mengikuti device yang terhubung lewat QR dashboard (tidak lagi dipin/disimpan otomatis). Isi Device ID hanya untuk menunjuk device GOWA tertentu.
- Webhook secret GOWA dibuat otomatis (32 byte hex) bila kosong atau masih default
secret, lalu ditampilkan di pengaturan untuk disamakan denganWHATSAPP_WEBHOOK_SECRETdi GOWA.
[0.5.17] — 2026-11-06 — "gowa-connected"
Diperbaiki
- Status GOWA membaca array
/devices(banyak device) sehingga tidak lagi selalu menampilkan Belum Terhubung ketika Device ID belum diisi. - Device yang terhubung disimpan otomatis sebagai
gowa_device_id— tidak perlu menyalin ID manual dari UI GOWA. - Setelah scan QR, halaman memantau status tiap 3 detik; QR otomatis disembunyikan dan status berubah Terhubung saat berhasil.
- Pengiriman memilih device yang benar-benar terhubung bila ada lebih dari satu device.
[0.5.16] — 2026-11-05 — "restart-help"
Ditambahkan
- Kotak panduan Cara Restart Aplikasi di halaman Update: self-hosted (PM2, manual, quadlet/systemd, Docker/Podman Compose) dan cloud/managed (restart otomatis pada update berikutnya atau hubungi admin server).
[0.5.15] — 2026-11-05 — "update-keep-env"
Diperbaiki
- Update aplikasi tidak lagi menghapus
.env.gowa(kredensial/webhook GOWA) saatgit clean. - Log update tidak lagi menampilkan error
pathspec 'settings.json'/'database'— file yang tidak dilacak git tidak di-checkout. .env.gowaditambahkan ke.gitignore.
[0.5.14] — 2026-11-05 — "ai-test"
Ditambahkan
- Tombol Test API di Pengaturan → AI: memvalidasi provider, API key, base URL, dan model yang sedang diisi tanpa harus menyimpan. Menampilkan status valid/tidak, HTTP status, dan latensi.
[0.5.13] — 2026-11-05 — "lunas-notify"
Diperbaiki
- Notifikasi WA LUNAS memakai gateway aktif (GOWA/Fonnte/Meta/Baileys), bukan hanya Baileys.
- Deteksi koneksi GOWA membaca status device dari
/devices(array) — sebelumnya dianggap tidak terhubung bila Device ID kosong, sehingga notifikasi lunas dilewati. - Approve pembayaran kolektor dari APK admin dan pencocokan notifikasi pembayaran manual kini mengirim WA lunas ke pelanggan.
[0.5.12] — 2026-11-05 — "gowa-test-unsaved"
Diperbaiki
- Test Koneksi GOWA kini memakai nilai yang sedang diisi di form (base URL, username, password), jadi tidak perlu simpan pengaturan dulu.
[0.5.11] — 2026-11-05 — "gowa-test"
Ditambahkan
- Tombol Test Koneksi di Admin → WhatsApp → GOWA: menampilkan apakah GOWA terjangkau, status
/health, kecocokan username/password Basic Auth, dan jumlah device terdaftar.
[0.5.10] — 2026-11-05 — "gowa-mode"
Ditambahkan
- Pilihan Mode Akses GOWA di Admin → WhatsApp: Cloud (HTTPS) atau Local (HTTP). Mode Local menampilkan peringatan wajib polyfill
crypto.randomUUIDbeserta tautan panduan wiki. - Halaman wiki GOWA: setup Compose, perbedaan Cloud/Local, perintah polyfill, setting OPEN-ISP, dan troubleshooting QR/webhook.
[0.5.9] — 2026-11-05 — "gowa-qr-image"
Diperbaiki
- QR GOWA dikirim sebagai data URI sehingga gambar tetap tampil walau app berjalan multi-proses atau request gambar terpisah gagal.
qr_linkdari GOWA yang menunjuk host internal (127.0.0.1/container) ditulis ulang memakai base URL publik yang dikonfigurasi.- Log peringatan
[GOWA] Gagal ambil gambar QRbila pengambilan gambar gagal.
[0.5.8] — 2026-11-05 — "gowa-qr-error"
Diperbaiki
- QR GOWA: pesan gagal kini menampilkan status HTTP dan respons GOWA (mis.
HTTP 401 — Unauthorized) sehingga penyebabnya langsung terlihat, bukan lagi "pastikan GOWA berjalan".
[0.5.7] — 2026-11-05 — "gowa-podman"
Ditambahkan
docker-compose.gowa.yml+.env.gowa.example: menjalankan GOWA (WhatsApp gateway + dashboard/UI) dengan Docker atau Podman Compose, termasuk webhook ke OPEN-ISP dan Basic Auth.
[0.5.6] — 2026-11-05 — "qris-hangus"
Diperbaiki
- QRIS mengikuti skema hangus: nominal unik hanya untuk satu tagihan (tagihan terbaru). Tagihan lama otomatis
voidsaat tagihan baru terbit, jadi tidak ada tunggakan menumpuk. - Kirim tagihan QRIS manual memakai tagihan terbaru (sebelumnya bisa mengambil tagihan lama).
Catatan
- Nonaktif otomatis setelah 3 bulan menunggak dan hapus akun pada bulan berikutnya tetap berjalan sesuai pengaturan
auto_deactivate_months/auto_delete_overdue_enabled.
[0.5.5] — 2026-11-05 — "qris-fix"
Diperbaiki
- Kode unik bentrok: pengecekan nominal unik sekarang mencakup invoice, voucher, dan donasi sekaligus — mencegah pembayaran dianggap ambigu oleh webhook (dulu bisa tidak diproses sama sekali).
- Kirim tagihan QRIS manual: gambar QR benar-benar terlampir (path
qrcodetidak lagi hardcoded ke/opt/billing-rtrw), nominal di pesan memakai nominal unik, dan placeholder{{qris_kode}}didukung. - Kirim tagihan manual memilih tagihan paling lama lebih dulu (sebelumnya tagihan terbaru).
- Pesan pengingat manual kini jujur saat tidak dikirim (WA/notifikasi OFF, gateway belum siap, atau tidak ada target hari ini), bukan “dijalankan: target 0”.
[0.5.4] — 2026-11-05 — "wa-notice"
Ditambahkan
- WA ke pelanggan saat tiket gangguan dibuat (web & aplikasi): konfirmasi laporan diterima beserta nomor tiket
#TCK-…. - Notifikasi WA pada Status Layanan: centang "Kirim notifikasi WhatsApp" saat mode berubah ke Gangguan Masal/Perbaikan, dengan target semua pelanggan aktif, per area, atau per router.
- WA "Layanan Kembali Normal" otomatis saat mode dikembalikan ke NORMAL.
- Pengiriman broadcast berjalan di latar belakang dengan jeda acak mengikuti
whatsapp_broadcast_delay, nomor duplikat digabung, dan hasilnya dicatat di log ([NoticeWA]).
[0.5.3] — 2026-11-05 — "forge-lime"
Ditambahkan
- Pembatasan wilayah kerja: teknisi & kolektor hanya melihat/menangani pelanggan, tiket, perangkat, dan tagihan di area tugasnya (dukung multi-area). Admin/root tetap penuh.
- Inventaris gudang: alur stok keluar (FIFO / serial number), retur barang bekas, stock opname dengan selisih otomatis, detail unit per barang, statistik stok, serta harga & supplier.
- Edit slip payroll: rincian gaji (tunjangan, potongan, bonus, lembur) dapat diubah selama status masih draft; total dihitung ulang otomatis.
- AI & Self-Healing: provider AI OpenAI-compatible (DeepSeek default, OpenAI, Groq, OpenRouter, custom/Ollama), bot Telegram menjawab pertanyaan admin, dan auto-repair jaringan (status isolir vs tagihan, secret PPPoE hilang/tertukar profil, sesi RADIUS menggantung, IP ACS kosong) dengan toggle on/off di Pengaturan.
- Security Watchdog: deteksi brute-force login admin/kasir/teknisi/kolektor dan MikroTik, blokir IP sementara, alert suara (TTS soundbox) + notifikasi admin.
- Batas sesi login: admin/kasir/teknisi/kolektor maksimal 2 sesi per akun, pelanggan 3 sesi; sesi lama diputus otomatis dan session ID dirotasi saat login.
Diperbaiki
- Tab Status di halaman login pelanggan kini mengikuti setting
uptime_url(sebelumnya selalu menuju URL lamastatus.skyfiber.qzz.io). - Kolom API key AI disamarkan (
type=password) agar tidak tampil di layar/screenshot.
Dokumentasi
- 10 screenshot aplikasi (desktop + mobile) di
docs/screenshots/.
[0.5.2] — 2026-10-14 — "mirror-gitea"
Diperbaiki
- Kolom IP Address di GenieACS Pro kini tampil saat mode pencarian (sebelumnya kosong).
- Menu Update Gitea otomatis disembunyikan pada instalasi tanpa
.git(container/Docker), tetap tampil pada instalasi git.
Ditambahkan
- Badge kelengkapan data di daftar pelanggan: centang hijau = nomor HP + koordinat + ACS lengkap; silang merah = ada yang kurang (tooltip menyebut yang belum).
- Backend speedtest bawaan (
/speedtest/*) kini aktif (LibreSpeed self-hosted, same-origin). isolir-redirect-serverdapat dijalankan embedded dalam proses app (opt-out viaISOLIR_REDIRECT_EMBEDDED=0).
[0.5.1] — 2026-10-13 — "pickle-lime"
Diubah
- WhatsApp kini notifikasi keluar saja (interaksi/bot perintah dimatikan); interaksi dipindah ke Telegram.
- Telegram jadi pusat monitoring admin: menu +
/sistem,/pendapatan,/tunggakan,/tiket,/offline,/aktif,/olt,/trafik. - Alert admin/monitoring (staff/GenieACS/cron) dikirim via Telegram (WA fallback).
- Footer & portal brand-aware (mengikuti
company_header).
Ditambahkan
- Toggle
voucher_enabled(Pengaturan → Fitur Opsional) untuk menyalakan/mematikan fitur Beli Voucher. - Notifikasi tiket menyertakan Chat Pelanggan (wa.me) + Share Lokasi (Maps).
Diperbaiki
- Spintax
{A|B|C}diproses terpusat (teks/gambar/dokumen). getTechById(notifikasi tiket oleh admin yang sebelumnya gagal).- Tabel
discount_logsdibuat saat fresh-install (500 di/admin/discounts). .devcontainer+.nvmrcuntuk Codespaces (Node 22).- Backup DB memakai
VACUUM INTO(konsisten walau mode WAL) dan restore diterapkan saat startup (sebelum koneksi DB dibuka); app restart otomatis untuk menerapkan. - Logger memutar berkas otomatis (10MB × 5) dan
console.*sisi server diarahkan ke logger (log seragam dilogs/). settings.jsonpermission di-set600.
Keamanan
npm audit: 16 → 0 kerentanan.- Hapus
@whiskeysockets/baileys(tidak dipakai). - Perbarui
axios,multer,brace-expansion,proxy-addr. xlsx→ build resmi SheetJS 0.20.3.node-telegram-bot-api0.66 → 2.1.0 (via adapter v1→v2 internal).
- Hapus
- Perbaiki bug
trust proxy(X-Forwarded-Forterbalik → IP bisa dipalsukan).
[0.5.0] — 2026-10-09 — "pickle-lime"
Rilis open-source perdana.
Ditambahkan
- Billing otomatis, isolir otomatis, pengingat WhatsApp, jam kalong, FUP, sinkron pemakaian.
- Multi-router MikroTik (PPPoE & hotspot), voucher hotspot, backup konfigurasi.
- Multi-vendor OLT (Hioso/HSGQ via SNMP; ZTE/Huawei via CLI) +
scripts/olt-probe.js. - TR-069: ACS bawaan (built-in) + integrasi GenieACS.
- RADIUS (PAP/CHAP) untuk PPPoE/hotspot.
- Peta jaringan (Leaflet) admin & teknisi, ODP, jalur kabel.
- Portal: admin, kasir, teknisi, kolektor, pelanggan (PWA, offline).
- Notifikasi WhatsApp (GoWA/Baileys) & Telegram.
- Pembayaran QRIS + webhook, kode unik, gateway opsional.
- Antarmuka bilingual Indonesia/English.
- Docker (Dockerfile + docker-compose), data demo (
scripts/seed-demo.js). - Lisensi ISC + Wiki dokumentasi.
Kredit
- Base kode & repo: alijayanet/billing-rtrw oleh Alijaya Net.
- Dikembangkan menjadi OPEN-ISP oleh oxpoe.