# Story 3.3: Payroll Cycle Read API

key: 3-3-payroll-cycle-read-api
status: drafted
phase: backend-planning
note: Non-implementasi — kontrak read-only periode payroll.

## Ringkasan
Endpoint read-only untuk membaca daftar siklus payroll guna referensi admin & proses ekspor.

## Scope Backend
- Read list: cycles dengan field inti { cycleId, periodStart, periodEnd, status, exportStatus }
- Query params: `page`, `pageSize`, `status`, `period`
- Sorting: disepakati saat kontrak (opsional)

## Acceptance Gate
- Struktur periode payroll disetujui
- Konsistensi relasi data diverifikasi

## Kontrak (Outline)
- Route: GET /api/payroll/cycles
- Response: 200
```
{ "page":1, "pageSize":20, "total":2, "items":[{"cycleId":"pc-2025-11","periodStart":"2025-11-01","periodEnd":"2025-11-30","status":"open","exportStatus":"not-started"}] }
```