Implement phase 1 completion and phase 2 dynamic QR
This commit is contained in:
@ -1,11 +1,22 @@
|
||||
# CODEx Handoff — QRIS Soundbox Platform
|
||||
|
||||
## Current status
|
||||
- Fokus terakhir: sinkronisasi UI dan smoke test pada stack yang sudah aktif.
|
||||
- Fokus terakhir: penyelesaian gap Fase 1 backend + smoke e2e skenario wajib.
|
||||
- Implementasi backend dan UI sudah mulai dikerjakan di repository (tidak lagi hanya dokumentasi).
|
||||
- Tambahan terbaru:
|
||||
- audit log untuk aksi admin/webhook penting
|
||||
- ledger placeholder `gross_income` saat transaksi menjadi `paid`
|
||||
- endpoint admin `GET /admin/audit-logs` dan `GET /admin/ledger-entries`
|
||||
- awal Fase 2: capability resolver + `POST /device/transactions/dynamic-qr` API-direct
|
||||
- lanjutan Fase 2: MQTT dynamic QR simulator/outbox + device config push/ack
|
||||
- smoke e2e mencakup duplicate callback, invalid signature, ledger, audit, terminal tanpa binding, dynamic QR API-direct, dynamic QR MQTT, dan device config
|
||||
- fix UI lokal:
|
||||
- CSP Helmet dilonggarkan untuk Tailwind CDN, Google Fonts/Material Symbols, dan image Googleusercontent agar desain render normal
|
||||
- panel kanan login admin dibuat dark glass supaya teks putih terbaca
|
||||
- input login admin diubah dari email ke username text agar credential dev `admin/admin` bisa dipakai
|
||||
- Smoke test Fase1 jalannya:
|
||||
- `smoke:cleanup` ✅
|
||||
- `smoke:flow` ❌ saat dijalankan langsung (karena server belum jalan di `localhost:3100`)
|
||||
- `smoke:flow` jalan jika server aktif di `localhost:3100`
|
||||
- `smoke:e2e` ✅ setelah server auto-start di port 3100 (cleanup + full flow berhasil).
|
||||
|
||||
## Files baru/terbaru yang sudah dibuat
|
||||
@ -20,9 +31,27 @@
|
||||
- [UI: transaction-history-monitoring](/home/wira/work/codex/qris-soundbox-platform/ui/transaction-history-monitoring/index.html)
|
||||
- Search/filter outlet-terminal dan path transaksi sudah memakai endpoint API admin.
|
||||
- [README](/home/wira/work/codex/qris-soundbox-platform/README.md)
|
||||
- Sudah ada script dan langkah smoke test (`smoke:cleanup`, `smoke:flow`, `smoke:e2e`) siap dipakai.
|
||||
- Sudah ada script dan langkah smoke test (`smoke:cleanup`, `smoke:flow`, `smoke:e2e`) siap dipakai dan mencakup skenario Fase 1 tambahan.
|
||||
- [DECISIONS_LOG.md](/home/wira/work/codex/qris-soundbox-platform/DECISIONS_LOG.md)
|
||||
- Sudah memuat keputusan merchant bank account: kini arah keputusan ke rekening milik merchant (bukan escrow/terpusat) agar menghindari kebutuhan izin tambahan di awal.
|
||||
- Sudah memuat keputusan merchant bank account dan keputusan audit log + ledger placeholder Fase 1.
|
||||
- [Backend: auditLogStore](/home/wira/work/codex/qris-soundbox-platform/src/shared/store/auditLogStore.ts)
|
||||
- Store audit log untuk aksi admin/webhook penting.
|
||||
- [Backend: ledgerStore](/home/wira/work/codex/qris-soundbox-platform/src/shared/store/ledgerStore.ts)
|
||||
- Store ledger placeholder untuk transaksi paid Fase 1.
|
||||
- [Backend: deviceCapabilityResolver](/home/wira/work/codex/qris-soundbox-platform/src/shared/services/deviceCapabilityResolver.ts)
|
||||
- Resolver capability untuk flow dynamic QR API/MQTT.
|
||||
- [Backend: dynamicQrOrchestrator](/home/wira/work/codex/qris-soundbox-platform/src/shared/services/dynamicQrOrchestrator.ts)
|
||||
- Membuat transaksi dynamic `awaiting_payment` dan mock QR payload.
|
||||
- [Backend: mqttMessageStore](/home/wira/work/codex/qris-soundbox-platform/src/shared/store/mqttMessageStore.ts)
|
||||
- Outbox/trace MQTT uplink dan downlink.
|
||||
- [Backend: deviceConfigStore](/home/wira/work/codex/qris-soundbox-platform/src/shared/store/deviceConfigStore.ts)
|
||||
- Config versioned dan ACK device.
|
||||
- [App CSP](/home/wira/work/codex/qris-soundbox-platform/src/app.ts)
|
||||
- Helmet CSP disesuaikan agar asset desain eksternal dapat dimuat di lokal.
|
||||
- [UI: admin-login](/home/wira/work/codex/qris-soundbox-platform/ui/admin-login/index.html)
|
||||
- Login admin API-wired, input username dev, dan kontras panel kanan diperbaiki.
|
||||
- [UI: admin-login-portal](/home/wira/work/codex/qris-soundbox-platform/ui/admin-login-portal/index.html)
|
||||
- Baseline portal login ikut diselaraskan untuk username dan kontras.
|
||||
|
||||
## Keputusan penting yang harus diikuti saat lanjut
|
||||
1. Fase 1 Step 1–4 harus tetap jalan berurutan sebelum pengembangan Fase 2.
|
||||
@ -30,21 +59,25 @@
|
||||
3. Jalankan smoke dari kondisi bersih (`smoke:cleanup`) untuk hasil yang konsisten.
|
||||
4. Untuk sementara, pencairan dana mengikuti pola rekening merchant sendiri (sesuai permintaan terakhir), bukan rekening terpusat.
|
||||
5. Pertahankan format error API yang konsisten: `code`, `message`, `details`, `request_id`, `timestamp`.
|
||||
6. Ledger Fase 1 masih placeholder `gross_income`; jangan perluas fee/payable sebelum Fase 3 kecuali diminta eksplisit.
|
||||
7. Dynamic QR Fase 2 saat ini memakai mock QRIS payload lokal; integrasi partner sungguhan belum dipasang.
|
||||
8. MQTT Fase 2 saat ini memakai simulator HTTP + `mqtt_messages` outbox; broker sungguhan belum dipasang.
|
||||
9. Untuk cek UI lokal, gunakan `http://127.0.0.1:3100/ui/admin-login`; credential dev adalah username `admin`, password `admin`.
|
||||
|
||||
## Urutan kerja selanjutnya (disarankan)
|
||||
1. Backend/backend sanity lanjut dari titik terakhir:
|
||||
- Pastikan endpoint untuk sinkronisasi screen sudah stabil (terutama filter/search transaksi dan heartbeat/ events).
|
||||
- Lengkapi pemeriksaan 1–3 (dalam flow kamu, yaitu smoke point 1–3) yang belum dites manual via UI.
|
||||
2. Ambil data smoke yang sudah tercipta di e2e (`merchant`, `device`, `transaction`) lalu smoke-test:
|
||||
1. UI/manual sanity lanjut dari titik terakhir:
|
||||
- Merchant detail page
|
||||
- Merchant list/filter
|
||||
- Device technical detail
|
||||
- Device list + heartbeat view
|
||||
- Transaction history + outlet/terminal filter
|
||||
2. Jalankan lagi `npm run smoke:e2e` sebelum lanjut Fase 2 atau sebelum commit besar.
|
||||
3. Jika ada regresi, cek log server di `/tmp/qris-smoke-e2e-server.log`.
|
||||
4. Setelah UI flow stabil, lanjut fitur ops:
|
||||
- `A.6 Migration + Seed` (jika ada gap)
|
||||
- `B.1–B.3` + `C.1–C.3` + `D.1–D.4` untuk full DoD Fase 1.
|
||||
4. Lanjut Fase 2 berikutnya:
|
||||
- health score/filter heartbeat yang lebih akurat
|
||||
- adapter broker MQTT sungguhan dari `mqtt_messages` outbox
|
||||
- config drift/retry policy untuk device yang belum ACK
|
||||
5. Sebelum wiring UI baru, pastikan halaman tetap mengikuti desain `design/*/code.html` dan cek kontras teks pada panel transparan/overlay.
|
||||
|
||||
## Note kalau meneruskan sesi berikutnya
|
||||
- Kode dan screen yang sudah dimodifikasi tidak perlu diulang dari nol; lanjut dari state saat ini.
|
||||
|
||||
Reference in New Issue
Block a user