Lewati ke konten

Troubleshooting

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:

Terminal window
pnpm exec tsc -b
pnpm run check:convex
pnpm exec eslint .
pnpm test

Toast 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:

  1. Apakah profil user berstatus active (bukan pending/blocked).
  2. Apakah role user (setelah dinormalisasi lewat permission_normalized_role()) termasuk yang diizinkan fungsi can_manage_<domain>() terkait — lihat Model Keamanan.
  3. 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.