Files
setrip/docs/archive/ADMIN_VERIFICATION_ROADMAP.md

4.8 KiB

Setrip — Admin Verification Roadmap (ARCHIVED — DELIVERED 2026-05-18)

Enhancement KYC organizer verification: reopen REJECTED, request re-upload, history, manual override.


Status delivery

Phase Status Catatan
Phase 1 — Reopen Rejected Delivered Tombol "Buka kembali ke PENDING" di REJECTED card dengan note wajib.
Phase 2 — Re-upload Request Delivered Admin pilih checkbox field (KTP/liveness/NIK/bank/alamat) + note. Organizer dapat banner kuning di /verify dengan highlight field yang diminta. Auto-clear saat submit ulang.
Phase 3 — Submission History Delivered Field submissionCount di-bump tiap submit ulang. previousRejections JSON array menyimpan rejection lama (waktu + reason + submission ke-N) sebelum overwrite.
Phase 4 — Manual Override Delivered Admin verify user tanpa upload KYC (partner trusted). Flag isManualOverride = true untuk audit transparansi. UI di /admin/users/[id].

Phase 1 — Reopen Rejected

# Item Status File
1.1 organizerService.reopenVerification server/services/organizer.service.ts
1.2 organizerRepo.reopen server/repositories/organizer.repo.ts
1.3 reopenVerificationAction (guard isAdmin + audit log) features/organizer/actions.ts
1.4 UI tombol di REJECTED card features/organizer/components/review-card.tsx

Phase 2 — Re-upload Request

# Item Status File
2.1 Migration: reuploadRequested, reuploadFields String[], reuploadNote prisma/migrations/20260518190000_verification_enhancements/
2.2 organizerService.requestReupload(verifId, adminId, fields, note) + REUPLOAD_FIELDS enum-like const server/services/organizer.service.ts
2.3 organizerRepo.requestReupload (set status PENDING + flag + clear review) server/repositories/organizer.repo.ts
2.4 requestReuploadAction (guard isAdmin + audit log) features/organizer/actions.ts
2.5 UI admin di PENDING card: tombol "🔄 Minta re-upload" + multi-checkbox field + note features/organizer/components/review-card.tsx
2.6 Banner kuning di /verify saat reuploadRequested = true + list field yang diminta app/(public)/verify/page.tsx
2.7 Auto-clear flag saat organizer submit ulang (logic di submitVerification) server/services/organizer.service.ts

Phase 3 — Submission History

# Item Status File
3.1 Migration: submissionCount Int @default(1), previousRejections Json? prisma/migrations/20260518190000_verification_enhancements/
3.2 Bump submissionCount + archive rejection lama saat submit ulang (helper buildArchivedRejections) server/services/organizer.service.ts

Catatan: snapshot full data (Phase 3.1 di roadmap awal) di-skip — submissionCount + previousRejections (array waktu/reason) cukup untuk audit "berapa kali verify, apa reason ditolak sebelumnya". UI history detail bisa ditambah saat ada permintaan konkret.


Phase 4 — Manual Override

# Item Status File
4.1 Migration: isManualOverride Boolean @default(false), manualOverrideById, manualOverrideNote prisma/migrations/20260518190000_verification_enhancements/
4.2 organizerService.manualOverrideVerification(input) — bikin row APPROVED dengan placeholder KYC server/services/organizer.service.ts
4.3 organizerRepo.createManualOverride server/repositories/organizer.repo.ts
4.4 manualOverrideVerificationAction (guard isAdmin + audit log) features/organizer/actions.ts
4.5 UI: ManualVerifyButton di /admin/users/[id] (hanya tampil kalau user belum punya verification) features/admin/components/manual-verify-button.tsx

Tindakan manual ops:

  1. Apply migration: npx prisma migrate deploy.
  2. Brief admin: re-upload request lebih lembut dari reject (organizer tidak perlu ulang dari nol). Manual override hanya untuk partner trusted dengan ref konkret di note (mis. nomor kontrak).