Files
bij/docs/migration/parity-checklist.md
2026-04-21 05:59:39 +07:00

5.1 KiB

Checklist uji parity API mobile (CI3 Json.php ↔ CI4)

Gunakan DB & data yang sama. Bandingkan string body JSON (atau parse lalu diff struktur) antara:

  • CI3: POST .../index.php/json/{endpoint}
  • CI4: POST .../json/{endpoint} atau POST .../api/mobile/{endpoint}

Aktifkan logging sementara: set API_PARITY_LOG=true di .env, lalu cek writable/logs/api_parity-YYYY-MM-DD.log (hanya diisi oleh request HTTP ke MobileJsonController, bukan oleh CLI).

Otomatisasi staging: jalankan php spark api:staging-validate (dan opsional --with-uploads) — hasil mesin di writable/staging/last-validation.json; ringkasan manusia di parity-report.md.


Aturan umum verifikasi

  • Kunci JSON sama (tidak ada field tambahan di CI4 kecuali kesalahan tak terduga).
  • Tipe: status integer 0/1; pesan string; array/objek nested sama.
  • utf8ize / string Latin-1: bandingkan escape \uXXXX jika ada karakter non-ASCII.
  • Tanpa JSON_PRETTY_PRINT di lingkungan development CI4 untuk string match (sudah dipaksa json_encode(..., 0) di controller).

1. login

  • Request: username, password (POST).
  • Gagal: { "status": 0, "pesan": "Username atau Password tidak sesuai" } (tanpa token).
  • Sukses: status 1, pesan "Selamat datang", token string panjang (md5(id)+15 char).
  • DB: kolom token & last_login ter-update.

2. login_w_token

  • Request: token.
  • Gagal token: status 0, pesan "".
  • Sukses: status 1, pesan "" (tanpa objek pegawai di root — sama CI3).

3. profil

  • Request: token.
  • Gagal: status 0, pesan "", tanpa pegawai.
  • Sukses: pegawai dengan nested kantor, jabatan, unit_kerja, lembur, dilapangan (boolean), jadwal (objek dengan hari, masuk, pulang, istirahat, toleransi_masuk, toleransi_pulang, libur, ket_libur jika ada).
  • Perilaku libur perusahaan: pada hari libur nasional/perusahaan, ket_libur terisi; libur tetap true seperti CI3 (tidak di-set false di cabang libur).

4. presensi_today

  • Request: token.
  • Sukses: data objek; jika baru insert, id_presensi string bentuk "12." (angka + titik).
  • Kolom null/string: konsisten dengan baris DB yang sama di CI3.

5. presensi

  • Request: token.
  • Ada data: status 1, data array (maks 20).
  • Tanpa data: status 0, tanpa kunci data (sama CI3).

6. save_masuk

  • Request: token, nama_photo, photo (base64), lat, lng, jarak.
  • Tanpa pegawai / tanpa jadwal: status 0, pesan "Tidak ada jadwal kerja".
  • Upload gagal: pesan "Photo Kehadiran GAGAL upload" (dua spasi).
  • Sukses: file di public/assets/uploads/absen/masuk/, status 1.
  • Catatan: CI3 tidak mengembalikan URL file di JSON — hanya pesan; CI4 sama.

7. save_pulang

  • Sama pola upload + pesan gagal/sukses.
  • Belum waktunya pulang: pesan persis: Belum waktunya Pulang, waktu pulang anda adalah pukul {jam}. Jika anda memerlukan... (titik setelah jam).

8. save_istirahat

  • Request: token, mulai, selesai.
  • Sukses normal: status 1, pesan "berhasil disimpan".
  • Catatan CI4: jika mulai dan selesai keduanya kosong, CI4 tidak menjalankan UPDATE (menghindari error); CI3 PHP 7 bisa memicu perilaku tak terdefinisi — dokumentasi di parity-report.md.

9. save_aktifitas

  • Folder public/assets/uploads/aktifitas/, pesan sukses/gagal sama.

10. save_cuti

  • Folder public/assets/uploads/dokcuti/, insert cuti + cuti_dokumen.

11. batalkan_cuti

  • Request: token, id.
  • Sukses: pesan berisi Ajuan di batalkan {id} - {id_pegawai}.

12. berita

  • Request: token, dari, jumlah (opsional kosong → default seperti CI3).
  • Token valid: status 1 selalu, data array (boleh kosong).

13. cuti

  • Token valid: status 1, data array; tiap item bisa punya dokumen array.
  • Tanpa baris cuti: data = [].

14. lembur

  • Sama seperti berita/cuti untuk pagination & status 1 + data.

15. libur

  • Token valid: status 1, data seluruh tabel libur (urutan tanggal_libur desc).

16. aktifitas

  • status 1 + data untuk token valid.

17. daftar_today

  • Request: token.
  • Ada rekan dengan presensi hari ini: status 1, data array join pegawai/jabatan/presensi.
  • Kosong: status 0 (sama CI3).

18. save_pp

  • Folder public/assets/uploads/pengguna/, hapus foto lama jika ada.
  • Pesan gagal upload: "Photo Kehadiran GAGAL upload" (teks sama CI3 meskipun konteks profil).

19. save_password

  • Request: token, pass_lama, pass_baru.
  • Default gagal (token salah): pesan "-".
  • Password lama salah: pesan sesuai CI3.
  • Sukses: status 1, pesan "Password berhasil di ubah".

Ringkasan

Total endpoint 19
Verifikasi wajib POST + JSON body + efek samping DB/file

Status readiness setelah uji manual: centang kolom “lulus” per lingkungan sebelum cutover.