# 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.