{{ toast.text }}

Konfigurasi

Otomatis mengikuti domain tempat halaman ini dibuka.

Token server (.env API_TOKEN) untuk kirim notifikasi. Token pegawai tidak bisa mengirim.

Durasi tarik notifikasi mobile. Berlaku setelah app dibuka ulang atau tombol Cek Ulang di Pengaturan app.

Kirim Notifikasi

Cara upload Excel/CSV
  1. Format file: .xlsx, .xls, atau .csv
  2. Baris pertama adalah header. Wajib ada kolom bernama NUPNIP berisi NUP/NIP pegawai
  3. Kolom lain (nama, unit, dsb) boleh ada โ€” diabaikan
  4. NUP duplikat dibuang otomatis
  5. NUP yang belum terdaftar di Data Pegawai tetap terkirim (dikirim langsung berdasarkan NUP)
Contoh isi file:
NUPNIPNama (opsional)
2211331144DEMO APPS NOTIF
1122334411ALFATHA DHIKI PAHLEFI
{{ allTargetNups.length }} NUP siap dikirim ({{ matchedNups.length }} terdaftar)
{{ unknownNups.length }} NUP belum terdaftar โ€” tetap dikirim via NUP: {{ unknownNups.slice(0, 10).join(', ') }}{{ unknownNups.length > 10 ? '...' : '' }}

Data Pegawai ({{ employees.length }})

Nama Unit/Jabatan NUP Status Token Aksi
{{ emp.nama }}
{{ emp.username || '-' }}
{{ emp.unit_kerja || '-' }}
{{ emp.jabatan || '-' }}
{{ emp.nup }} {{ emp.status_pegawai }}
{{ emp.token }}

Log Notifikasi ({{ notifications.length }})

# Judul / Isi Tujuan Lampiran Waktu Aksi
{{ notif.id }}
{{ notif.title }} Terhapus
{{ notif.body }}
{{ notif.target_summary || (notif.targets_count ? notif.targets_count + ' device' : 'Semua') }} {{ notif.link }} - {{ formatTime(notif.created_at) }}

{{ editingEmployee.id ? 'Edit' : 'Tambah' }} Pegawai

Sesi Login

{{ sessionEmployee && sessionEmployee.nama }} ยท {{ sessionEmployee && sessionEmployee.nup }}

{{ activeSessionCount }} sesi aktif dari {{ sessions.length }}

Memuat sesi...
Belum ada sesi login.
{{ sessionLabel(s) }} {{ s.active ? 'Aktif' : 'Dicabut' }}
{{ s.ip_address || '-' }} ยท dibuat {{ formatTime(s.created_at) }}
{{ s.user_agent || '-' }}
Terakhir dipakai: {{ s.last_used_at ? formatTime(s.last_used_at) : '-' }} ยท dicabut {{ formatTime(s.revoked_at) }}