- mutationFn now throws on non-ok responses so failed appointment
creation (409 no slots, 400 validation) properly rejects instead of
silently calling onSuccess with no id
- handleAppointmentSubmit rejects if server returns success but no id
- invalidate QK_APPOINTMENTS_BASE cache after successful appointment
creation so the appointments page refreshes automatically
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>