---
description:
globs:
alwaysApply: true
---
1. Periksa kondisi controller, model, database, reseource dari kebutuhan yang saya berikan apakah sudah tersedia sebelumnya ataukah belum, pastikan untuk menghindari duplikasi file yang telah dibuat sebelumnya.
2. Pada blade yang baru dibuat hindarilah menggunakan styling manual, pastikan selalu menggunakan class boostrap 5.
3. Buatlah semua file dalam bahasa inggris.
4. Berilah penjelasan dari fungsi yang dibuat dalam bahasa indonesia.
5. Jangan membuat sql langsung ke db, gunakanlah migrations apabila terdapat kebutuhan untuk menambahkan atau penyesuaian table ataupun field database.
6. Tidak perlu menjalankan ulang server Laravel untuk menguji perubahan.
7. Jangan membuat file dokumentasi dari hasil yang telah dibuat.

## Lab Tests Snapshot System

### Masalah
Terjadi ketidaksinkronan antara checklist lab di paket MCU dengan form input hasil lab, dimana field yang sudah di-unchecklist masih muncul di form.

### Solusi yang Diimplementasikan
1. **Snapshot System**: Setiap appointment menyimpan snapshot `lab_tests_included` dari paket MCU di kolom `lab_tests_snapshot`
2. **Auto-Sync Observer**: `McuPackageObserver` otomatis mensinkronkan snapshot ketika paket MCU diubah (hanya untuk appointment yang belum finalized dan belum verified)
3. **Manual Sync Command**: `php artisan lab:sync-snapshot` untuk sinkronisasi manual

### Cara Penggunaan
```bash
# Dry run (cek tanpa menyimpan)
php artisan lab:sync-snapshot --dry-run

# Sync semua appointment yang belum finalized
php artisan lab:sync-snapshot

# Sync appointment spesifik
php artisan lab:sync-snapshot --appointment-id=123
```

### File Terkait
- Observer: `app/Observers/McuPackageObserver.php`
- Command: `app/Console/Commands/SyncLabTestsSnapshot.php`
- Model: `app/Models/Appointment.php` (method `getLabTestsIncluded()`)
- Dokumentasi Lengkap: `docs/LAB_TESTS_SYNC.md`

