admin-mvp-1-ia-handover.html ยท Stack: React 19 + TanStack Start (SPA) ยท shadcn amber b1MJ9vRwY6 ยท light-mode iter-1
WF3: 4 tab elaborated (clickable) ยท WF4: week + month view, conflict UX options, NO drag-reschedule (ganti explicit โ cegah accidental drag) ยท light mode ยท Indonesian ยท WIB
| Sisa waktu | Tagihan siswa | Honor tutor |
|---|---|---|
| < 1 jam | 100% | 100% |
| < 2 jam | 50% | 50% |
| < 4 jam โ berlaku | 25% | 25% |
| โฅ 4 jam | 0 | 0 |
Peserta (tutor+siswa, kontak, jarak, WA) ยท Jadwal & lokasi (datetime, durasi, mode, alamat+peta) ยท Harga snapshot (tagihan/honor/transport/margin, ๐) ยท Kebijakan pembatalan snapshot.
Kehadiran (siswa/tutor checkbox โ no-show flow) ยท Materi (topik utama, sub-topik, halaman buku, PR/tugas, target sesi berikutnya) ยท Foto report (R2 presigned) ยท meta "diisi tutor kapan". Admin bisa edit kalo tutor lupa.
Simulasi "jika dibatalkan sekarang" โ lead-time live + bracket berlaku + charge siswa/honor tutor/transport. Bracket config snapshot table. Operator liat impact SEBELUM commit. Override ADMIN + alasan.
Timeline insert-only semua transisi state + edit (who/when/IP/before-after). Lazy-load. Retensi 7thn. Drill ke A1 full audit buat dispute.
Buang drag โ cegah accidental reschedule (mis-schedule = sesi salah jadwal = fatal). Reschedule = explicit: klik event โ detail sheet โ tombol "Reschedule" โ wizard pick datetime + confirm. Deliberate, gak accidental.
GIST exclusion DB + live-check di create/approve. Block sebelum kejadian. Visual (banner+border+badge) buat existing.
Week = time-grid detail (slot-level). Month = density overview (pill count per hari + status warna + konflik badge). Klik hari month โ drill week.
Klik slot kosong (week) / hari (month) โ quick-create sheet pre-fill datetime + smart-default tutor.
Custom grid (Tailwind). ToggleGroup (week/month). Sheet (event detail + reschedule wizard). Popover (hover preview). Alert (conflict banner). NO drag lib.
Warna status BUKAN satu-satunya signal โ ada label teks ("req"/"done"/"IN PROG"). Color-blind safe. WCAG.