71 lines
3.6 KiB
Markdown
71 lines
3.6 KiB
Markdown
# Changelog
|
|
|
|
Semua perubahan penting pada proyek Aplikasi Absensi Akademik didokumentasikan dalam file ini.
|
|
|
|
## [Unreleased] - Versi Terbaru (Redesign & Backend Integration)
|
|
|
|
Perubahan besar-besaran dilakukan pada arsitektur aplikasi, beralih dari aplikasi *single-screen* sederhana menjadi aplikasi manajemen akademik yang komprehensif dengan autentikasi dan validasi keamanan.
|
|
|
|
### ✨ Fitur Baru (Added)
|
|
- **Sistem Autentikasi**:
|
|
- Menambahkan layar **Login** dan **Register**.
|
|
- Integrasi **JWT Authentication** (penyimpanan token via `SharedPreferences`).
|
|
- Manajemen sesi pengguna (Auto-login jika token tersimpan).
|
|
- **Manajemen Jadwal & Mata Kuliah**:
|
|
- Menambahkan fitur pengambilan data **Jadwal Kuliah** hari ini dari database.
|
|
- Dropdown pemilihan mata kuliah saat melakukan absensi.
|
|
- **Validasi Keamanan Tingkat Lanjut**:
|
|
- **Geofencing**: Validasi lokasi dalam radius 500m dari koordinat kampus.
|
|
- **Anti-Fake GPS**: Logika deteksi aplikasi *Mock Location* untuk mencegah kecurangan.
|
|
- **Face Detection**: Integrasi **CameraX + ML Kit** (tersirat dalam logika kamera baru) untuk mewajibkan deteksi wajah saat status "HADIR".
|
|
- **Fitur Kamera Kustom**:
|
|
- Mengganti intent kamera bawaan (`MediaStore`) dengan **CameraX** tertanam dalam UI.
|
|
- Fitur overlay kamera untuk panduan posisi wajah/dokumen.
|
|
- Dukungan kamera depan (selfie) dan belakang (dokumen).
|
|
- **Riwayat & Profil**:
|
|
- Menambahkan tab **Riwayat Absensi** untuk melihat log kehadiran dan bukti foto.
|
|
- Menambahkan tab **Profil** yang menampilkan data mahasiswa dan fitur Logout.
|
|
- **Multi-Status Absensi**:
|
|
- Dukungan untuk status **HADIR**, **SAKIT**, dan **IZIN**.
|
|
- Logika validasi berbeda untuk setiap status (Sakit/Izin tidak butuh radius lokasi).
|
|
|
|
### 🎨 Antarmuka & UX (Changed)
|
|
- **UI Overhaul (Material3)**:
|
|
- Redesign total menggunakan **Jetpack Compose Material3**.
|
|
- Penerapan tema identitas kampus (**Gold & Maroon**).
|
|
- Penggunaan komponen UI modern: `Card`, `NavigationBar` (Bottom Nav), `Gradient Button`.
|
|
- **Navigasi**:
|
|
- Implementasi **Bottom Navigation Bar** dengan 4 menu utama (Absensi, Kelas, Riwayat, Profil).
|
|
- Transisi antar layar (Login <-> Main <-> Register).
|
|
- **Feedback User**:
|
|
- Loading indicator saat proses API berjalan.
|
|
- Dialog error dan sukses yang lebih informatif dibandingkan `Toast` sederhana.
|
|
|
|
### ⚙️ Teknis & Backend (Changed)
|
|
- **Migrasi API**:
|
|
- **Sebelumnya**: Mengirim data hardcoded langsung ke Webhook N8N via `HttpURLConnection`.
|
|
- **Sekarang**: Berkomunikasi dengan **Backend Python Flask** (`/api/auth`, `/api/absensi`, `/api/jadwal`). Backend yang kemudian meneruskan data ke N8N.
|
|
- **Struktur Kode**:
|
|
- Refactoring dari *Single Activity Monolith* menjadi struktur modular.
|
|
- Pemisahan logic ke dalam:
|
|
- `AppConstants` (Konfigurasi URL & Koordinat).
|
|
- `UserPreferences` (Manajemen sesi lokal).
|
|
- `Data Classes` (Mahasiswa, Jadwal, Riwayat).
|
|
- Helper functions (Bitmap Converter, Distance Calculation).
|
|
|
|
### 🔥 Dihapus (Removed)
|
|
- Menghapus pengiriman data hardcoded (NPM "12345") pada fungsi `kirimKeN8n`.
|
|
- Menghapus penggunaan `MediaStore.ACTION_IMAGE_CAPTURE` (Intent kamera eksternal).
|
|
- Menghapus tampilan *single-screen* sederhana tanpa navigasi.
|
|
|
|
---
|
|
|
|
## [Legacy] - Versi Awal (Sebelum Redesign)
|
|
|
|
Versi purwarupa (prototype) untuk pengujian fungsionalitas dasar.
|
|
|
|
### Fitur
|
|
- Pengambilan titik koordinat GPS sederhana (`FusedLocationProvider`).
|
|
- Pengambilan foto menggunakan aplikasi kamera bawaan HP (`Intent`).
|
|
- Pengiriman data dummy langsung ke Webhook N8N.
|
|
- Tampilan UI dasar menggunakan `Column` dan `Button` standar. |