Konfigurasikan aturan absensi: buat grup absensi secara massal dan sesuaikan secara dinamis
Ringkasan
Solusi ini mengotomatiskan pengelolaan grup absensi secara menyeluruh. Solusi ini menggunakan API pengelolaan grup absensi di DingTalk Open Platform untuk mengintegrasikan platform bisnis seperti sistem HR dan OA dengan Absensi DingTalk.Latar belakang
Organisasi menghadapi tantangan berikut dalam pengelolaan absensi:- Aturan absensi yang kompleks: Absensi shift tetap, absensi berbasis shift, jam kerja fleksibel, dan mode lainnya berjalan bersamaan. Konfigurasi manual lambat dan rawan kesalahan.
- Perubahan personel yang sering: Karyawan baru, karyawan keluar, dan mutasi mengharuskan pembaruan anggota grup absensi secara manual. Organisasi dengan lebih dari 1.000 karyawan menghabiskan beberapa jam setiap minggu untuk pekerjaan ini.
- Tidak ada sinkronisasi lintas sistem: Perubahan Struktur Organisasi di sistem HR tidak segera diteruskan ke grup absensi DingTalk sehingga menyebabkan kesalahan data absen.
- Tidak ada operasi massal: Admin tidak dapat membuat atau memperbarui banyak grup absensi sekaligus. Memperbaruinya satu per satu sangat tidak efisien.
Manfaat utama
Solusi ini membantu organisasi mencapai hal berikut:- Pengelolaan grup absensi otomatis: Buat, kueri, perbarui, dan hapus grup absensi melalui API tanpa intervensi manual.
- Asosiasi shift cerdas: Buat shift baru atau kaitkan shift yang sudah ada secara otomatis agar aturan absensi tetap akurat.
- Eksekusi massal yang efisien: Ambil, cari, dan perbarui grup absensi secara massal untuk meningkatkan efisiensi operasional secara signifikan.
- Data lintas sistem yang terpadu: Sinkronkan data HR, OA, dan Absensi DingTalk secara real time untuk menghilangkan silo data.
Kasus penggunaan
Solusi ini sesuai untuk skenario bisnis umum berikut:- Integrasi sistem HR: Sinkronkan aturan absensi dari sistem manajemen HR ke grup absensi DingTalk secara otomatis.
- Merger dan akuisisi: Buat grup absensi dan konfigurasi shift secara massal dengan cepat untuk perusahaan yang baru diakuisisi.
- Integrasi alur kerja OA: Buat atau sesuaikan grup absensi terkait secara otomatis saat proses persetujuan selesai.
- Penyesuaian izin dinamis: Perbarui anggota grup absensi dan izin Admin secara otomatis berdasarkan perubahan departemen.
Skenario bisnis umum
Skenario 1: Sinkronkan grup absensi dari sistem HR (pembuatan dan pengelolaan massal)
Kendala
Pada model tradisional, setelah tim HR merencanakan aturan absensi baru di sistem HR, mereka harus masuk ke Admin Console DingTalk lalu membuat setiap grup absensi, mengonfigurasi shift, dan menambahkan anggota secara manual. Organisasi dengan lebih dari 1.000 karyawan umumnya memiliki 20 hingga 50 grup absensi. Pengaturan manual memakan waktu berjam-jam dan sering menyebabkan shift yang salah atau anggota yang terlewat.Validasi nilai
-
Alur kerja otomatis
Alur otomatisasi berbasis API berjalan dengan langkah berikut:
- Sistem HR mencatat karyawan baru.
- Sistem menemukan grup absensi yang sesuai secara otomatis berdasarkan departemen karyawan.
- Sistem menambahkan anggota baru secara massal melalui API.
- Sistem memverifikasi dan mengonfirmasi hasilnya secara real time.
- Izin absen langsung berlaku.
-
Keunggulan utama
- Pemicu sepenuhnya otomatis: Panggilan API berjalan otomatis setelah tim HR memasukkan karyawan baru di sistem HR. Tidak ada yang perlu masuk ke Admin Console DingTalk atau memulai tindakan secara manual. Input data dan sinkronisasi terjadi bersamaan.
- Pencocokan yang presisi: Sistem mengueri dan mencocokkan
groupKeygrup absensi secara otomatis berdasarkan ID departemen karyawan. Hal ini mencegah kesalahan absen akibat salah memilih grup absensi secara manual. - Langsung berlaku: Setelah API penambahan karyawan massal menambahkan anggota, API kueri anggota berdasarkan ID langsung memverifikasi hasilnya. Karyawan dapat absen segera setelah bergabung dengan grup absensi.
- Jejak audit: Setiap panggilan API mencatat operator, stempel waktu, ID grup absensi,
userIdkaryawan, dan detail lainnya untuk memenuhi persyaratan audit kepatuhan dan keterlacakan.
Skenario 2: Sinkronkan grup absensi secara otomatis setelah perubahan Struktur Organisasi
Kendala
Saat departemen digabung atau dipecah, atau saat karyawan dimutasi, tim HR harus memperbarui daftar anggota dan aturan penjadwalan shift setiap grup absensi yang terdampak secara manual. Restrukturisasi berskala besar dapat melibatkan puluhan grup absensi. Pembaruan manual memakan waktu dan sering melewatkan beberapa grup sehingga menyebabkan kesalahan absen bagi karyawan.Validasi nilai
-
Alur kerja otomatis
Alur otomatisasi berjalan dalam lima langkah:
- Pemicu Persetujuan OA: Saat persetujuan untuk penggabungan atau pemecahan departemen maupun mutasi personel disetujui, sistem secara otomatis menangkap peristiwa perubahan tersebut.
- Identifikasi grup absensi yang terdampak: Sistem mengueri semua grup absensi terkait secara otomatis berdasarkan ID departemen yang berubah.
- Pembaruan massal melalui API: Sistem memanggil API pembaruan grup absensi DingTalk untuk mengubah daftar anggota dan konfigurasi shift secara massal.
- Validasi data real time: Segera setelah pembaruan, sistem memanggil API kueri untuk memverifikasi konsistensi data di semua grup absensi.
- Sinkronisasi selesai: Sinkronisasi grup absensi selesai dan aturan absensi yang diperbarui berlaku tanpa intervensi manual.
-
Keunggulan utama
- Pemicu otomatis: Sistem menangkap peristiwa perubahan dan menjalankan sinkronisasi secara otomatis saat proses Persetujuan OA selesai. Tidak ada yang perlu memulai atau memantaunya. Persetujuan dan sinkronisasi terjadi bersamaan.
- Pemrosesan massal yang presisi: Sistem mengidentifikasi dan memperbarui semua grup absensi yang terdampak sekaligus. Hal ini mencegah kelalaian akibat pencarian manual dan memastikan cakupan 100% atas perubahan organisasi.
- Validasi dan masukan real time: Sistem memanggil API kueri tepat setelah pembaruan untuk memverifikasi konsistensi data dan mengirim peringatan secara otomatis jika terjadi kesalahan. Hal ini memastikan aturan absensi berlaku dengan benar.
- Log audit lengkap: Setiap panggilan API mencatat operator, stempel waktu, dan konten perubahan untuk memenuhi persyaratan audit kepatuhan dan keterlacakan.
Panduan implementasi
Arsitektur teknis
Solusi ini dibangun di atas Server API DingTalk Open Platform. Komponen teknis intinya adalah:- Lapisan autentikasi: Menggunakan
Client IDdanClient Secretuntuk mendapatkanaccess_tokendan mengamankan panggilan API. - Lapisan pengelolaan grup absensi: Menyediakan kemampuan API lengkap untuk membuat, mengueri, memperbarui, dan menghapus grup absensi. Mendukung grup absensi shift tetap dan grup absensi berbasis shift.
- Lapisan pengelolaan shift: Menyediakan kemampuan API untuk membuat dan mengueri shift, yang merupakan sumber daya prasyarat bagi grup absensi.
- Lapisan penanganan error: Menyediakan sistem kode error yang komprehensif untuk membantu Anda menemukan dan menyelesaikan masalah dengan cepat.
Prasyarat
Penuhi ketentuan berikut sebelum mengimplementasikan solusi:- Persiapan aplikasi: Buat dan konfigurasikan Aplikasi internal. Untuk detailnya, lihat Buat dan konfigurasikan aplikasi.
-
Persyaratan izin: Miliki izin Admin Organisasi atau Sub Admin DingTalk, dan ajukan izin API berikut:
qyapi_attendance_group_manage(izin pengelolaan grup absensi)qyapi_attendance_group_read(izin kueri grup absensi)
- Lingkungan pengembangan: Instal lingkungan pengembangan Java (JDK 1.6 atau yang lebih baru) dan build tool Maven.
- Persiapan SDK: Unduh SDK sisi server DingTalk. Untuk detailnya, lihat Unduh SDK sisi server. SDK mendukung Java, Python, Go, dan bahasa lainnya.
Implementasi kode
Langkah 1: Dapatkan informasi kredensial aplikasi, termasuk client ID dan Client Secret. Langkah 2: Ajukan izin API yang terkait dengan absensi. Langkah 3: Dapatkan kredensial akses aplikasi. Lihat Dapatkan access_token Aplikasi internal. Saat Anda memanggil API, access token mengautentikasi identitas pemanggil. Langkah 4: Panggil API absensi:- Panggil Server API Buat grup absensi untuk mendapatkan
idgrup absensi.
Catatan
Contoh dalam dokumen ini menggunakan grup absensi shift tetap. Untuk membuat grup absensi shift tetap, pastikan shift sudah tersedia sebelum Anda memanggil API Buat grup absensi:- Jika belum ada shift, panggil Server API Buat shift untuk mendapatkan ID shift.
- Jika shift sudah ada, panggil Server API Dapatkan ringkasan shift untuk mendapatkan ID shift yang ada.
-
Dapatkan informasi grup absensi.
-
Dapatkan informasi semua grup absensi di organisasi
- Panggil Server API Dapatkan ringkasan grup absensi secara massal untuk mendapatkan ringkasan semua grup absensi di organisasi.
- Panggil Server API Dapatkan detail grup absensi secara massal untuk mendapatkan detail semua grup absensi di organisasi.
- Panggil Server API Cari ringkasan grup absensi untuk menjalankan kueri fuzzy grup absensi berdasarkan nama.
-
Dapatkan informasi satu grup absensi
-
Panggil Server API Dapatkan detail grup absensi dengan
idgrup absensi untuk mendapatkan detail satu grup absensi. -
Dapatkan detail grup absensi berdasarkan
groupKey- Panggil Server API Konversi groupId ke groupKey dengan
idgrup absensi untuk mendapatkangroupKeygrup absensi. - Panggil Server API Kueri informasi grup absensi berdasarkan groupKey dengan
groupKeygrup absensi untuk mendapatkan informasi grup absensi.
- Panggil Server API Konversi groupId ke groupKey dengan
-
Panggil Server API Dapatkan detail grup absensi dengan
-
Dapatkan informasi semua grup absensi di organisasi
-
Panggil Server API Perbarui grup absensi dengan
idgrup absensi untuk mengubah nama grup absensi, shift, dan informasi lainnya. -
Panggil Server API Hapus grup absensi dengan
groupKeygrup absensi untuk menghapus grup absensi.
Langkah implementasi
Langkah 1: Dapatkan kredensial aplikasi
- Masuk ke Konsol Developer DingTalk.
- Pilih aplikasi target untuk membuka halaman detail aplikasi.
- Klik Informasi Dasar > Kredensial dan Informasi Dasar.
- Catat
Client IDdanClient Secretaplikasi.
Catatan
SimpanClient Secret dengan aman 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 identifier izin berikut di kotak pencarian izin, lalu ajukan:
qyapi_attendance_group_manage(izin pengelolaan grup absensi): Digunakan untuk membuat, memperbarui, dan menghapus grup absensi.qyapi_attendance_group_read(izin kueri grup absensi): Digunakan untuk mengueri ringkasan dan detail grup absensi.
Skenario bisnis yang berbeda mungkin memerlukan kombinasi izin yang berbeda. Ajukan sesuai kebutuhan 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 aplikasi. Lihat Dapatkan access_token Aplikasi internal.- Strategi caching:
access_tokenberlaku selama 2 jam. Simpan dalam cache di memori atau Redis, lalu muat ulang secara proaktif sebelum kedaluwarsa, yaitu 5 menit sebelumnya. - Kontrol konkurensi: Cegah beberapa thread memuat ulang token secara bersamaan karena dapat menimbulkan konflik. Gunakan distributed lock.
- Coba ulang saat terjadi error: Coba ulang secara otomatis saat jaringan tidak stabil, maksimal 3 kali, dengan interval yang meningkat (1 dtk → 2 dtk → 4 dtk).
Langkah 4: Panggil API inti
Buat grup absensi
Contoh dalam dokumen ini menggunakan grup absensi shift tetap.
-
Jika belum ada shift, panggil Server API Buat shift untuk mendapatkan ID shift.
-
Jika shift sudah ada, panggil Server API Dapatkan ringkasan shift untuk mendapatkan ID shift yang ada.
id grup absensi.
Dapatkan informasi grup absensi
-
Dapatkan informasi semua grup absensi di organisasi
-
Dapatkan ringkasan grup absensi secara massal: Panggil Server API Dapatkan ringkasan grup absensi secara massal untuk mendapatkan ringkasan semua grup absensi di organisasi.
-
Dapatkan detail grup absensi secara massal: Panggil Server API Dapatkan detail grup absensi secara massal untuk mendapatkan detail semua grup absensi di organisasi.
-
Cari ringkasan grup absensi: Panggil Server API Cari ringkasan grup absensi untuk menjalankan kueri fuzzy grup absensi berdasarkan nama.
-
Dapatkan ringkasan grup absensi secara massal: Panggil Server API Dapatkan ringkasan grup absensi secara massal untuk mendapatkan ringkasan semua grup absensi di organisasi.
-
Dapatkan informasi satu grup absensi
-
Dapatkan detail satu grup absensi: Panggil Server API Dapatkan detail grup absensi dengan
idgrup absensi untuk mendapatkan detail satu grup absensi. -
Konversi groupId ke groupKey: Panggil Server API Konversi groupId ke groupKey dengan
idgrup absensi untuk mendapatkangroupKeygrup absensi. -
Kueri informasi grup absensi berdasarkan groupKey: Panggil Server API Kueri informasi grup absensi berdasarkan groupKey dengan
groupKeygrup absensi untuk mendapatkan informasi grup absensi.
-
Dapatkan detail satu grup absensi: Panggil Server API Dapatkan detail grup absensi dengan
Perbarui grup absensi
Panggil Server API Perbarui grup absensi denganid grup absensi untuk mengubah nama grup absensi, shift, dan informasi lainnya.
Hapus grup absensi
Panggil Server API Hapus grup absensi dengangroupKey grup absensi untuk menghapus grup absensi.
Catatan
- Pastikan grup absensi tidak memiliki karyawan aktif. Panggil API Dapatkan detail grup absensi terlebih dahulu untuk memeriksanya.
- Alihkan item To-Do, formulir persetujuan, dan item lain yang terkait dengan grup absensi ke grup absensi lain.
- Cadangkan data riwayat grup absensi jika diperlukan.
- Beri tahu departemen terkait (IT, HR, Administrasi, dan lainnya) untuk menyelesaikan pembersihan lanjutan.
FAQ
- Q1: Apa yang harus saya lakukan jika muncul error “Shift does not exist” saat membuat grup absensi? J: Grup absensi shift tetap memerlukan shift yang sudah ada. Panggil API Buat shift terlebih dahulu, atau panggil API Dapatkan ringkasan shift untuk mendapatkan ID shift yang ada. Setelah itu, buat grup absensi.
-
Q2: Bagaimana cara mendapatkan informasi semua grup absensi secara massal?
J: Ikuti dua langkah. Pertama, panggil Dapatkan ringkasan grup absensi secara massal untuk mendapatkan informasi singkat (termasuk
id) semua grup absensi. Kemudian, panggil Dapatkan detail grup absensi secara massal sesuai kebutuhan untuk mendapatkan detail lengkapnya. -
Q3: Apa perbedaan antara id dan groupKey grup absensi?
J:
idadalah identifier numerik grup absensi, sedangkangroupKeyadalah identifier berupa string. Beberapa API, seperti Hapus grup absensi, memerlukangroupKey. Gunakan API Konversi groupId ke groupKey untuk mengonversi keduanya. -
Q4: Apakah saya perlu mengirim semua field saat memperbarui grup absensi?
J: Tidak. Kirim hanya field yang ingin diubah beserta
idgrup absensi. Field yang tidak dikirim tetap mempertahankan nilai aslinya.