# Console Commands untuk Cleanup Data Inspeksi

## Daftar Command

### 1. `lpj:cleanup-inspeksi`
Command utama untuk cleanup data inspeksi secara batch.

**Usage:**
```bash
php artisan lpj:cleanup-inspeksi [options]
```

**Options:**
- `--permohonan-id=ID` - Filter berdasarkan permohonan ID (opsional)
- `--sync` - Jalankan secara synchronous
- `--dry-run` - Tampilkan preview tanpa menjalankan cleanup
- `--force` - Jalankan tanpa konfirmasi

**Contoh Penggunaan:**
```bash
# Preview data yang akan di-cleanup
php artisan lpj:cleanup-inspeksi --dry-run

# Cleanup semua data (dengan konfirmasi)
php artisan lpj:cleanup-inspeksi

# Cleanup untuk permohonan tertentu
php artisan lpj:cleanup-inspeksi --permohonan-id=123 --force

# Jalankan secara sync
php artisan lpj:cleanup-inspeksi --sync --force
```

### 2. `lpj:cleanup-single-inspeksi`
Command untuk cleanup 1 permohonan dan user tertentu.

**Usage:**
```bash
php artisan lpj:cleanup-single-inspeksi <permohonan-id> <created-by> [options]
```

**Arguments:**
- `permohonan-id` - ID permohonan yang akan di-cleanup (required)
- `created-by` - ID user yang membuat data (required)

**Options:**
- `--sync` - Jalankan secara synchronous
- `--force` - Jalankan tanpa konfirmasi

**Contoh Penggunaan:**
```bash
# Cleanup untuk permohonan 123 oleh user 456
php artisan lpj:cleanup-single-inspeksi 123 456

# Jalankan secara sync tanpa konfirmasi
php artisan lpj:cleanup-single-inspeksi 123 456 --sync --force
```

### 3. `lpj:cleanup-inspeksi-status`
Command untuk mengecek status data inspeksi dan melihat statistik cleanup.

**Usage:**
```bash
php artisan lpj:cleanup-inspeksi-status [options]
```

**Options:**
- `--permohonan-id=ID` - Filter berdasarkan permohonan ID
- `--created-by=ID` - Filter berdasarkan user ID
- `--detailed` - Tampilkan detail data

**Contoh Penggunaan:**
```bash
# Lihat statistik umum
php artisan lpj:cleanup-inspeksi-status

# Filter berdasarkan permohonan
php artisan lpj:cleanup-inspeksi-status --permohonan-id=123

# Tampilkan detail data
php artisan lpj:cleanup-inspeksi-status --detailed
```

## Scheduling

Command cleanup otomatis dijalankan setiap hari jam 2 pagi dan setiap minggu. Konfigurasi scheduling ada di `LpjServiceProvider.php`.

## Monitoring

Semua aktivitas cleanup dicatat di log file:
- `storage/logs/laravel.log` - Log umum
- `storage/logs/cleanup-inspeksi.log` - Log cleanup harian
- `storage/logs/cleanup-inspeksi-weekly.log` - Log cleanup mingguan

## Alur Kerja Cleanup

1. **Identifikasi**: Cari data inspeksi yang memiliki:
   - Data baru dengan `dokument_id` (tidak null)
   - Data lama tanpa `dokument_id` (null)
   - Sama `permohonan_id` dan `created_by`

2. **Proses**: Soft delete data lama menggunakan Laravel SoftDeletes

3. **Logging**: Catat setiap operasi untuk audit trail

4. **Transaction**: Gunakan DB transaction untuk konsistensi data

## Troubleshooting

### Command tidak muncul
Pastikan service provider sudah diregister dengan benar:
```bash
php artisan list | grep lpj
```

### Data tidak ter-cleanup
- Cek log untuk error
- Pastikan ada data yang memenuhi kriteria
- Gunakan `--dry-run` untuk preview
- Gunakan `--detailed` untuk melihat detail data

### Performance
Untuk data besar, gunakan mode queue (default) daripada `--sync`