flowchart TD
Mulai([Mulai / Alat Dinyalakan]) --> Init[Inisialisasi Sistem & Koneksi WiFi]
Init --> Standby[Layar Utama / Standby
SCR_MAIN]
%% Dua jalur utama saat di layar Standby
Standby -->|Tempelkan Jari| BacaJari[Sensor Membaca Sidik Jari]
Standby -->|Sentuh Layar| Menu[Layar Daftar Menu
SCR_MENU_LIST]
%% Alur Validasi Sidik Jari (Akses Masuk)
BacaJari --> Validasi{Cek ID Jari
Aktif & Terdaftar?}
Validasi -->|Benar| AksesBuka[Pintu Terbuka]
Validasi -->|Salah| AksesTolak[Tampilkan Layar Akses Ditolak
Buzzer Bunyi Gagal]
AksesTolak --> Standby
AksesBuka --> Sinkronisasi[Kirim Laporan Absensi ke Server
Sync Task]
Sinkronisasi --> StatusKoneksi{Apakah Koneksi
Internet Ada?}
StatusKoneksi -->|Online| QRReport[Tampilkan Layar QR Laporan
SCR_QR_REPORT]
StatusKoneksi -->|Offline| FormOffline[Tampilkan Formulir Aktivitas Offline
SCR_ACTIVITY_FORM]
QRReport --> SelesaiAbsen([Selesai])
FormOffline --> SimpanOffline[Simpan Log di Memori Alat
NVS]
SimpanOffline --> SelesaiAbsen
SelesaiAbsen -->|Timeout/Tutup Pintu| Standby
%% Alur Navigasi Menu
Menu --> PilihDaftar[Pilih: Registrasi Baru]
Menu --> PilihHelpdesk[Pilih: Bantuan / Helpdesk]
Menu --> PilihDarurat[Pilih: Keadaan Darurat]
%% Alur Bantuan
PilihHelpdesk --> LayarHelpdesk[Tampilkan Info Bantuan
SCR_HELPDESK]
LayarHelpdesk -->|Kembali| Menu
%% Alur Keadaan Darurat
PilihDarurat --> LayarDarurat[Tampilkan Peringatan Darurat
SCR_EMERGENCY]
LayarDarurat --> InputDarurat[Input Nomor HP/PIN Darurat
SCR_EMERGENCY_HP]
InputDarurat --> CekDarurat{Verifikasi PIN/HP
Darurat}
CekDarurat -->|Benar| AksesBuka
CekDarurat -->|Salah| AksesTolak
%% Alur Pendaftaran Baru (Enrollment)
PilihDaftar --> MenuDaftar[Layar Menu Pendaftaran
SCR_REGISTER_MENU]
MenuDaftar --> InputData[Ketik Keyboard Data Diri:
Nama, NIK, No HP, PIN]
InputData --> AmbilFoto[Layar QR Code Untuk Foto
SCR_QR_REG_FOTO]
AmbilFoto --> DaftarJari[Layar Pendaftaran Sidik Jari
SCR_REG_FINGER]
DaftarJari --> RekamJari[Tempel Jari 2x ke Sensor]
RekamJari --> CekRekam{Perekaman
Berhasil?}
CekRekam -->|Gagal| DaftarJari
CekRekam -->|Sukses| KirimData[Kirim Data Registrasi ke Server]
KirimData --> SelesaiDaftar([Selesai Pendaftaran])
SelesaiDaftar --> Standby
%% Tambahan Kondisi Akun
Validasi -->|Akun Diblokir| AkunMati[Layar Akun Dinonaktifkan
SCR_ACCESS_DEACTIVATED]
AkunMati --> Standby