diff --git a/app/Console/README.md b/app/Console/README.md new file mode 100644 index 0000000..9077e6b --- /dev/null +++ b/app/Console/README.md @@ -0,0 +1,123 @@ +# 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 [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` \ No newline at end of file