Skip to content

Known Issues & Tech Debt

Daftar utang teknis, inkonsistensi, dan gotchas yang ditemukan saat audit codebase. Ini menjadi input penting untuk Roadmap Migrasi.

Prioritas tinggi (risiko / keamanan)

#IsuDampakLokasi
1Node.js 14 EOLTidak ada security patch; banyak dependency modern tak didukungpackage.json (engines: 14.x)
2Route Zimbra tanpa auth/api/v1/zimbras/* bisa diakses tanpa otentikasi (operasi provisioning sensitif)routes/zimbraRoutes.js
3Secret managementKredensial di .env polos; perlu vault/secret manager.env
4Access token 1 menitRefresh sangat sering; rawan masalah UX & bebanhelpers/token.helper.js
5Tidak ada test gate di CIDeploy langsung git pull + reload tanpa test/build.github/workflows/*
6Migrasi DB manualMudah terlupa/inkonsisten antar environmentproses deploy

Prioritas menengah (arsitektur / maintainability)

#IsuDampakLokasi
7Queue fire-and-forgetChild process tanpa backpressure/retry/observability; job bisa hilanghelpers/cp.helper.js, job-runner.js
8Bull terpasang tapi tak dipakaiDependency menyesatkan; queue sebenarnya berbasis tabel Jobspackage.json
9Scheduler in-process non-aktifrunnerJob.js stub; jadwal cron hanya di crontab VPS (tak terlihat di repo)cron/scheduledFunctions/runnerJob.js
10Penanganan error tidak konsistenCampuran response.failed, JSON manual, dan CustomAPIErrorseluruh controllers/
11Format response tidak konsistenSebagian response.helper, sebagian manualseluruh controllers/
12Swagger coverage parsialDokumentasi API tidak lengkap, judul placeholder "Library API"app.js, routes/*.js
13Typo nama foldercontrollers/biliings/ (kurang huruf l)controllers/biliings/

Prioritas rendah (kebersihan data/skema)

#IsuDampakLokasi
14Tabel TransEmailLogs tidak dipakaiLog nyata di ES; tabel jadi legacy membingungkanmodels/transemaillog.js
15Tabel JobDetails tidak dipakaiScaffolding tak terpakaimodels/jobdetail.js
16Drift model vs migrasiEnum TViewCompanyMailUsages berbeda; tipe uuid STRING vs UUIDberbagai model
17Kolom duplikatservicePeriode dideklarasi 2x di modelmodels/transcompanysubscriptions.js
18Asosiasi tidak lengkapUnlockCounter, TransCompanyTags, transCompanyInvoiceId tanpa relasi penuhberbagai model
19Default DB_PORT 3306Default port MySQL untuk DB PostgreSQLhelpers/config.helper.js
20mysql2 di dependencyTidak dipakai untuk DB utama (PostgreSQL)package.json
21Env var tak terdokumentasiINTERNAL_API_KEY, SPARKPOST_WEBHOOK_*, AMC tidak ada di .env.example.env.example

Mirror Zimbra ganda

Production mem-mirror operasi ke dua instance Zimbra (AKTIVA & EXCELLENT). Logika ini implisit di helpers/zimbra.helper.js dan perlu didokumentasikan/diuji ekstra saat migrasi agar tidak ada akun yang tidak sinkron.

Catatan kualitas kode umum

  • Banyak blok kode di-comment (mis. Swagger lama di routes/index.js, cron schedule di runnerJob.js).
  • Sebagian skrip cron punya komentar jadwal yang mungkin tidak sesuai dengan crontab production sebenarnya.
  • Nama file/fungsi campur konvensi (camelCase, kebab-case).

Cara memakai daftar ini

Saat menyusun Roadmap Migrasi, prioritaskan isu prioritas tinggi di fase stabilisasi (Fase 0), lalu isu arsitektur di fase modernisasi (Fase 1).