# Mobile API Blueprint Dokumen ini merangkum: - endpoint mobile per role - layar minimum yang dibutuhkan aplikasi mobile - batas scope mobile yang sengaja dipertahankan agar tetap praktis ## Prinsip - Mobile memakai auth yang sama dengan web. - Login lewat `POST /api/v1/auth/login`, lalu kirim `Authorization: Bearer `. - Semua endpoint mobile berada di prefix `/api/v1/mobile`. - Mobile fokus ke operasi cepat, scan, input lapangan, monitoring, dan closing ringan. - Fitur admin berat seperti `users`, `settings`, `audit-trail`, dan master data lengkap tetap web-only. ## Role Mobile Role yang didukung di mobile: - `WAREHOUSE` - `QC` - `SALES` - `PURCHASING` - `OWNER` Role yang tidak menjadi target mobile utama: - `ADMIN` - `SYSTEM_ADMIN` ## Bootstrap Umum Semua role mobile memakai: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard?locale=id|en` `/mobile/bootstrap` mengembalikan: - user session - daftar modul yang boleh diakses role tersebut - summary ringkas operasional - grade aktif - gudang aktif dan lokasi aktif - master transformation mode ## Matriks Endpoint Per Role ### Warehouse Tujuan: - scan lot - submit purchase yang otomatis membuat receipt dan lot - buat penyesuaian stok - kirim / selesaikan washing Endpoint: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard` - `GET /api/v1/mobile/lots` - `GET /api/v1/mobile/lots/:id` - `GET /api/v1/mobile/lots/scan?code=...` - `GET /api/v1/mobile/purchases` - `GET /api/v1/mobile/purchases/:id` - `POST /api/v1/mobile/purchases/:id/submit` - `GET /api/v1/mobile/stock-adjustments/bootstrap` - `GET /api/v1/mobile/stock-adjustments` - `POST /api/v1/mobile/stock-adjustments` - `GET /api/v1/mobile/washing/bootstrap` - `GET /api/v1/mobile/washing` - `POST /api/v1/mobile/washing` - `PUT /api/v1/mobile/washing/:id` - `POST /api/v1/mobile/washing/:id/complete` ### QC Tujuan: - scan lot - lihat detail lineage lot - ubah grade / mixing - bantu washing completion - buat penyesuaian stok terkait QC Endpoint: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard` - `GET /api/v1/mobile/lots` - `GET /api/v1/mobile/lots/:id` - `GET /api/v1/mobile/lots/scan?code=...` - `GET /api/v1/mobile/washing/bootstrap` - `GET /api/v1/mobile/washing` - `PUT /api/v1/mobile/washing/:id` - `POST /api/v1/mobile/washing/:id/complete` - `GET /api/v1/mobile/lot-transformations` - `POST /api/v1/mobile/lot-transformations` - `GET /api/v1/mobile/lot-transformations/:id` - `GET /api/v1/mobile/stock-adjustments/bootstrap` - `GET /api/v1/mobile/stock-adjustments` - `POST /api/v1/mobile/stock-adjustments` ### Sales Tujuan: - lihat stok jual - buat penjualan reguler - buat penjualan JIT - buat titip jual - tutup transaksi Endpoint: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard` - `GET /api/v1/mobile/lots` - `GET /api/v1/mobile/lots/:id` - `GET /api/v1/mobile/lots/scan?code=...` - `GET /api/v1/mobile/sales-regular/bootstrap` - `GET /api/v1/mobile/sales-regular` - `POST /api/v1/mobile/sales-regular` - `GET /api/v1/mobile/sales-regular/:id` - `POST /api/v1/mobile/sales-regular/:id/close` - `GET /api/v1/mobile/sales-jit/bootstrap` - `GET /api/v1/mobile/sales-jit` - `POST /api/v1/mobile/sales-jit` - `GET /api/v1/mobile/sales-jit/:id` - `POST /api/v1/mobile/sales-jit/:id/close` - `GET /api/v1/mobile/consignments/bootstrap` - `GET /api/v1/mobile/consignments` - `POST /api/v1/mobile/consignments` - `GET /api/v1/mobile/consignments/:id` - `POST /api/v1/mobile/consignments/lines/:lineId/close` ### Purchasing Tujuan: - buat draft pembelian - edit / submit pembelian - buat permintaan dana - monitor analisis dan realisasi pembelian Endpoint: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard` - `GET /api/v1/mobile/purchases` - `POST /api/v1/mobile/purchases` - `GET /api/v1/mobile/purchases/:id` - `PUT /api/v1/mobile/purchases/:id` - `POST /api/v1/mobile/purchases/:id/submit` - `POST /api/v1/mobile/purchases/:id/cancel` - `GET /api/v1/mobile/fund-requests/bootstrap` - `GET /api/v1/mobile/fund-requests` - `POST /api/v1/mobile/fund-requests` - `GET /api/v1/mobile/purchase-analyses` - `GET /api/v1/mobile/purchase-analyses/:purchaseId` - `GET /api/v1/mobile/purchase-realizations` - `GET /api/v1/mobile/purchase-realizations/:purchaseId` ### Owner Tujuan: - monitoring dashboard - lihat analisis pembelian - lihat realisasi pembelian - lihat status transaksi penting Endpoint minimum: - `GET /api/v1/mobile/bootstrap` - `GET /api/v1/mobile/dashboard` - `GET /api/v1/mobile/purchases` - `GET /api/v1/mobile/purchases/:id` - `GET /api/v1/mobile/fund-requests` - `GET /api/v1/mobile/purchase-analyses` - `GET /api/v1/mobile/purchase-analyses/:purchaseId` - `GET /api/v1/mobile/purchase-realizations` - `GET /api/v1/mobile/purchase-realizations/:purchaseId` - `GET /api/v1/mobile/sales-regular` - `GET /api/v1/mobile/sales-jit` - `GET /api/v1/mobile/consignments` - `GET /api/v1/mobile/washing` ## Layar Minimum Per Role ### Warehouse Layar minimum: 1. Login 2. Dashboard ringkas 3. Scan lot 4. Detail lot 5. Daftar pembelian siap submit 6. Submit pembelian yang otomatis membuat receipt + lot 7. Penyesuaian stok 8. Daftar washing 9. Buat washing 10. Selesaikan washing ### QC Layar minimum: 1. Login 2. Dashboard ringkas 3. Scan lot 4. Detail lot dan turunan lot 5. Daftar transformasi 6. Buat mixing / ubah grade 7. Daftar washing 8. Selesaikan washing 9. Penyesuaian stok QC ### Sales Layar minimum: 1. Login 2. Dashboard ringkas 3. Stok siap jual 4. Scan lot 5. Buat penjualan reguler 6. Detail dan tutup penjualan reguler 7. Buat penjualan JIT 8. Detail dan tutup penjualan JIT 9. Buat titip jual 10. Detail dan tutup item titip jual ### Purchasing Layar minimum: 1. Login 2. Dashboard ringkas 3. Daftar pembelian 4. Form draft pembelian 5. Detail pembelian 6. Submit pembelian 7. Daftar permintaan dana 8. Form permintaan dana 9. Daftar analisis pembelian 10. Daftar realisasi pembelian ### Owner Layar minimum: 1. Login 2. Dashboard ringkas 3. Daftar pembelian 4. Detail pembelian 5. Daftar analisis pembelian 6. Detail analisis pembelian 7. Daftar realisasi pembelian 8. Detail realisasi pembelian 9. Daftar transaksi keluar 10. Daftar washing ## Scope Yang Sengaja Tidak Dibawa ke Mobile - manajemen user - pengaturan sistem - audit trail penuh - master data lengkap - office buyout - print label / dokumen - laporan web yang kompleks ## Urutan Implementasi UI Mobile yang Disarankan 1. Warehouse 2. QC 3. Sales 4. Purchasing 5. Owner Alasannya: - Warehouse dan QC paling sering butuh scan dan aksi lapangan cepat - Sales di urutan berikutnya karena butuh transaksi tapi tidak banyak input master - Purchasing dan Owner lebih banyak monitoring dan persetujuan ringan