Berikut adalah dokumen Walkthrough hasil implementasi RC-013 (Wedding Event Management Foundation): Walkthrough: RC-013 Wedding Event Management Foundation 1. Multiple Events Seeding & Legacy Event Soft-deletion Model: OperationModel.php ensurePilotEventsExist(int $workspaceId): Memeriksa dan memastikan tiga ceremony utama (Holy Matrimony [sort 1], Tea Pai [sort 2], dan Reception [sort 3, primary]) terdaftar di database. Cleanup Legacy: Secara otomatis menonaktifkan/soft-delete (is_deleted = 1) default event bawaan lama (Wedding Ceremony) agar tampilan antarmuka terfokus penuh pada 3 ceremony pilot saja. migrateExistingGuestsEvents(int $workspaceId): Menghubungkan seluruh tamu lama yang belum terkonfigurasi ke ketiga ceremony pilot secara default untuk menjaga kompatibilitas data (backward compatibility). 2. Guest Event Access Mapping Model: GuestModel.php saveGuestEvents(): Menyimpan konfigurasi pemetaan akses tamu ke tabel pivot guest_events. Views: create.php dan edit.php Menambahkan pilihan checklist Event Access pada form pembuatan dan edit tamu secara manual. List Workspace: list.php Menambahkan tab navigasi filter (Holy Matrimony, Tea Pai, Reception) beserta ringkasan statistik spesifik per ceremony. 3. Invitation Visibility Filtering Model: PublicInvitationModel.php Menghapus query fallback sehingga undangan publik hanya menampilkan informasi dan agenda ceremony yang diizinkan untuk tamu tersebut. Jika tamu tidak diundang ke Tea Pai, seksi Tea Pai tidak akan dirender pada undangan digital mereka. 4. Wedding Day Event Sidebar Navigation Views: couple.php dan crew.php Menu Wedding Day diubah menjadi dropdown dinamis berisi daftar ceremony aktif (Holy Matrimony, Tea Pai, Reception) yang mengarah ke terminal check-in masing-masing. 5. Check-In & Override Terminal Controller: OperationController.php showScanner(): Menampilkan antarmuka terminal check-in, memuat metrik kehadiran, serta memproses pencarian tamu berdasarkan Nama, Phone, atau Guest Code. checkin(): Memvalidasi izin kedatangan tamu. Jika tidak diundang ke event saat ini, terminal akan menampilkan Entry Restriction Warning (Peringatan Batasan Masuk) dan mengunci check-in normal. reject(): Memproses tombol penolakan masuk dan mencatat log penolakan checkin.rejected di tabel audit logs. Manual Override: Membuka form bagi operator untuk memotong batasan dengan memasukkan alasan override (VIP, Family Request, Organizer Approval, Extra Pax, Other) serta catatan tambahan. Menghasilkan log audit checkin.override dan check-in bertanda khusus [OVERRIDE]. Views: scanner.php : Input scanner barcode/QR serta kolom input pencarian teks manual beserta daftar hasil. guest.php : Ringkasan kedatangan tamu, log waktu check-in, dan pilihan tombol Reject / Manual Override Form. 6. Event-Aware Dashboards Controller: CoupleDashboardController.php Menghitung statistik Expected (Tamu & Pax), Arrived, dan Pending secara terpisah untuk ketiga ceremony pilot. View: dashboard.php Menampilkan widget ceremony attendance lengkap dengan progress bar persentase kedatangan di bagian atas Dashboard Couple. Hasil Verifikasi Programmatic & Audit Trail Pengujian integrasi menggunakan script validator test_rc013_logic.php berhasil memvalidasi alur logis berikut: Pilot Seeding: Konfigurasi otomatis 3 ceremony pilot berjalan lancar dan membersihkan default event bawaan. Access Mappings: Tamu uji coba ("Test Charlie Override") disimpan dengan pemetaan terbatas (hanya diundang ke Holy Matrimony & Reception, tidak diundang ke Tea Pai). Standard Check-In: Berhasil melakukan check-in normal ke Holy Matrimony dengan catatan kedatangan standard. Restriction Warning & Rejection: Berhasil memicu peringatan restriksi saat tamu mengakses Tea Pai, serta mencatat log penolakan checkin.rejected. Manual Override: Berhasil melakukan override kedatangan untuk Tea Pai dengan menyertakan alasan VIP dan catatan khusus. Data check-in tersimpan dengan prefix [OVERRIDE] dan log audit checkin.override tercatat dengan lengkap di database. Attendance Calculations: Perhitungan statistik berjalan akurat (Tea Pai mencatat overrides_count = 1 dan expected guest sesuai konfigurasi).