5.1 KiB
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}atauPOST .../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:
statusinteger 0/1;pesanstring; array/objek nested sama. utf8ize/ string Latin-1: bandingkan escape\uXXXXjika ada karakter non-ASCII.- Tanpa
JSON_PRETTY_PRINTdi lingkungan development CI4 untuk string match (sudah dipaksajson_encode(..., 0)di controller).
1. login
- Request:
username,password(POST). - Gagal:
{ "status": 0, "pesan": "Username atau Password tidak sesuai" }(tanpatoken). - Sukses:
status1,pesan"Selamat datang",tokenstring panjang (md5(id)+15 char). - DB: kolom
token&last_loginter-update.
2. login_w_token
- Request:
token. - Gagal token:
status0,pesan"". - Sukses:
status1,pesan"" (tanpa objek pegawai di root — sama CI3).
3. profil
- Request:
token. - Gagal:
status0,pesan"", tanpapegawai. - Sukses:
pegawaidengan nestedkantor,jabatan,unit_kerja,lembur,dilapangan(boolean),jadwal(objek denganhari,masuk,pulang,istirahat,toleransi_masuk,toleransi_pulang,libur,ket_liburjika ada). - Perilaku libur perusahaan: pada hari libur nasional/perusahaan,
ket_liburterisi;liburtetaptrueseperti CI3 (tidak di-setfalsedi cabang libur).
4. presensi_today
- Request:
token. - Sukses:
dataobjek; jika baru insert,id_presensistring bentuk"12."(angka + titik). - Kolom null/string: konsisten dengan baris DB yang sama di CI3.
5. presensi
- Request:
token. - Ada data:
status1,dataarray (maks 20). - Tanpa data:
status0, tanpa kuncidata(sama CI3).
6. save_masuk
- Request:
token,nama_photo,photo(base64),lat,lng,jarak. - Tanpa pegawai / tanpa jadwal:
status0,pesan"Tidak ada jadwal kerja". - Upload gagal:
pesan"Photo Kehadiran GAGAL upload" (dua spasi). - Sukses: file di
public/assets/uploads/absen/masuk/,status1. - Catatan: CI3 tidak mengembalikan URL file di JSON — hanya
pesan; CI4 sama.
7. save_pulang
- Sama pola upload + pesan gagal/sukses.
- Belum waktunya pulang:
pesanpersis:Belum waktunya Pulang, waktu pulang anda adalah pukul {jam}. Jika anda memerlukan...(titik setelah jam).
8. save_istirahat
- Request:
token,mulai,selesai. - Sukses normal:
status1,pesan"berhasil disimpan". - Catatan CI4: jika
mulaidanselesaikeduanya kosong, CI4 tidak menjalankanUPDATE(menghindari error); CI3 PHP 7 bisa memicu perilaku tak terdefinisi — dokumentasi diparity-report.md.
9. save_aktifitas
- Folder
public/assets/uploads/aktifitas/, pesan sukses/gagal sama.
10. save_cuti
- Folder
public/assets/uploads/dokcuti/, insertcuti+cuti_dokumen.
11. batalkan_cuti
- Request:
token,id. - Sukses:
pesanberisiAjuan di batalkan {id} - {id_pegawai}.
12. berita
- Request:
token,dari,jumlah(opsional kosong → default seperti CI3). - Token valid:
status1 selalu,dataarray (boleh kosong).
13. cuti
- Token valid:
status1,dataarray; tiap item bisa punyadokumenarray. - Tanpa baris cuti:
data=[].
14. lembur
- Sama seperti berita/cuti untuk pagination &
status1 +data.
15. libur
- Token valid:
status1,dataseluruh tabel libur (urutantanggal_liburdesc).
16. aktifitas
status1 +datauntuk token valid.
17. daftar_today
- Request:
token. - Ada rekan dengan presensi hari ini:
status1,dataarray join pegawai/jabatan/presensi. - Kosong:
status0 (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:
status1, 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.