Formulir Masuk Delivery Order — Trial

Operasional Driver Ekspedisi · intake manual, import scan, dan kontrak API
Form v1.0 0 DO tersimpan Data lokal (browser)

A · Inti DO — dikonsumsi ODE hari ini

Enam field di bawah ini adalah satu-satunya yang saat ini dibaca aplikasi ODE (tabel delivery_order). Field bertanda * wajib.

Unik. Ini kunci idempotensi ingestion.
Opsional, untuk rekonsiliasi ke sistem pembuat DO.
ID stabil driver, bukan nama tampilan.
Harus ada di master kendaraan agar CP1 lolos.

B · Master driver & kendaraan

Dipakai untuk login driver, validasi nopol (CP1), dan tampilan. Bentuknya mengikuti kontrak company-master-sync.

C · Customer & rute

Koordinat + radius dipakai untuk uji geofence CP3/CP6. Default radius 150 m (usulan ODE-OD-004).

Titik jemput / muat (origin)
Titik antar / bongkar (destination)

D · Muatan

E · Jadwal & uang jalan

F · Dokumen & catatan

Daftar DO tersimpan

Tersimpan di localStorage browser ini. Export untuk dipakai sebagai payload ingestion.

0
Total
0
Assigned
0
Ready
0
Total kg
Nomor DOStatusDriverKendaraanCustomerMuatanAksi
Belum ada DO. Tambahkan lewat tab Entri DO.

Import dari PDF / hasil scan

Tahap trial: unggah dokumen → periksa → isi form di samping. OCR otomatis belum aktif; teks hasil scan bisa ditempel untuk ekstraksi awal.

Klik atau taruh file di sini
PDF, JPG, atau PNG · maks 10 MB
Pratinjau dokumen

Alur yang disarankan

  1. Unggah PDF/scan surat jalan.
  2. Ekstrak teks (tempel) → field terisi otomatis bila polanya dikenali.
  3. Verifikasi manual — OCR tidak boleh jadi sumber kebenaran.
  4. Simpan → DO masuk daftar, siap diexport/ingest.
  5. Simpan hash dokumen (ditampilkan di atas) sebagai bukti asal.

Yang bisa diekstrak otomatis

Nomor DO, tanggal, nopol, telepon, berat, jumlah koli. Nama/alamat tetap manual karena format surat jalan tiap perusahaan berbeda.

Kalau nanti mau OCR penuh

Butuh service OCR (Tesseract/PaddleOCR) + antrean + layar konfirmasi. Jangan auto-commit ke DB tanpa persetujuan manusia — satu salah baca nopol bisa menggagalkan CP1.

Import CSV / JSON

Untuk memasukkan banyak DO sekaligus. Format CSV memakai header yang sama dengan template.

Klik atau taruh file CSV / JSON
Baris dengan nomor DO duplikat akan dilewati

Kolom wajib

doNumber, status, origin, driverRef, vehicleRef, customerRef,
driverName, driverPhone, customerName, cargoDescription, cargoWeightKg,
originName, originLat, originLng, destName, destLat, destLng

Kolom lain opsional dan akan diisi kosong bila tidak ada.

Kontrak ingestion yang diusulkan

ODE saat ini read-only untuk DO: belum ada endpoint pembuat DO. Kontrak di bawah adalah usulan agar tiga jalur (entry, scan, API) memakai bentuk data yang sama.

POST /v1/admin/delivery-orders
Authorization: Bearer <staff-token>
Idempotency-Key: <uuid>
Content-Type: application/json

