# Story 3.4: Payroll Export Job Create & Status

key: 3-4-payroll-export-job-create-status
status: drafted
phase: backend-planning
note: Non-implementasi — definisi request, format, status, throttling.

## Ringkasan
Kontrak pembuatan job ekspor payroll dan pembacaan status job.

## Scope Backend
- Create job: { cycleId, format (csv|json), payCodeMapRef }
- Status job: { jobId, status, progress }
- Throttle & logging: disepakati

## Acceptance Gate
- Format ekspor dan pay-code mapping disetujui
- SOP persetujuan dual-control (opsional) dirujuk

## Kontrak (Outline)
- Route: POST /api/payroll/exports
- Request:
```
{ "cycleId":"pc-2025-11", "format":"csv", "payCodeMapRef":"default" }
```
- Response: 202
```
{ "jobId":"je1", "status":"accepted" }
```
- Route: GET /api/payroll/exports/{jobId}
- Response: 200
```
{ "jobId":"je1", "status":"running", "progress":42 }
```