# Admin Payroll Reward System — Brownfield Epic: UI Harmonization & Mock Data Seeding

## Executive Summary
Kita akan menyelaraskan (harmonize) UI modul Admin Payroll Reward System di lingkungan brownfield, agar konsisten dengan Sidebar/TopBar dan DashboardLayout yang sudah ada. Selain itu, kita akan menyediakan mock data representatif (empty/normal/high-activity) untuk memverifikasi UX tanpa bergantung penuh pada backend. Targetnya adalah meningkatkan keterbacaan, konsistensi visual, dan mempercepat siklus QA dengan risiko regresi minimal. Prioritas: tinggi. Horizon: 2 minggu.

## Goals
- Menyatukan gaya visual (warna, tipografi, spacing) komponen payroll-reward agar selaras dengan Sidebar/TopBar dan DashboardLayout.
- Meningkatkan aksesibilitas dan keterbacaan (kontras warna sesuai standar WCAG).
- Menyediakan mock data untuk state umum (empty, normal, high-activity) agar QA bisa menguji end-to-end tanpa backend.
- Menambahkan feature flags untuk rollout aman dan mitigasi regresi.

## Scope
Dalam cakupan:
- Harmonisasi warna dan tema komponen di `src/features/payroll-reward-system` (kartu, badge/status, angka/metrik).
- Mengganti background gradient pada kartu reward menjadi warna solid selaras tone Sidebar (brand gelap/primary-900).
- Penyesuaian warna teks: angka/metrik berkontras tinggi; label/deskripsi lebih soft tapi tetap terbaca.
- Pembungkusan route `/admin/payroll` dengan `src/layouts/DashboardLayout.tsx`, memastikan Sidebar dan TopBar tampil konsisten.
- Penyediaan mock data untuk user aktif (mapping `demo-user-123` → `user.id`) dan skenario variasi (empty/low/high).
- Penambahan feature flags di `src/config/featureFlags.ts` (mis. `enablePayrollUIHarmonization`, `useDemoRewardData`).

Di luar cakupan:
- Perubahan/penyempurnaan login page (ditangani epic/PRD terpisah).
- Integrasi penuh ke backend payroll/komputasi reward.
- Redesign navigasi global di luar kebutuhan harmonisasi.

## User Stories
- Sebagai Admin, saya ingin dashboard reward payroll tampil dengan gaya visual konsisten (warna, spacing, tipografi) agar mudah di-scan dan dipahami.
- Sebagai QA, saya ingin mengaktifkan mock data dan menguji berbagai state (empty/normal/high-activity) tanpa bergantung backend.
- Sebagai Developer, saya ingin feature flags untuk menyalakan/mematikan harmonisasi UI dengan aman saat rollout.
- Sebagai Desainer, saya ingin kontras warna dan tipografi mengikuti standar aksesibilitas sehingga teks dan angka tetap terbaca pada berbagai perangkat.

## Acceptance Criteria
- Konsistensi UI:
  - Semua kartu reward menggunakan background solid (bukan gradient) selaras tone Sidebar.
  - Teks metrik (angka) memiliki kontras minimal 4.5:1 terhadap background; label/deskripsi readable (≥3:1).
  - Spacing/padding antar kartu konsisten; tidak ada overlap/tumpang tindih.
- Integrasi layout:
  - Route `/admin/payroll` dibungkus `DashboardLayout`; Sidebar/TopBar tampil dan tidak mengganggu konten utama.
- Mock data:
  - Flag `useDemoRewardData` ON menampilkan data contoh untuk `user.id` saat login (map ke `demo-user-123`).
  - Tersedia 3 state mock: `empty` (0 reward), `normal` (nilai sedang), `high-activity` (nilai tinggi, beberapa badges).
- Feature flags:
  - `enablePayrollUIHarmonization` dapat ON/OFF tanpa error; saat OFF, UI kembali ke gaya lama secara aman.
  - Tersedia dokumentasi cara toggle dan fallback perilaku saat OFF.
- QA checklist:
  - Visual regression minimal (halaman lain tidak berubah signifikan).
  - Responsif di mobile/tablet/desktop tetap baik.

## Milestones
1) Audit & Design Tokens (Minggu 1, Hari 1–2)
   - Audit komponen di `src/features/payroll-reward-system` dan dependensi di `src/components/dashboard`.
   - Tentukan palet solid selaras Sidebar (brand gelap/primary-900) dan aturan tipografi (heading, label, angka).
2) Implementasi UI Harmonization (Minggu 1, Hari 3–4)
   - Ganti gradient → solid tone pada kartu/badge.
   - Atur warna teks (angka kontras tinggi; label lebih soft).
   - Sesuaikan spacing/padding antar kartu sesuai grid sistem.
3) Integrasi Layout & Flags (Minggu 1, Hari 5)
   - Bungkus `/admin/payroll` dengan `DashboardLayout`.
   - Tambah feature flags di `src/config/featureFlags.ts` (`enablePayrollUIHarmonization`, `useDemoRewardData`).
4) Mock Data Seeding (Minggu 2, Hari 1–2)
   - Buat provider/mock service untuk 3 state (empty/normal/high).
   - Mapping `demo-user-123` → `user.id` dari `AuthContext`.
5) QA & Hardening (Minggu 2, Hari 3–5)
   - Uji responsif, aksesibilitas, dan regression di halaman terkait.
   - Dokumentasi toggle flags dan panduan verifikasi state untuk QA.

## Dependencies
- `src/layouts/DashboardLayout.tsx`, `Sidebar.tsx`, `TopBar.tsx`
- `src/features/payroll-reward-system` (komponen kartu/badge/metrik)
- `tailwind.config.js` (warna/tema), `src/styles/globals.css`
- `src/config/featureFlags.ts` (penambahan flags)
- `src/contexts/AuthContext.tsx` (akses `user.id` untuk mapping mock data)

## Risks & Mitigations
- Regresi visual pada halaman lain akibat perubahan token/global style.
  - Mitigasi: Batasi perubahan pada payroll-reward dan komponen terkait; gunakan flags; lakukan QA regression checklist.
- Kontras warna kurang sesuai di beberapa display.
  - Mitigasi: Ikuti standar WCAG; uji di perangkat/brightness berbeda; sediakan varian palet jika perlu.
- Mock data mengganggu data real saat staging.
  - Mitigasi: Default flags OFF di staging/production; dokumentasi mode demo jelas; gating via env.
- Waktu implementasi melampaui target karena refactor komponen lama.
  - Mitigasi: Prioritaskan surface paling terlihat (dashboard reward); minor legacy dikerjakan iteratif.

## Next Actions
1) Konfirmasi fokus epic dan horizon: “UI harmonization + mock data seeding”, 2 minggu (boleh koreksi).
2) Setujui referensi konteks: gunakan `admin-brownfield-architecture.md` (default: ya).
3) Minta pembuatan story breakdown:
   - Story A: Harmonisasi warna/typography + spacing kartu reward.
   - Story B: Pembungkusan `/admin/payroll` dengan `DashboardLayout`.
   - Story C: Implement flags `enablePayrollUIHarmonization` & `useDemoRewardData`.
   - Story D: Mock data provider (empty/normal/high) + mapping `demo-user-123` → `user.id`.
   - Story E: QA suite, dokumentasi toggle, panduan verifikasi.
4) Setelah disetujui, keluarkan backlog terurut + estimasi + rencana rilis.