D
Bug Tracker

Bug Tracker

Daftar bug dan inkonsistensi engine-bot dari KNOWN_ISSUES.md. Dikelompokkan per area (critical, high, correctness, performance, delivery). Diurutkan risiko.

Daftar bug dan inkonsistensi engine-bot dari docs/KNOWN_ISSUES.md source repo. Dikelompokkan per area. Status: 🔴 belum diperbaiki / 🟡 dikonfirmasi / 🟢 diperbaiki.

Critical

#BugLokasiStatus
1Payment proof dapat auto-approve — service/order.js dapat mengubah payment_status menjadi paid berdasarkan nominal hasil OpenAI vision. Bukti palsu atau hasil vision salah dapat membuka fulfillment tanpa verifikasi bank/adminservice/order.js — proofTransactionHandler/addProofTransaction🔴
2Auth bypass melalui forwarded IP — middleware/authMiddleware.js mempercayai raw x-forwarded-for. Client dapat memalsukan allowlisted IP pada deployment tertentumiddleware/authMiddleware.js:6🔴
3Tenant authorization belum diterapkan — JWT diverifikasi, tetapi store_id, agent_id, customer_id, device_id, cart, product, dan order tidak dicocokkan dengan claimsmiddleware/authMiddleware.js, controller🔴
4SSRF dari URL media — image/audio URL di-fetch tanpa protocol/domain allowlist, private network block, redirect restriction, timeout menyeluruh, atau size limitutils/util.js, controllers/mainController.js🔴
5Secret handling — credential berada di local config source. config/ di-ignore, tetapi plaintext workspace tetap berisikoconfig/env.js, config/db.js🔴

High

#BugLokasiStatus
6Buffer dan dedup tidak tenant-safe — key hanya customer_id. Request tenant/device berbeda dapat tercampur. State juga tidak bekerja lintas processcontrollers/mainController.js🔴
7Batched request dapat menggantung — timer terakhir memegang satu Express response; shared promise tidak di-await. Error timer tidak mengirim HTTP errorcontrollers/mainController.js🔴
8Checkout tidak transactional — order, order items, cart cleanup, dan totals berubah melalui operasi terpisah. Failure tengah proses dapat meninggalkan data parsialservice/order.js🔴
9Cart/product scope tidak konsisten — beberapa lookup cart/product tidak memfilter customer/store. ID dari tenant lain berpotensi dipakaiservice/carts.js, service/product.js🔴
10Sequence order rawan race — nomor/sequence dibuat dari latest value lalu increment tanpa atomic counter atau unique indexservice/order.js🔴
11Cart create rawan duplikat — check-then-create tidak memiliki compound unique index customer/store/product/variantservice/carts.js, models/carts.js🔴
12Konfirmasi gagal dapat tetap menghapus cart — caller tidak selalu membedakan return error dari confirmation success sebelum memajukan follow-up dan cleanupservice/order.js🔴
13Cancel status mismatch — writer memakai cancel, scheduler/worker memeriksa cancelled. Cancelled order dapat tetap menerima remindermodels/orders.js, scheduler/worker/worker.js🔴
14Socket.IO tidak terisolasi — socket handshake tidak authenticated dan event newMessage dibroadcast global tanpa tenant roomapp.js:15-22🔴
15Startup tidak fail-fast pada MongoDB — server listen tanpa menunggu successful DB connectionapp.js:27,55, config/db.js🔴
16Tidak ada rate limiting — endpoint LLM/vision/audio dapat dipakai untuk cost exhaustion dan denial of service—🔴

Correctness

#BugLokasiStatus
17Product dipakai tanpa import pada salah satu branch getProductCatalogservice/product.js🟡
18Order dipakai saat model import bernama Orders pada constraint flowservice/order.js🟡
19getServicesShipping dereference order sebelum null checkservice/order.js🟡
20qtyProduct dapat undefined pada shipping update fallbackservice/order.js🟡
21payment_method dideklarasikan dua kali di order schemamodels/orders.js:203,255🟡
22Banyak field order memakai require, bukan Mongoose required — validasi tidak aktifmodels/orders.js🟡
23image.trim() di worker gagal untuk null/non-stringscheduler/worker/worker.js🟡
24time_reply tidak divalidasicontrollers/mainController.js🟡
25Dedup map tidak memiliki TTL cleanupcontrollers/mainController.js🟡
26Error/not-found response chatbot tidak konsisten dengan HTTP status normalcontroller🟡
27Booking tool belum diimplementasikan — seluruh fungsi return pesan stubtools/booking/tools.js🟡
28timestamp typo di agents schema — timestamp: { createdAt: "created_at" } (harusnya timestamps). Hanya createdAt tercatatmodels/agents.js:52🟡

Performance dan Observability

#BugLokasiStatus
29Katalog dan history order dapat dimuat tanpa limit/projectionservice/product.js, controller🟡
30Query utama minim indexmodels/*.js🟡
31Semua specialist wrappers dibangun setiap requestsubagents/*.js🟡
32Token/cost tracking hanya mencakup sebagian call OpenAIservice/costOpenAi.js🟡
33Log dapat memuat PII, message history, media URL, dan payment payloadsemua🟡
34Health endpoint tidak memeriksa MongoDB — status: "ok" tidak berarti service siap melayani seluruh flowapp.js:36-44🟡

Delivery dan Testing

#BugLokasiStatus
35npm test belum menjalankan test — script selalu gagalpackage.json🔴
36Tidak ada regression suite untuk tenant isolation, checkout, payment, buffer, webhook, atau scheduler—🔴
37package-lock.json di-ignore sehingga install tidak reproducible.gitignore🔴
38Workflow install tidak menetapkan deployment working directory.github/workflows/🟡
39Dependency audit: 28 vulnerabilities (1 critical, 12 high) — jalankan npm audit --omit=dev; jangan --force tanpa compatibility testingpackage.json🟡

API & Webhook

#BugLokasiStatus
40Webhook belum memiliki idempotency key — retry DazoApp dapat mengirim pesan gandacontrollers/webhookController.js🔴
41Webhook tidak ada signature atau dedicated credential — route protected JWT/IP umum sajaroutes/chatbotRoutes.js:27🔴
42Socket.IO notify-new-message tidak validasi shape data — payload bebas diteruskan ke clientcontrollers/aiAgentController.js🟡
43Engine Bot belum mengirim Bearer token pada request DazoApp create-checkout dan check-statusservice/order.js🔴

Prioritas perbaikan

  1. Hapus auto-paid dari manual proof (#1)
  2. Perbaiki authentication dan tenant authorization (#2, #3)
  3. Amankan media fetch (#4)
  4. Buat checkout transactional dan tenant-scoped (#8, #9, #10, #11, #12)
  5. Perbaiki batching/error response dan status cancellation (#6, #7, #13, #14, #15, #16)
  6. Tambahkan automated regression tests (#35, #36)
  7. Track lockfile dan upgrade dependency secara terukur (#37, #39)

Detail per prioritas ada di Tech Debt.

Kembali ke