Handover Backend → Frontend
Perubahan perilaku API hasil audit. Wajib dibaca sebelum update klien.
1. Pagination (BREAKING untuk klien yang andalkan "return semua")
Semua endpoint list kini dibatasi default 50 row per request.
- Web verification-checks:
GET /danPOST /findmenerima querytake&skip.takedi-clamp ke 1–100,skip≥ 0.- Tanpa param →
take: 50.
- Mobile verification-checks: endpoint list (
findManyByOwnerId) sama, default 50.
Untuk data lengkap: loop pakai skip/take, jangan harap semua row sekali jalan.
2. Status filter diperbaiki
Sebelumnya status=rejected maupun status=need_approval return semua row (bug).
Nilai status yang valid sekarang:
query status |
hasil |
|---|---|
verified / approved |
hanya APPROVED |
rejected |
hanya REJECTED |
need_approval / need-approval |
hanya NEED_APPROVAL |
| tidak dikirim / tidak dikenal | tanpa filter (semua) |
3. Web category list — shape response berubah (BREAKING)
category.findAll (web) tidak lagi mengembalikan nested verificationChecks array.
Response sekarang: field category + verifiedCounter.
Kalau UI memakai field nested itu, sesuaikan; counter masih tersedia.
4. Mobile category findOne — sekarang berfungsi
Dulu id param tidak terbaca (bug), endpoint selalu miss. Sekarang @Param('id') benar.
Kalau sebelumnya ada workaround klien, hapus.
5. Mobile category import — return berisi
processImport dulu selalu return [] (bug). Sekarang berisi kategori hasil import.
6. Error handling
- JSON body tidak valid → 400
Invalid JSON payload(dulu 500 unhandled). - Error tak terduga → 500 generik
An unexpected error occurred.(detail Prisma tidak lagi bocor ke klien).
7. Upload
- Maks 10 file per request, 10 MB per file (dulu praktis unlimited). Lebih → ditolak multer.
- Ekstensi file dipaksa dari mimetype whitelist: jpg/jpeg/png/pdf saja. Upload dengan
ekstensi aneh (mis.
x.htmlberlabelimage/png) ditolak. - Request JSON dibatasi 1 MB.
8. CORS (action needed per environment)
origin: '*' dihapus. Sekarang dari env:
CORS_ORIGINS="https://app.example.com,https://admin.example.com"
- Tidak di-set → CORS mati (same-origin only) → browser frontend cross-origin akan block.
- Wajib diisi di
.envsetiap environment sebelum deploy.
9. Env baru (ops)
REDIS_HOST="localhost" # default localhost
REDIS_PORT="6379" # default 6379
CORS_ORIGINS="" # wajib diisi untuk akses cross-origin
Catatan backend (bukan urusan frontend)
prisma migrate devperlu dijalankan (index baru + kolom panjang@db.Text). Belum ada migration.- Auth/JWT: sengaja belum diimplementasi (keputusan owner). Semua endpoint masih publik.