D
Bug Tracker

Bug Tracker

Daftar bug dan inkonsistensi yang ditemukan saat riset dokumentasi. Diurutkan per modul, dengan status.

Daftar bug dan inkonsistensi yang ditemukan saat riset dokumentasi dazoapp. Diurutkan per modul. Status: 🔴 belum diperbaiki / 🟡 dikonfirmasi / 🟢 diperbaiki.

Order

#BugLokasiStatus
1change_payment_status tunggal pakai mass update — tidak picu OrderObserver. Stok & wallet tidak ter-updateOrderController.php:1260🔴
2change_payment_status_multiple pakai save() — picu observer. Inkonsistensi dengan #1OrderController.php:1280🔴
3Route POST /order/change_payment_status bentrok — OrderController vs OrderpaymentControllerroutes/api.php:222 vs :243🔴
4Route PUT /order/update_order_column terdaftar 2xroutes/api.php:231 & :238🔴
5DigitalProductService::sendMessage hardcode localhost:8081 untuk produksi — tidak pakai properti controllerDigitalProductService.php:274-280🔴
6Enum StatusOrder tidak dipakai sebagai validasi — controller bebas tulis stringOrderController.php🟡
7Typo utm_campaing (seharusnya utm_campaign)OrderController.php:1798🟡

Wallet & Payment

#BugLokasiStatus
8PIN lock bypass — WalletController::withdraw() verify via Hash::check langsung, tidak lewat WalletService::verifyPin(). Brute force tidak terkunciWalletController.php:253🔴
9Inkonsistensi type transaksi — service pakai 'withdrawal', controller pakai 'withdraw'. Accessor Wallet.php cuma match 'withdraw'WalletService.php vs WalletController.php:282🔴
10Inkonsistensi status case — konstanta 'pending' (lowercase), controller 'PENDING' (uppercase)WalletTransaction.php vs WalletController.php:286🔴
11available_balance accessor panggil DOKU HTTP tiap dibaca — berbahaya saat serialisasi JSONWallet.php:100-123🟡
12Aspire credentials hardcode di source code (client_id, client_secret)AspireController.php:74-75🔴
13Duitku callback hanya update invoice — logic upgrade/downgrade store butuh manual call frontendDuitkuController.php:670🔴
14Midtrans tidak terdaftar webhook — notification() butuh Auth::user(), tidak cocok untuk webhookMidtransController.php:50🔴
15max_withdrawal_basic/premium di config tapi tidak di-enforceconfig/doku.php🟡
16min_withdrawal dua nilai — config 10000, controller 50000config/doku.php vs WalletController.php:212🟡
17WalletService::requestWithdrawal() tidak terhubung route — logic lengkap tapi tidak dipakaiWalletService.php:211🟡

WhatsApp & Device

#BugLokasiStatus
18Host produksi engine WhatsApp tidak konsisten — engine.dazo.id vs engine-wa.dazo.id7+ controller🔴
19AgentAiController tambah /api/ di URL produksi tapi tidak di lokalAgentAiController.php:34-38🔴
20ChatList model extends MongoDB tapi data sebenarnya di MySQLChatList.php + LiveChatController::connectSqlDB🟡

Live Chat

#BugLokasiStatus
21requestHandleGudang bug — loop menimpa $data_input, asumsi “kirim ke semua gudang” tidak tercapaiLiveChatController.php:892-913🔴
22getRotator mode same bug — loop tanpa break, $team_id selalu team terakhirLiveChatController.php:1129-1136🔴
23chaptureAddress parser rapuh — explode(':') asumsikan urutan field kakuLiveChatController.php:659-705🟡

Broadcast

#BugLokasiStatus
24updatestatus duplikat changeStatus — tanpa return responseBroadcastscedularController.php:1105🔴
25segment_list hanya pakai index [0] — pilih multiple segment tidak ter-supportBroadcastscedularController.php:241🟡
26Auto-disable scheduler di retrieved — tiap load tulis DB, bisa conflict concurrentBroadcastSceduler.php:28-35🟡
27Typo persisten Sceduler (seharusnya Scheduler) — merasuk ke nama file/controller/routebanyak file🟡

Contact (Kontak)

#BugLokasiStatus
28store() double-create Customer — 2x Customer::create() dengan tag/wa tidak konsistenContactController.php:629-640🔴
29Validasi wa regex tidak konsisten — store tanpa +, updateContact dengan +ContactController.php:587 vs :1882🔴
30profitRputationData query tanpa store_id — reputation lintas toko, potensi bocor ke merchant lainContactController.php:2267-2273🟡
31chats() relasi return query builder — tidak bisa eager load, N+1 manualCustomer.php:63-65🟡
#BugLokasiStatus
32eval() di evaluateExpression — risiko injeksi PHP code dari input produkShortlinkController.php:617🔴
33ssl() tulis nginx config hardcoded — path /var/www/nginx-configs/... tanpa error handlingBiolinkController.php:808-837🔴
34CustomDomainController@store permission check di-comment — semua user bisa buat custom domainCustomDomainController.php:112-115🔴
35Route duplikat — GET /{id} 2x, POST /store/{id} 2xweb.php:490,503 & api.php:669,708🔴
36storeNew validasi unique di tabel user_stores — seharusnya biolinksBiolinkController.php:466🟡
37pratinjau duplikasi 100% open — copy-paste tanpa perbedaan logikBiolinkController.php:331-395🟡

Shipping

