{
    "job_id": "LV3-20260521115130-V8IGQ",
    "updated_at": "2026-05-21 11:51:59",
    "status": "done",
    "message": "Sync leave 3rd party selesai.",
    "processed": 180,
    "total": 180,
    "percent": 100,
    "stats": {
        "processed": 180,
        "matched_karyawan": 178,
        "created": 0,
        "updated": 0,
        "unchanged": 178,
        "changed_pending": 0,
        "changed_locked": 0,
        "skipped_missing_finger": 0,
        "skipped_missing_karyawan": 2,
        "skipped_invalid_date": 0,
        "skipped_existing": 0,
        "skipped_locked": 0,
        "submitted": 0,
        "skipped_auto_submit": 0,
        "failed_auto_submit": 0,
        "failed": 0
    },
    "errors": [
        "kd_finger 3rd party tidak ditemukan di AHSP (master_karyawans.finger_id): 10103",
        "kd_finger 3rd party tidak ditemukan di AHSP (master_karyawans.finger_id): 10103"
    ],
    "output": "Sync Leave 3rd Party\nSource Leave: third_party.erp2025.hrd_ijin_absensi\nSource Pegawai: third_party.erp2025.pegawai_all\nJoin Fixed: hrd_ijin_absensi.idx = erp2025.pegawai_all.idx\nRule Finger: erp2025.pegawai_all.kd_finger -> master_karyawans.finger_id\nRange: 2026-04-26 s/d 2026-05-21\n\nProcessed: 180\nMatched karyawan: 178\nCreated: 0\nUpdated: 0\nUnchanged: 178\nChanged pending: 0\nChanged locked: 0\nSkip missing finger: 0\nSkip missing karyawan: 2\nSkip invalid date: 0\nSkip existing: 0\nSkip locked: 0\nSubmitted: 0\nSkip auto submit: 0\nFailed auto submit: 0\nFailed: 0\n\nSample error:\n- kd_finger 3rd party tidak ditemukan di AHSP (master_karyawans.finger_id): 10103\n- kd_finger 3rd party tidak ditemukan di AHSP (master_karyawans.finger_id): 10103",
    "finished_at": "2026-05-21 11:51:59"
}