Langsung ke konten utama

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:
    1. Sistem HR mencatat karyawan baru.
    2. Sistem menemukan grup absensi yang sesuai secara otomatis berdasarkan departemen karyawan.
    3. Sistem menambahkan anggota baru secara massal melalui API.
    4. Sistem memverifikasi dan mengonfirmasi hasilnya secara real time.
    5. 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 groupKey grup 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, userId karyawan, 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:
    1. Pemicu Persetujuan OA: Saat persetujuan untuk penggabungan atau pemecahan departemen maupun mutasi personel disetujui, sistem secara otomatis menangkap peristiwa perubahan tersebut.
    2. Identifikasi grup absensi yang terdampak: Sistem mengueri semua grup absensi terkait secara otomatis berdasarkan ID departemen yang berubah.
    3. Pembaruan massal melalui API: Sistem memanggil API pembaruan grup absensi DingTalk untuk mengubah daftar anggota dan konfigurasi shift secara massal.
    4. Validasi data real time: Segera setelah pembaruan, sistem memanggil API kueri untuk memverifikasi konsistensi data di semua grup absensi.
    5. 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 ID dan Client Secret untuk mendapatkan access_token dan 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.
Versi API: Server API memiliki versi baru dan versi lama. Utamakan versi baru untuk performa dan dukungan fitur yang lebih baik.

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:
  1. Panggil Server API Buat grup absensi untuk mendapatkan id grup 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.
  1. Dapatkan informasi grup absensi.
  2. Panggil Server API Perbarui grup absensi dengan id grup absensi untuk mengubah nama grup absensi, shift, dan informasi lainnya.
  3. Panggil Server API Hapus grup absensi dengan groupKey grup absensi untuk menghapus grup absensi.

Langkah implementasi

Langkah 1: Dapatkan kredensial aplikasi

  1. Masuk ke Konsol Developer DingTalk.
  2. Pilih aplikasi target untuk membuka halaman detail aplikasi.
  3. Klik Informasi Dasar > Kredensial dan Informasi Dasar.
  4. Catat Client ID dan Client Secret aplikasi.

Catatan

Simpan Client 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

  1. Di halaman detail aplikasi, klik Kelola izin.
  2. 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.
Praktik terbaik:
  • Strategi caching: access_token berlaku 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.
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.
Deskripsi API: Panggil Server API Buat grup absensi untuk mendapatkan id grup absensi.

Dapatkan informasi grup absensi

  • Dapatkan informasi semua grup absensi di organisasi
    1. Dapatkan ringkasan grup absensi secara massal: Panggil Server API Dapatkan ringkasan grup absensi secara massal untuk mendapatkan ringkasan semua grup absensi di organisasi.
    2. Dapatkan detail grup absensi secara massal: Panggil Server API Dapatkan detail grup absensi secara massal untuk mendapatkan detail semua grup absensi di organisasi.
    3. Cari ringkasan grup absensi: Panggil Server API Cari ringkasan grup absensi untuk menjalankan kueri fuzzy grup absensi berdasarkan nama.
  • Dapatkan informasi satu grup absensi
    1. Dapatkan detail satu grup absensi: Panggil Server API Dapatkan detail grup absensi dengan id grup absensi untuk mendapatkan detail satu grup absensi.
    2. Konversi groupId ke groupKey: Panggil Server API Konversi groupId ke groupKey dengan id grup absensi untuk mendapatkan groupKey grup absensi.
    3. Kueri informasi grup absensi berdasarkan groupKey: Panggil Server API Kueri informasi grup absensi berdasarkan groupKey dengan groupKey grup absensi untuk mendapatkan informasi grup absensi.

Perbarui grup absensi

Panggil Server API Perbarui grup absensi dengan id grup absensi untuk mengubah nama grup absensi, shift, dan informasi lainnya.

Hapus grup absensi

Panggil Server API Hapus grup absensi dengan groupKey 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: id adalah identifier numerik grup absensi, sedangkan groupKey adalah identifier berupa string. Beberapa API, seperti Hapus grup absensi, memerlukan groupKey. 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 id grup absensi. Field yang tidak dikirim tetap mempertahankan nilai aslinya.