Troubleshooting
pnpm run check gagal
Section titled “pnpm run check gagal”check menjalankan empat hal sekaligus: tsc -b (build TypeScript),
tsc --noEmit untuk folder convex/, eslint . --max-warnings=0 (nol
toleransi warning), dan vitest run. Jalankan satu per satu untuk
mengisolasi penyebabnya:
pnpm exec tsc -bpnpm run check:convexpnpm exec eslint .pnpm testToast error generik “Layanan sedang tidak dapat dihubungi”
Section titled “Toast error generik “Layanan sedang tidak dapat dihubungi””Ini bukan pesan asli dari backend — getUserFacingError()
(src/lib/user-facing-error.ts) sengaja mengganti pesan teknis (kode
PGRST*, nama relasi Postgres, dll.) dengan pesan generik ini agar detail
database tidak bocor ke pengguna. Untuk melihat pesan aslinya saat
debugging, periksa console browser atau log Supabase, bukan tampilan UI.
Lihat Pola Frontend.
Toast “Anda tidak memiliki akses untuk melakukan tindakan ini”
Section titled “Toast “Anda tidak memiliki akses untuk melakukan tindakan ini””Ini muncul saat RPC/Postgres menolak karena RLS atau pengecekan
can_manage_*() gagal — bukan karena bug di frontend. Periksa:
- Apakah profil user berstatus
active(bukanpending/blocked). - Apakah role user (setelah dinormalisasi lewat
permission_normalized_role()) termasuk yang diizinkan fungsican_manage_<domain>()terkait — lihat Model Keamanan. - Apakah ada override permission per-role yang mematikan kemampuan
tersebut (
role_permission_overrides).
Data tidak muncul setelah tabel kanonik suatu domain diaktifkan
Section titled “Data tidak muncul setelah tabel kanonik suatu domain diaktifkan”Pembacaan kanonik hanya aktif jika flag VITE_SUPABASE_CANONICAL_*_READS
bernilai true dan jumlah baris di tabel legacy dan kanonik untuk
domain itu sudah sama persis. Jika jumlahnya belum sama, kode otomatis
fallback diam-diam ke legacy_documents — periksa jumlah baris di kedua
tabel, bukan asumsikan ada bug baca data. Lihat
Migrasi & Rollout.
Build sukses tapi muncul peringatan ukuran chunk >500 kB
Section titled “Build sukses tapi muncul peringatan ukuran chunk >500 kB”Peringatan build Vite soal “chunks are larger than 500 kB” bersifat
informasional, bukan kegagalan — tapi CI (quality.yml) tetap menjalankan
pnpm run check:bundle sebagai gate anggaran bundle yang sebenarnya.
Periksa skrip itu (scripts/check-bundle-size.mjs) untuk ambang batas
yang berlaku saat ini.
Aplikasi memakai jalur Convex padahal seharusnya Supabase
Section titled “Aplikasi memakai jalur Convex padahal seharusnya Supabase”Periksa VITE_BACKEND_PROVIDER di .env.local — nilainya harus persis
supabase. Nilai lain (termasuk kosong) membuat isSupabaseBackend
bernilai false dan aplikasi jatuh ke jalur kompatibilitas Convex. Lihat
Gambaran Arsitektur.
Sumber: src/lib/user-facing-error.ts,
src/lib/backend-provider.ts, src/features/hr/supabase-hr.ts,
package.json (skrip check*), .github/workflows/quality.yml.