Prepare Soundbox Ops deployment

This commit is contained in:
Wira Basalamah
2026-06-06 20:58:04 +07:00
parent 60b1537c4c
commit 00580a98fc
16 changed files with 3238 additions and 270 deletions

View File

@ -1,12 +1,70 @@
# Codex Handoff - QRIS Soundbox Platform
Tanggal update: 2026-06-03, Asia/Jakarta.
Tanggal update: 2026-06-06, Asia/Jakarta.
Dokumen ini adalah snapshot kerja terakhir untuk melanjutkan project tanpa perlu membaca ulang seluruh chat.
## Update Terbaru - 2026-06-06
- Fokus produk sekarang: `sms.bizone.id` menjadi portal utama Soundbox Ops / Monitoring, bukan katalog UI atau dashboard admin campuran.
- Default route sudah disesuaikan:
- `GET /` redirect ke `/ui/soundbox-ops`;
- `GET /ui` redirect ke `/ui/soundbox-ops`;
- halaman Soundbox Ops tetap berada di `/ui/soundbox-ops`.
- Server target deploy diganti menjadi Debian 13, memakai user khusus `qrisapp`.
- Dokumen deploy:
- `DEBIAN12_APP_SERVER_SETUP.md` diganti menjadi `DEBIAN13_APP_SERVER_SETUP.md`;
- README sudah menunjuk ke dokumen Debian 13;
- install dari server kosong mencakup package dasar, Node.js 22, PostgreSQL, Nginx, Certbot, UFW, env production, migration, systemd, TLS, dan verification;
- semua proses app/repo/build/migration/service dijalankan sebagai `qrisapp`;
- root/sudo hanya untuk install package, direktori, env, Nginx, systemd.
- Env deploy sekarang mencantumkan `DATABASE_URL` selain `PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE`, supaya `npm run deploy:check-env` tidak gagal dengan error `DATABASE_URL is required`.
- Endpoint config device sudah men-support:
- `GET /speaker/dev-config`;
- `POST /speaker/dev-config`;
- lookup device berdasarkan `dev-sn` ke `devices.serial_number`;
- device tidak dikunci model tertentu, sehingga tipe device asli bisa diinput lewat master data/model dan matching tetap berdasarkan SN.
- Response config device tetap vendor-compatible:
- `error-code`;
- `mqtt.broker-ip`;
- `mqtt.broker-port`;
- `mqtt.client-id`;
- `mqtt.user-name`;
- `mqtt.password`;
- `mqtt.subscribe-topic`;
- `mqtt.keep-alive`.
- Production target:
- HTTP config URL device: `https://sms.bizone.id/speaker/dev-config`;
- MQTT broker: `broker.bizone.id`;
- MQTT TLS default: `mqtts://broker.bizone.id:8883`;
- jika firmware belum support TLS, siapkan listener non-TLS terbatas atau patch firmware.
- Dashboard Soundbox Ops sudah dirapikan untuk fokus operasional:
- sidebar hanya menu ops: Monitoring, Registry, MQTT Trace, Config & Commands, Catalog;
- menu Register Device dihapus dari sidebar, action register ada di Device Registry;
- Technical Detail dihapus dari sidebar, akses detail lewat row action di Device Registry;
- footer/dev nav UI katalog dihapus dari halaman ops yang relevan.
- Master data `Catalog` sudah ditambahkan:
- vendor create/edit/delete;
- model create/edit/delete;
- model code generated backend;
- model thumbnail upload;
- country dropdown searchable dengan Palestine/Palestina masuk list;
- structured vendor contact: PIC name, phone/WhatsApp, email, notes.
- Device Registry sudah dibuat live dari API, bukan dummy:
- KPI dari data device;
- search berfungsi;
- pagination nyata;
- filter reset page;
- row action 3-dot untuk View Device Detail / Quick Inspect.
- Device Detail sudah dibuat lebih operasional:
- tombol refresh, retry push, test QR, copy payload, clear console, reboot, firmware update, unbind, rotate MQTT credential, decommission punya action;
- Dynamic QR preview dibuka sebagai modal inline, bukan pindah ke dashboard lain.
- Verifikasi terakhir lokal:
- `npm run typecheck`: pass.
## Status Terakhir
- Fokus hari ini bergeser dari production readiness umum ke integrasi device soundbox QF100.
- Fokus sebelumnya bergeser dari production readiness umum ke integrasi device soundbox QF100.
- Folder SDK lokal `QF100-60s-l511-SecondApp-260107/` ditemukan dan dianalisis. Folder ini sengaja tidak dimasukkan git.
- Backend sekarang sudah punya adapter awal untuk firmware QF100 sample:
- config server vendor-compatible;