LMS-BGN/docs/admin-payroll-reward-brownf...

93 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 12)
- 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 34)
- 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 12)
- Buat provider/mock service untuk 3 state (empty/normal/high).
- Mapping `demo-user-123``user.id` dari `AuthContext`.
5) QA & Hardening (Minggu 2, Hari 35)
- 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.