Left To Do¶
Items¶
Tutor notification for a rejected booking.¶
At present the tutor sees the rejection on screen and the rejected request is recorded in the worksheet, but we wanted them to receive an email as well: essentially, Studio/Gallery is unavailable at that time; check the calendar and try another time/location. This is probably the next actual feature.
Do a little server-side location hardening.¶
The server should explicitly accept only Studio, Gallery, or Other as the form's location choice. At present evaluateBooking_() distinguishes Studio/Gallery from everything else; technically a mischievous browser could submit room = "Elephant" plus an address and we'd treat it as an external location. 🐘 Not remotely urgent, but very easy to close.
Past-date validation on the server.¶
The browser prevents choosing an old date, but—as with the prices—we shouldn't rely entirely on the browser. The server should refuse a booking whose date/time has already passed.
Deal with the now-obsolete Assigned Room machinery.¶
The worksheet column is gone, but some old backend code (handleAssignedRoomEdit_(), parts of onApprovalEdit(), etc.) is still hanging around. Likewise, we've deliberately retained the old Pending infrastructure because TPTB may yet change their minds. I would not rip all of that out tonight. Once the requirements stop moving, we can mark/deactivate the Assigned Room code cleanly rather than performing surgery while the patient is still changing shape.
Future multi-session booking.¶
We've settled the important architecture: one worksheet row = one actual session. If a tutor eventually wants six dates, the form can submit six ordinary bookings. But we haven't decided how many dates they may request at once or how far ahead. That's a later v1.6-ish feature, not something v1.5 needs before it can work.
“Further Details”.¶
Still deliberately a placeholder because we haven't decided where that information eventually comes from. Again, no reason for it to hold up the booking system.
Summary¶
There is also the accounting end: Billable Hours is working, while Hourly Rate and Total Fee are deliberately blank because we haven't yet established how the rate is supplied. That's not a bug; it's unfinished policy/business logic.
So I'd describe the state of the project as:
- Booking engine: essentially complete.
- New v1.5 data model: complete.
- New rejection workflow: working.
- Notification + defensive validation + cleanup: remaining.
- Multi-session/further-details/accounting policy: future work.
And I think the nicest next bite-sized job is the rejection email. It gives us a genuinely useful completed workflow: tutor tries an unavailable room → request is recorded as Rejected → no calendar event → tutor gets immediate on-screen feedback and an email telling them what happened.