# Issue: Implementasi Fitur Data Cleansing (Merge Duplicate & Dummy Data)

## Problem Statement

Aplikasi saat ini memiliki data yang kotor akibat proses import dari CSV sebelumnya:

- Terdapat duplikasi data anggota (Member) yang memiliki NIK, Nama, atau No. HP yang sama.
- Terdapat duplikasi data kolektor (User) yang memiliki Email yang sama.
- Terdapat data dummy yang diimport via CSV (ditandai dengan notes "Imported from CSV" atau email dummy).
- Kebutuhan untuk melakukan re-assign data pembiayaan dari data dummy/duplicate ke data yang valid.

## Proposed Solution

Membuat dashboard khusus "Data Cleansing" untuk Administrator yang mencakup:

- Identifikasi otomatis data duplicate berdasarkan kriteria tertentu.
- Fitur untuk menggabungkan (merge) data duplicate menjadi satu record utama.
- Fitur untuk menghapus data dummy yang sudah tidak memiliki relasi transaksi.
- Integrasi dengan fitur re-assign pada halaman detail pembiayaan.

## Implementation Plan

### Phase 1: Backend Development

- [x] Membuat `DataCleansingService` untuk logika identifikasi, merge, dan hapus.
- [x] Membuat `DataCleansingController` untuk menangani request dari frontend.
- [x] Menyiapkan route khusus administrator di `routes/web.php`.
- [x] Implementasi audit trail untuk setiap tindakan merge/delete.

### Phase 2: Frontend Development

- [x] Membuat halaman dashboard `DataCleansing/Index.tsx`.
- [x] Membuat komponen `MergeEntityModal` untuk proses review dan merge data.
- [x] Update `ReassignEntityModal` untuk mendukung validasi data dummy berdasarkan notes CSV.

### Phase 3: Testing & Validation

- [x] Membuat feature test `tests/Feature/DataCleansingTest.php`.
- [x] Verifikasi skenario merge member dengan relasi transaksi.
- [x] Verifikasi skenario delete dummy data dengan proteksi relasi aktif.

## Acceptance Criteria

- Administrator dapat melihat daftar group data yang terindikasi duplicate.
- Administrator dapat menggabungkan data duplicate tanpa menghilangkan relasi transaksi (pembiayaan/tabungan).
- Data dummy dapat dihapus secara permanen jika tidak memiliki relasi aktif.
- Semua tindakan tercatat dalam audit log sistem.
- Tidak ada error 500 saat proses merge atau delete.

---

**Status:** Completed
**Author:** Antigravity (AI Coding Assistant)
**Date:** 2026-04-04
