You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[booking][P2 MEDIUM] No no-show automation: SCHEDULED appointments never auto-close on absent attendance, no NO_SHOW state, no money/credit reconciliation (revives #471) #1493
There is no no-show automation in the product. A consultee who books a paid/approved session and never attends leaves the appointment in a SCHEDULED state forever — no automatic NO_SHOW/COMPLETED-with-marker transition, no consultant/consultee flag, no earned/credit reconciliation, no follow-up workflow.
The prior tracking issue #471 ("No-show detection and handling system") is closed without a shipping implementation; this re-opens the gap as a concrete requirement set.
Stream/call-presence code (lib/stream/call-presence.ts, lib/stream/session-handlers.ts, lib/stream/webhook-events.ts) has no-show signals (connection state, attendance metadata) but nothing closes the booking or reconciles it.
No cron/job sweeps SCHEDULED appointments against session attendance to mark no-shows.
The gap
No state machine edge for no-show: a session that starts and ends with the consultee absent is indistinguishable from a normal completed session at the data layer.
No auto-close: no sweep that marks an elapsed SCHEDULED appointment as no-show when attendance is absent (and with recording presence, a no-show, or a served-vs-not determination).
Decide the money model for no-show (tied to refund/cancellation policy work).
Add a NO_SHOW appointment state and a sweep (mirroring expire-reschedule-proposals / expire-stale-requests cron patterns) that moves elapsed SCHEDULED appointments to a no-show terminal state when session attendance is empty.
Surface a consultant "confirm attended / mark no-show" action in the consultant UI (dashboard), defaulted to auto on elapsed-session + no presence.
Denormalize any attendance/no-show marker per the schema directive (typed field, not JSON).
Files
prisma/schema.prisma:3677-3688 — AppointmentStatus (no NO_SHOW)
lib/stream/call-presence.ts, lib/stream/session-handlers.ts, lib/stream/webhook-events.ts — attendance/presence signals (raw, unconsumed for no-show)
jobs/appointments/*, scripts/appointments/* — existing cron patterns to mirror
Summary
There is no no-show automation in the product. A consultee who books a paid/approved session and never attends leaves the appointment in a
SCHEDULEDstate forever — no automaticNO_SHOW/COMPLETED-with-marker transition, no consultant/consultee flag, no earned/credit reconciliation, no follow-up workflow.The prior tracking issue #471 ("No-show detection and handling system") is closed without a shipping implementation; this re-opens the gap as a concrete requirement set.
Current state (verified)
AppointmentStatusenum (prisma/schema.prisma:3677-3688):PENDING, APPROVED, APPROVED_PENDING_PAYMENT, SCHEDULED, COMPLETED, REJECTED, CANCELLED, EXPIRED— noNO_SHOWstate.lib/stream/call-presence.ts,lib/stream/session-handlers.ts,lib/stream/webhook-events.ts) has no-show signals (connection state, attendance metadata) but nothing closes the booking or reconciles it.SCHEDULEDappointments against session attendance to mark no-shows.The gap
SCHEDULEDappointment as no-show when attendance is absent (and with recording presence, a no-show, or a served-vs-not determination).Recommended approach
NO_SHOWappointment state and a sweep (mirroringexpire-reschedule-proposals/expire-stale-requestscron patterns) that moves elapsedSCHEDULEDappointments to a no-show terminal state when session attendance is empty.dashboard), defaulted to auto on elapsed-session + no presence.Files
prisma/schema.prisma:3677-3688—AppointmentStatus(noNO_SHOW)lib/stream/call-presence.ts,lib/stream/session-handlers.ts,lib/stream/webhook-events.ts— attendance/presence signals (raw, unconsumed for no-show)jobs/appointments/*,scripts/appointments/*— existing cron patterns to mirrorRelated