Menetapkan anggota absensi: penambahan massal dan pengelolaan presisi
Ikhtisar
Latar belakang
Organisasi terus berubah. Karyawan bergabung, keluar, berganti peran, atau pindah departemen. Setiap perubahan mengharuskan HR atau Admin memperbarui anggota grup absensi satu per satu di Admin Console DingTalk. Karyawan baru harus ditambahkan ke grup absensi, karyawan yang keluar harus dihapus, dan karyawan yang dimutasi harus dipindahkan ke grup absensi lain. Organisasi dengan 1.000 karyawan atau lebih dapat mengalami puluhan hingga ratusan perubahan setiap bulan. Pembaruan manual memakan banyak waktu dan tenaga. Selain itu, proses manual rentan terlewat dan salah, sehingga menimbulkan kesalahan absen dan data absensi yang tidak akurat.Manfaat utama
Solusi ini mengotomatiskan seluruh siklus hidup anggota grup absensi. Penambahan massal, kueri, pembaruan, dan penghapusan yang semula manual diubah menjadi operasi standar berbasis API. Hasilnya, operasional sistem HR menjadi lebih efisien dan data tetap konsisten.- Pengelolaan anggota massal secara otomatis: Tambahkan, kueri, perbarui, dan hapus anggota melalui API tanpa intervensi manual.
- Pemilihan API yang tepat: Pilih API kueri terbaik untuk anggota individu, departemen, atau campuran guna mendapatkan data yang lengkap dan akurat.
- Verifikasi real-time: Periksa apakah pengguna termasuk dalam grup absensi tertentu, lalu verifikasi hasil segera setelah setiap pembaruan agar data tetap konsisten.
- Data lintas sistem yang terpadu: Sinkronkan data anggota grup absensi secara real-time antara sistem HR, sistem OA, dan DingTalk untuk menghilangkan silo data.
Kasus penggunaan
Solusi ini cocok untuk skenario bisnis umum berikut:- Orientasi karyawan baru: Setelah HR memasukkan data karyawan baru ke sistem HR, tambahkan karyawan tersebut ke grup absensi departemen terkait secara otomatis.
- Karyawan keluar: Setelah persetujuan pengunduran diri di OA disetujui, hapus karyawan dari semua grup absensi secara otomatis.
- Mutasi peran: Saat karyawan dimutasi, hapus karyawan dari grup absensi asal dan tambahkan ke grup absensi departemen baru secara otomatis.
- Penyesuaian anggota secara massal: Setelah Struktur Organisasi berubah, perbarui daftar anggota beberapa grup absensi secara massal.
Skenario bisnis umum
Skenario 1: Menambahkan karyawan baru ke grup absensi secara otomatis
Kendala
Dalam proses tradisional, HR harus masuk ke Admin Console DingTalk pada hari pertama setiap karyawan baru, mencari grup absensi departemen terkait, lalu menambahkan setiap karyawan baru secara manual. Jika 5 hingga 10 karyawan bergabung setiap hari, HR harus mengulang tugas ini berkali-kali. Karyawan sering terlewat atau dimasukkan ke grup yang salah, sehingga karyawan baru tidak dapat absen sebagaimana mestinya.Nilai
-
Alur otomatis
Alur otomatis berjalan dalam lima langkah:
- HR memasukkan data Karyawan baru (nama, Departemen, jabatan).
- Cocokkan grup absensi target berdasarkan ID departemen karyawan, lalu cari groupKey-nya.
- Panggil API batch-add-employees untuk menambahkan userId karyawan baru ke grup absensi.
- Panggil API query-members-by-id untuk memverifikasi bahwa karyawan berhasil ditambahkan.
- Izin absen berlaku pada hari yang sama dan pencatatan absensi dimulai.
-
Keunggulan utama
- Pemicu sepenuhnya otomatis: Setelah HR memasukkan data karyawan baru, sistem HR memanggil API untuk menambahkan karyawan ke grup absensi. Tidak perlu tindakan manual.
- Pencocokan presisi: Sistem mencocokkan grup absensi dengan departemen karyawan secara otomatis sehingga mencegah kesalahan pemilihan.
- Langsung berlaku: Sistem memverifikasi hasil segera setelah penambahan sehingga karyawan baru dapat absen pada hari pertama.
- Jejak audit: Setiap tindakan mencatat operator, stempel waktu, dan ID grup absensi untuk memenuhi persyaratan kepatuhan.
Skenario 2: Menghapus karyawan yang keluar dari grup absensi secara otomatis
Kendala
Saat karyawan keluar, HR harus menghapus karyawan tersebut secara manual dari setiap grup absensi terkait. Jika karyawan termasuk dalam beberapa grup absensi (misalnya, departemen utama dan tim proyek), penghapusan manual mudah terlewat. Karyawan yang sudah keluar mungkin masih dapat absen, data absensi menjadi tidak akurat, dan perhitungan penggajian bisa keliru.Nilai
-
Alur otomatis
Alur otomatis berjalan dalam lima langkah:
- Permintaan pengunduran diri di Persetujuan OA disetujui, lalu sistem menangkap peristiwa tersebut untuk memicu Otomatisasi.
- Panggil API queries-a-user-attendance-group untuk mendapatkan ID semua grup absensi tempat Karyawan terdaftar.
- Lakukan iterasi pada grup-grup tersebut dan panggil API batch-delete-employees untuk menghapus Karyawan secara massal.
- Panggil API query-members-by-id untuk memverifikasi satu per satu bahwa Karyawan telah dihapus dari setiap grup absensi.
- Izin absen Karyawan dicabut dan pencatatan absensi dihentikan.
-
Keunggulan utama
- Pemicu sepenuhnya otomatis: Setelah persetujuan pengunduran diri di OA disetujui, penghapusan berjalan otomatis tanpa intervensi manual.
- Cakupan menyeluruh: Kueri dan hapus karyawan dari semua grup absensi dalam satu kali proses untuk menghindari kelalaian.
- Langsung berlaku: Sistem memverifikasi hasil segera setelah penghapusan sehingga karyawan yang keluar tidak dapat lagi absen.
- Log audit lengkap: Setiap penghapusan mencatat informasi terperinci untuk memenuhi persyaratan audit kepatuhan dan keterlacakan.
Panduan implementasi
Arsitektur teknis
Solusi ini dibangun di atas Server API DingTalk Open Platform. Komponen teknis utamanya meliputi:- Lapisan autentikasi: Dapatkan
access_tokenmenggunakanClient IDdanClient Secretuntuk mengamankan panggilan API. - Lapisan pengelolaan anggota: Menyediakan kemampuan API lengkap untuk menambahkan, mengueri, memperbarui, dan menghapus anggota grup absensi secara massal.
- Lapisan perutean cerdas: Memilih API kueri terbaik berdasarkan tipe anggota (individu, departemen, atau campuran) untuk mendapatkan data lengkap.
- Lapisan penanganan error: Sistem kode error yang lengkap dan mekanisme coba-lagi membantu Anda menemukan dan menyelesaikan masalah dengan cepat.
Prasyarat
Sebelum memulai, pastikan kondisi berikut terpenuhi:- Penyiapan aplikasi: Buat dan konfigurasikan Aplikasi internal. Untuk detailnya, lihat Membuat dan mengonfigurasi aplikasi.
-
Izin: Anda memiliki izin Admin Organisasi atau Sub Admin DingTalk, dan telah mengajukan izin API berikut:
qyapi_attendance_group_manage(izin pengelolaan grup absensi)qyapi_attendance_group_read(izin baca grup absensi)
- Lingkungan pengembangan: Lingkungan pengembangan Java (JDK 1.6 atau lebih baru) dan alat build Maven sudah terpasang.
- SDK: Unduh SDK Sisi server DingTalk. Untuk detailnya, lihat Unduh SDK Sisi server. SDK mendukung berbagai bahasa, termasuk Java, Python, dan Go.
Implementasi kode
Langkah 1: Dapatkan Kredensial aplikasi, termasuk client ID dan Client Secret. Langkah 2: Ajukan izin APIqyapi_attendance_group_manage dan qyapi_attendance_group_read.
Langkah 3: Dapatkan Kredensial akses. Untuk detailnya, lihat Mendapatkan access_token Aplikasi internal. Saat Anda memanggil API, access token digunakan untuk mengautentikasi identitas pemanggil.
Langkah 4: Panggil API absensi:
- Panggil Server API Menambahkan anggota absensi secara massal untuk menambahkan anggota absensi ke grup absensi.
- Panggil Server API Mendapatkan grup absensi pengguna untuk mendapatkan informasi grup absensi tempat pengguna terdaftar.
-
Dapatkan informasi anggota absensi untuk grup absensi:
- Panggil Server API Mendapatkan ID pengguna anggota absensi untuk mendapatkan ID pengguna anggota absensi.
- Panggil Server API Mendapatkan anggota absensi untuk mendapatkan informasi anggota absensi.
- Panggil Server API Mengueri daftar anggota absensi untuk mendapatkan daftar anggota absensi.
- Panggil Server API Memeriksa apakah pengguna ada di grup absensi untuk memeriksa apakah departemen atau karyawan termasuk dalam grup absensi.
- Panggil Server API Memperbarui anggota absensi untuk memperbarui anggota absensi suatu grup absensi.
- Panggil Server API Menghapus anggota absensi secara massal untuk menghapus anggota absensi.
Langkah implementasi
Langkah 1: Dapatkan kredensial aplikasi
- Masuk ke DingTalk Developer Console.
- Pilih aplikasi target untuk membuka halaman detailnya.
- Klik Informasi Dasar > Kredensial dan Informasi Dasar.
- Catat
Client IDdanClient Secretaplikasi.
Catatan
Jaga kerahasiaanClient Secret dan jangan pernah membagikannya kepada pihak ketiga. Simpan di variabel lingkungan atau sistem manajemen kunci, bukan di-hardcode.
Langkah 2: Tambahkan izin API
- Di halaman detail aplikasi, klik Kelola izin.
-
Masukkan pengenal izin berikut di kotak pencarian izin, lalu ajukan izin tersebut:
qyapi_attendance_group_manage(izin pengelolaan grup absensi): Membuat, memperbarui, dan menghapus grup absensi.qyapi_attendance_group_read(izin kueri grup absensi): Mengueri ringkasan dan detail grup absensi.
Skenario bisnis yang berbeda mungkin memerlukan kombinasi izin yang berbeda. Ajukan izin sesuai kebutuhan aktual Anda. Misalnya, skenario impor massal juga memerlukan izin untuk operasi pengguna secara massal.
Langkah 3: Dapatkan kredensial akses (access_token)
Gunakan Client ID dan Client Secret dari Langkah 1 untuk mendapatkan Kredensial akses. Untuk detailnya, lihat Mendapatkan access_token Aplikasi internal.- Caching:
access_tokenberlaku selama 2 jam. Simpan di memori atau Redis, lalu muat ulang 5 menit sebelumnya masa berlakunya habis. - Kontrol konkurensi: Cegah konflik akibat beberapa thread memuat ulang token secara bersamaan. Gunakan distributed lock.
- Coba lagi saat error: Coba lagi secara otomatis saat jaringan tidak stabil, maksimal 3 kali, dengan interval yang meningkat (1s → 2s → 4s).
Langkah 4: Panggil API inti
Untuk alur kerja pengelolaan grup absensi, lihat Mengonfigurasi aturan absensi: membuat grup absensi secara massal dan menyesuaikannya secara dinamis.
-
Tambahkan anggota absensi secara massal: Panggil Server API Menambahkan anggota absensi secara massal untuk menambahkan anggota absensi ke grup absensi.
-
Dapatkan grup absensi pengguna: Panggil Server API Mendapatkan grup absensi pengguna untuk mendapatkan informasi grup absensi tempat pengguna terdaftar.
-
Dapatkan informasi anggota absensi untuk grup absensi
Perbedaan utama ketiga API kueri anggota berikut terlihat saat grup absensi menyertakan departemen sebagai anggota absensi.
Di Admin Console, buka Absensi > Pengelolaan Grup Absensi, lalu edit grup absensi. Bidang anggota absensi dapat berisi seluruh Departemen sekaligus Pengguna individu secara bersamaan. Tersedia juga bidang terpisah untuk anggota non-absensi.
Catatan: ✅ berarti data dapat diperoleh. ❎ berarti data tidak dapat diperoleh.
-
Dapatkan ID pengguna anggota absensi: Panggil Server API Mendapatkan ID pengguna anggota absensi untuk mendapatkan ID pengguna anggota absensi.
-
Dapatkan informasi anggota absensi: Panggil Server API Mendapatkan anggota absensi untuk mendapatkan informasi anggota absensi.
-
Kueri daftar anggota absensi (dengan paginasi): Panggil Server API Mengueri daftar anggota absensi untuk mendapatkan daftar anggota absensi.
-
Dapatkan ID pengguna anggota absensi: Panggil Server API Mendapatkan ID pengguna anggota absensi untuk mendapatkan ID pengguna anggota absensi.
-
Periksa apakah pengguna ada di grup absensi: Panggil Server API Memeriksa apakah pengguna ada di grup absensi untuk memastikan apakah karyawan termasuk dalam grup absensi tertentu.
-
Perbarui anggota absensi: Panggil Server API Memperbarui anggota absensi untuk menyesuaikan daftar anggota grup absensi (menambahkan atau menghapus karyawan atau departemen).
-
Hapus anggota absensi secara massal: Panggil Server API Menghapus anggota absensi secara massal untuk menghapus karyawan yang keluar atau dimutasi dari grup absensi.
- ✅ Semua panggilan API mengembalikan kode status berhasil (errcode=0).
- ✅ Setelah setiap tindakan penambahan atau penghapusan, panggil API verifikasi untuk mengonfirmasi hasilnya.
- ✅ Log error lengkap untuk penelusuran masalah.
- ✅ Data anggota grup absensi di sistem HR dan DingTalk dibandingkan secara berkala dan tetap konsisten.
FAQ
-
T1: Apa perbedaan ketiga API kueri anggota?
J: Setiap API sesuai untuk skenario tipe anggota yang berbeda:
- Mendapatkan ID pengguna anggota absensi: Hanya mengembalikan daftar ID pengguna. Gunakan API ini jika Anda hanya perlu memeriksa keberadaan anggota di grup absensi.
- Mendapatkan anggota absensi: Mengembalikan informasi anggota terperinci (nama, departemen, dan lainnya). Gunakan API ini jika Anda perlu menampilkan detail anggota.
- Mengueri daftar anggota absensi: Mendukung kueri dengan paginasi. Gunakan API ini untuk mengambil anggota secara bertahap jika grup absensi memiliki banyak anggota.
-
T2: Bagaimana cara menangani kegagalan sebagian saat menambahkan anggota secara massal?
J: API penambahan massal menggunakan strategi “best effort” dan mengembalikan anggota yang berhasil dan gagal secara terpisah. Ikuti langkah berikut:
- Uraikan respons untuk mengambil ID pengguna anggota yang gagal beserta alasan error-nya.
- Catat kegagalan dan analisis penyebabnya (misalnya, pengguna tidak ada atau sudah terdaftar di grup absensi).
- Coba lagi untuk error yang dapat dipulihkan (misalnya, pengguna yang baru dibuat belum tersinkronisasi).
- Lewati dan catat error yang tidak dapat dipulihkan (misalnya, pengguna sudah keluar dari organisasi).
-
T3: Bagaimana cara memastikan karyawan yang keluar terhapus sepenuhnya?
J: Ikuti langkah berikut untuk memastikan penghapusan tuntas:
- Setelah persetujuan pengunduran diri di OA disetujui, panggil API Mendapatkan grup absensi pengguna untuk mendapatkan ID semua grup absensi tempat karyawan terdaftar.
- Lakukan iterasi pada semua grup absensi dan panggil API Menghapus anggota absensi secara massal untuk menghapus karyawan.
- Panggil API Memeriksa apakah pengguna ada di grup absensi untuk memastikan karyawan telah dihapus dari semua grup absensi.
- Catat tindakan tersebut, termasuk daftar ID grup absensi, waktu tindakan, dan operatornya.