#BugLokasiStatus
38API key Rajaongkir 51cx1jEXf3... hardcoded di 5 lokasi — tidak dari .envRajaongkirController.php:52,89,135,167,196🔴
39Basic Auth Apikurir 22c8afb1-... hardcoded — tidak dari .envShippingController.php:18-21🔴
40HandleGudangController.php kosong — hanya deklarasi classHandleGudangController.php🟡
41sync_courier dead code — di waybill langsung strtolower, tidak pakai methodRajaongkirController.php:207🟡
42Typo otomatic (seharusnya automatic) tersebar di setting shippingSettingController.php🟡

Subscription

#BugLokasiStatus
43SubscriptionNotif scope variabel salah — semua notif terkirim ke store/owner yang salahSubscriptionNotif.php:33-72🔴
44PaymentTimer job dispatch tanpa queue worker — QUEUE_CONNECTION=sync, delay tidak berfungsiSubscriptionController.php:243🔴
45Downgrade dead code — handleDowngradeAiAgent, handleDowngradeBroadcast, handleDowngradeOrder tidak dipanggilDowngrade.php:405,421,437🟡
46Downgrade duplikasi eksekusi — downgrade dijalankan 2x untuk store dalam masa downgradeDowngrade.php:36-84🟡
47get_features seluruhnya di-comment — route aktif tapi return nullSubscriptionController.php:462-486🔴
48Typo pyment di route (web.php:305) — user yang ketik payment akan 404web.php:305🟡
49Permission check tidak konsisten — buy, send, failed_transaction tidak authorizeSubscriptionController.php🟡

Report

#BugLokasiStatus
50Route /api/report/chat ada dalam prefix /report — full path jadi /api/report/api/report/chatapi.php:355🔴
51Typo show_prduct_performance di nama routeweb.php:278🟡
52Paginasi manual via array_slice — seluruh aggregate dimuat ke memori duluReportController.php:509-527🟡
53save_groupreport simpan setting tapi tidak ada pelaksanaan jadwal — fitur auto report setengah jadiReportController.php:1082🟡

Team

#BugLokasiStatus
54destroy bug — Store::where('user_id', $user->id) hanya jalan untuk Owner. Bisa return null untuk Admin/CSTeamController.php:508🔴
55store assign permission tanpa validasi struktur — bisa inject permission tanpa batasTeamController.php:319🔴
56TeamchatController::store kredensial hardcoded — password time(), key 21aOfjTBLDhFx6AoMqHTeamchatController.php:18-19🔴
57destroy set email null via raw DB::table('users') — bypass model, bentrok dengan soft deleteTeamController.php:671-673🟡
58mark_read route duplikat — POST /mark_read terdaftar 2xapi.php:663-664🟡

Marketing / Pixel

#BugLokasiStatus
59Dua controller paralel — PixelController (lama) vs TrackingToolController (baru). Route keduanya aktifapi.php:575 & :583🟡
60access_token Meta disimpan plain — tidak dienkripsi. Secret untuk Conversions APIPixel.php🔴
61PixelController::store & update tidak return response — frontend tidak tahu sukses/gagalPixelController.php:70,110🟡
62PixelController::destroy return 200 walau data tidak ditemukanPixelController.php:122🟡
63ConversionController::paid bulk update tidak sync — change_payment_status_multiple meng-comment callOrderController.php:1287🔴
64Conversion & Checkout.conversion duplikasi data — counter di dua tempat, sync manualConversion.php + Checkout.php🟡

AI Agent

#BugLokasiStatus
65generalPrompt() rusak — deklarasi string tanpa return. Return null. Mendekati dead codeAgentAiController.php:1208-1240🟡
66Permission AI agent dimatikan — semua cek findPermissionByName dikomentariAgentAiController.php:51-53🟡
67Route /agent/store & /agent/upload mati — tidak ada method di controllerapi.php🔴
68updateQna cari by question string — kalau duplikat, hanya pertama yang terupdateAgentAiController.php:665,687🟡

Digital Store

#BugLokasiStatus
69DraftStoresDigital orphan — model tidak dipakai, warisan refactorDraftStoresDigital.php🟡
70ensurePaymentMethods hardcode 4 method — tambah metode wajib edit kodeDigitalStoreService.php🟡
71generateConfig inject string ke nginx tanpa escaping — risiko path traversalDigitalStoreService.php:1536-1540🔴

Infrastruktur / Lintas modul

#BugLokasiStatus
72API token Cloudflare hardcoded di 4 fileDns.php:74, CompareDnsRecords.php:17, MigrateCloudflareTolightsail.php:28, WelcomeController.php:846🔴
73Route login-as-user diamankan path acak — security by obscurity, menerbitkan JWT tanpa authapi.php:92-93🔴
74state/store.js:4 import salah — notification from './modules/layout' (harusnya ./modules/notification)state/store.js:4🔴
75FILESYSTEM_DISK dua kali di .env — nilai terakhir menang.env🟡
76QUEUE_CONNECTION=sync — job berjalan blocking dalam request.env🟡
77.env.example tertinggal 87 variabel — tidak sinkron dengan kode.env.example🟡
78106 file mengandung console.log / dd() / var_dump()banyak file🟡
79Backup service di source tree — DokuApiService_backup_20260602_110428.phpapp/Services/🟡

Status legenda

SimbolArti
🔴Belum diperbaiki
🟡Dikonfirmasi / diketahui (mungkin by design, atau risiko rendah)
🟢Diperbaiki

Cara menambah bug baru

Saat menemukan bug baru, tambahkan ke tabel modul terkait. Format:

plaintext
| # | Deskripsi singkat | `file:line` | 🔴 |

Jangan hapus entry yang sudah diperbaiki — ubah statusnya jadi 🟢 dan tambahkan catatan commit fix.