{
  "doNumber": "DO-2026-10-0001",
  "status": "ASSIGNED",
  "origin": "company_sync",
  "externalSourceId": "ERP-778812",
  "driverRef": "DRV-001",
  "vehicleRef": "B 9012 XYZ",
  "customerRef": "CUST-001",
  "master": {
    "driver":  { "name": "...", "phone": "...", "vehicleRegistrationNumber": "B 9012 XYZ", "vehicleType": "CDD Long" },
    "vehicle": { "registrationNumber": "B 9012 XYZ", "type": "CDD Long" },
    "customer":{ "name": "...", "phone": "...", "address": "..." },
    "locations": [
      { "locationId": "LOC-POOL-01", "name": "Pool Cakung", "type": "loading",
        "latitude": -6.1823, "longitude": 106.9437, "geofenceRadiusOverride": 150 }
    ]
  },
  "operational": { "...": "lihat tab Panduan Field" }
}

Respons yang diharapkan: 201 Created atau 200 OK dengan replayed: true bila Idempotency-Key sama. Duplikat doNumber → 409 CONFLICT.

Tiga jalur masuk

JalurCocok untukStatus hari iniYang perlu dibangun
Entri manualVolume rendah, koreksi cepat, trialbelum ada di ODEForm ini + endpoint create
Import PDF/scanDO dari pihak lain / arsip kertasbelum adaUpload + OCR + layar konfirmasi
API ke aplikasi pembuat DOVolume tinggi, sumber otoritatifkontrak belum beku (ODE-OD-008)Adapter + mapping + rekonsiliasi

Urutan yang saya sarankan: API dulu untuk jangka panjang, tapi form ini dulu supaya trial bisa jalan minggu ini tanpa menunggu kontrak.

Jalur sementara tanpa endpoint baru

Untuk trial, DO bisa dimasukkan server-side (di luar API) memakai upsert idempoten pada delivery_order. Tidak menambah permukaan API publik.

INSERT INTO delivery_order (do_number, status, driver_ref, vehicle_ref, customer_ref, origin, revision)
VALUES ('DO-TRIAL-0001','ASSIGNED','DRV-001','B 9012 XYZ','CUST-001','internal',1)
ON CONFLICT (do_number) DO UPDATE
  SET status = EXCLUDED.status,
      driver_ref = EXCLUDED.driver_ref,
      vehicle_ref = EXCLUDED.vehicle_ref,
      customer_ref = EXCLUDED.customer_ref,
      revision = delivery_order.revision + 1,
      updated_at = now();

Catatan: master kendaraan (vehicle_master_projection) juga harus diisi, kalau tidak validasi nopol CP1 akan menolak semua plat.

Panduan field

FieldDipakai ODE?Kenapa perlu
doNumberyaIdentitas DO + kunci idempotensi
statusyaMenentukan DO muncul & bisa dipilih driver
originyaMembedakan DO internal vs sync perusahaan
driverRefyaFilter DO per driver di perangkat
vehicleRefyaDicocokkan saat driver input nopol (CP1)
customerRefyaReferensi customer untuk laporan & filter
Driver name/phonebelumUntuk login & tampilan; butuh master driver
Customer name/addressbelumButuh master customer (REQ-052)
Lokasi + lat/lng + radiusbelumUji geofence CP3/CP6 (REQ-053/064)
Muatan & beratbelumKonteks operasional, laporan, uji beban
Uang jalanbelumGate CP sebelum progres (REQ-011/071)
Window jadwalbelumUji keterlambatan & laporan
DokumenbelumChecklist CP4 (surat jalan, invoice, packing list)

Kolom “belum” tetap disimpan di form supaya trial terasa realistis dan supaya bentuk datanya sudah siap saat kontrak upstream dibekukan.

Siklus status DO

ASSIGNED → READY → ACTIVE → OPERATIONALLY_FINISHED → PENDING_SYNC → COMPLETION_PENDING → COMPLETE

Hanya server yang boleh menetapkan COMPLETE. Perangkat berhenti di OPERATIONALLY_FINISHED.

Checkpoint CP1–CP7

CP1Vehicle Pickup — validasi nopol
CP2Departure — mulai tracking
CP3Loading Arrival — geofence
CP4Loading Process — foto sebelum/proses/sesudah + dokumen
CP5Start Delivery
CP6Unloading Arrival — geofence
CP7Unloading Process — bukti serah terima