# Modul Rekap Absensi

Modul ini menangani rekapitulasi absensi pengguna, termasuk kehadiran, sakit, izin, tanpa keterangan, dan cuti.

## Daftar Isi
- [Endpoint API](#endpoint-api)
- [Mendapatkan Rekap Absensi](#mendapatkan-rekap-absensi)
- [Integrasi Mobile](#integrasi-mobile)

## Endpoint API

| Method | Endpoint | Deskripsi |
|--------|----------|-----------|
| GET | `/api/attendance/summary` | Mendapatkan rekap absensi bulanan |

## Mendapatkan Rekap Absensi

Endpoint ini digunakan untuk mendapatkan rekap absensi pengguna dalam satu bulan.

### Request
```http
GET /api/attendance/summary?month={month}&year={year}
Authorization: Bearer {token}
```

### Response
```json
{
  "summary": {
    "total_days": "int",
    "present": "int",
    "sick": "int",
    "leave": "int",
    "absent": "int",
    "permit": "int"
  },
  "daily_records": [
    {
      "date": "date",
      "status": "present|sick|leave|absent|permit",
      "check_in": "time|null",
      "check_out": "time|null",
      "activity_filled": "boolean"
    }
  ]
}
```

### Query Parameters
- `month`: Bulan untuk rekap (format: MM)
- `year`: Tahun untuk rekap (format: YYYY)

### Deskripsi Field
- `summary.total_days`: Jumlah hari dalam bulan tersebut
- `summary.present`: Jumlah hari hadir
- `summary.sick`: Jumlah hari sakit
- `summary.leave`: Jumlah hari cuti
- `summary.absent`: Jumlah hari tanpa keterangan
- `summary.permit`: Jumlah hari izin
- `daily_records`: Array catatan harian absensi
  - `date`: Tanggal
  - `status`: Status kehadiran
  - `check_in`: Waktu check-in
  - `check_out`: Waktu check-out
  - `activity_filled`: Status apakah aktivitas sudah diisi

## Integrasi Mobile

### Tampilan Rekap
1. Aplikasi mobile menampilkan ringkasan absensi dalam bentuk grafik atau tabel
2. Tampilkan jumlah hari untuk setiap kategori (hadir, sakit, izin, dll.)
3. Tampilkan daftar harian dengan status dan informasi aktivitas

### Pemilihan Tanggal
- Tampilkan kontrol untuk memilih bulan dan tahun yang ingin dilihat
- Gunakan picker atau dropdown untuk memudahkan pemilihan
- Tampilkan data sesuai dengan bulan dan tahun yang dipilih

### Status Aktivitas
- Tandai hari mana yang sudah mengisi aktivitas dan mana yang belum
- Berikan visualisasi yang jelas untuk membedakan status
- Tambahkan fitur untuk melihat detail aktivitas harian

### Filter dan Sorting
- Tambahkan fitur filter berdasarkan status kehadiran
- Tambahkan fitur sorting berdasarkan tanggal
- Tampilkan hanya hari-hari yang relevan sesuai filter