288 lines
8.1 KiB
Markdown

# 🎓 Data Sampel Mata Kuliah Universitas Bhayangkara Jakarta Raya
## Daftar Mata Kuliah Semester 4 Jurusan Teknik Informatika
### 1. Pemrograman Berorientasi Objek (PBO2024)
```
Kode Mata Kuliah : PBO2024
Nama Mata Kuliah : Pemrograman Berorientasi Objek
Dosen Pengampu : Dr. Imam Riadi
Kredit : 3 SKS
Jadwal : Senin 08:00-09:30
Ruang Kelas : A-101
Semester : 4
Status : Aktif
```
### 2. Pemrograman Mobile (MOBILE2024)
```
Kode Mata Kuliah : MOBILE2024
Nama Mata Kuliah : Pemrograman Mobile
Dosen Pengampu : Prof. Dr. Suhardi
Kredit : 3 SKS
Jadwal : Selasa 10:00-11:30
Ruang Kelas : B-205
Semester : 4
Status : Aktif
```
### 3. Basis Data (BD2024)
```
Kode Mata Kuliah : BD2024
Nama Mata Kuliah : Basis Data
Dosen Pengampu : Dr. Eka Raharjan
Kredit : 3 SKS
Jadwal : Rabu 13:00-14:30
Ruang Kelas : C-301
Semester : 4
Status : Aktif
```
### 4. Pengembangan Web (WEBDEV2024)
```
Kode Mata Kuliah : WEBDEV2024
Nama Mata Kuliah : Pengembangan Web
Dosen Pengampu : Dr. Yusuf Aji Pranoto
Kredit : 3 SKS
Jadwal : Kamis 08:00-09:30
Ruang Kelas : A-103
Semester : 4
Status : Aktif
```
### 5. User Interface Design (UI2024)
```
Kode Mata Kuliah : UI2024
Nama Mata Kuliah : User Interface Design
Dosen Pengampu : Dr. I Made Sukarsa
Kredit : 2 SKS
Jadwal : Jumat 10:00-11:00
Ruang Kelas : D-401
Semester : 4
Status : Aktif
```
---
## 📊 Contoh Data Kehadiran
### Format JSON untuk N8n Webhook
```json
{
"npm": "202310715082",
"nama": "Fazri Abdurrahman",
"courseId": "COURSE_001",
"courseCode": "PBO2024",
"courseName": "Pemrograman Berorientasi Objek",
"latitude": -6.123456,
"longitude": 106.654321,
"timestamp": 1705228530000,
"date": "2025-01-14",
"time": "08:15:30",
"status": "PRESENT",
"foto_base64": "[base64_encoded_image_here]"
}
```
### Format Penyimpanan di SharedPreferences
```json
{
"attendanceId": "202310715082_COURSE_001_2025-01-14_1705228530000",
"npm": "202310715082",
"nama": "Fazri Abdurrahman",
"courseId": "COURSE_001",
"courseCode": "PBO2024",
"courseName": "Pemrograman Berorientasi Objek",
"latitude": -6.123456,
"longitude": 106.654321,
"timestamp": 1705228530000,
"date": "2025-01-14",
"time": "08:15:30",
"status": "PRESENT",
"isValid": true,
"validationMessage": "Lokasi valid, dalam radius area absensi",
"submissionResult": "Success: ✓ Absensi diterima server",
"fotoBase64": "[base64_encoded_image]"
}
```
---
## 📋 Contoh Laporan Kehadiran
### Laporan untuk Mata Kuliah PBO2024 (Data Fiktif)
```
Mata Kuliah : Pemrograman Berorientasi Objek (PBO2024)
Dosen : Dr. Imam Riadi
Periode : Semester 4 (2024-2025)
Statistik Kehadiran:
├── Total Sesi : 14 sesi
├── Hadir : 12 sesi (85.7%)
├── Terlambat : 1 sesi (7.1%)
├── Tidak Hadir : 1 sesi (7.1%)
└── Izin/Sakit : 0 sesi (0%)
Persentase Kehadiran: 92.8% ✅ (Memuaskan - Melewati threshold 80%)
Detail Kehadiran:
┌─────────────────┬────────────┬─────────────┬───────────────┐
│ Tanggal │ Hari │ Waktu │ Status │
├─────────────────┼────────────┼─────────────┼───────────────┤
│ 2025-01-06 │ Senin │ 08:10:45 │ Hadir │
│ 2025-01-13 │ Senin │ 08:15:30 │ Hadir │
│ 2025-01-20 │ Senin │ 08:32:15 │ Terlambat │
│ 2025-01-27 │ Senin │ 09:45:00 │ Tidak Hadir │
│ 2025-02-03 │ Senin │ 08:08:22 │ Hadir │
│ 2025-02-10 │ Senin │ 08:12:10 │ Hadir │
│ 2025-02-17 │ Senin │ 08:05:50 │ Hadir │
│ 2025-02-24 │ Senin │ 08:20:30 │ Hadir │
│ 2025-03-03 │ Senin │ 08:09:15 │ Hadir │
│ 2025-03-10 │ Senin │ 08:14:45 │ Hadir │
│ 2025-03-17 │ Senin │ 08:11:20 │ Hadir │
│ 2025-03-24 │ Senin │ 08:06:40 │ Hadir │
│ 2025-03-31 │ Senin │ 08:19:25 │ Hadir │
│ 2025-04-07 │ Senin │ 08:07:35 │ Hadir │
└─────────────────┴────────────┴─────────────┴───────────────┘
```
---
## 🔐 Contoh Data Mahasiswa
```kotlin
// Data yang disimpan di AttendanceConfig (untuk testing)
const val STUDENT_NPM = "202310715082"
const val STUDENT_NAMA = "Fazri Abdurrahman"
// Di production, data ini bisa diambil dari:
// 1. Shared Preferences
// 2. Local Database (SQLite/Room)
// 3. Secure Server API
// 4. Authentication System
```
---
## 📍 Koordinat Lokasi Absensi
### Koordinat Universitas Bhayangkara Jakarta Raya
```
Campus Utama:
Latitude : -6.123456 (Contoh)
Longitude : 106.654321 (Contoh)
Radius : 100 meter
Lokasi Absensi (Gedung A):
Latitude : -6.123500
Longitude : 106.654400
Radius : ±100 meter dari koordinat
```
**Catatan**: Koordinat yang digunakan dapat disesuaikan dengan lokasi sebenarnya.
---
## 📱 Sample Response dari N8n
### Success Response
```json
{
"statusCode": 200,
"message": "✓ Absensi diterima server",
"data": {
"id": "65a1b2c3d4e5f6g7h8i9",
"npm": "202310715082",
"timestamp": "2025-01-14T08:15:30Z",
"courseCode": "PBO2024",
"status": "RECEIVED",
"googleSheetId": "1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs"
}
}
```
### Error Response
```json
{
"statusCode": 400,
"message": "Lokasi tidak valid - Anda berada di luar area absensi",
"errorCode": "INVALID_LOCATION"
}
```
---
## 🗂️ Struktur Storage SharedPreferences
```
course_attendance_db/
├── courses_list (String - JSON)
│ └── Array of Course objects
├── attendance_list (String - JSON)
│ └── Array of Attendance objects
└── selected_course (String - JSON)
└── Single Course object (last selected)
Total Entries per Course:
- Metadata: 1 entry (course info)
- Attendances: N entries (one per absensi)
- Total: N+1 entries per course
```
---
## 🎯 Testing Checklist
### ✅ Fitur Mata Kuliah
- [ ] Daftar mata kuliah tampil dengan benar
- [ ] Info detail setiap mata kuliah akurat
- [ ] Dapat memilih mata kuliah
- [ ] Pilihan tersimpan untuk session berikutnya
- [ ] 5 mata kuliah sample terlihat
### ✅ Fitur Absensi
- [ ] Dapat memilih mata kuliah sebelum absensi
- [ ] Foto dapat diambil
- [ ] Lokasi terdeteksi dan valid
- [ ] Tombol kirim hanya aktif jika lengkap
- [ ] Data terkirim ke N8n
### ✅ Fitur Kehadiran
- [ ] Data tersimpan di SharedPreferences
- [ ] Dapat melihat riwayat kehadiran
- [ ] Setiap record menampilkan tanggal dan waktu
- [ ] Status kehadiran menampilkan dengan warna tepat
- [ ] Multiple records dapat disimpan
### ✅ Fitur Laporan
- [ ] Laporan kehadiran tampil dengan benar
- [ ] Persentase dihitung dengan akurat
- [ ] Statistik menampilkan dengan visual yang baik
- [ ] Perubahan status tercermin dalam report
- [ ] Report update setelah absensi baru
---
## 📚 Referensi
### Links yang Relevan
- N8n Webhook Test: https://n8n.lab.ubharajaya.ac.id/webhook-test/23c6993d-1792-48fb-ad1c-ffc78a3e6254
- N8n Webhook Prod: https://n8n.lab.ubharajaya.ac.id/webhook/23c6993d-1792-48fb-ad1c-ffc78a3e6254
- Google Sheet: https://docs.google.com/spreadsheets/d/1jH15MfnNgpPGuGeid0hYfY7fFUHCEFbCmg8afTyyLZs
### Documentation
- Dokumentasi Lengkap: `COURSE_ATTENDANCE_FEATURE.md`
- Summary Implementasi: `IMPLEMENTATION_SUMMARY.md`
- Dokumentasi Awal: `DOKUMENTASI.md`
---
**Dibuat**: 14 Januari 2026
**Status**: Active
**Version**: 1.0