Go-Live Audit — Slice A: Reservations · Front Desk · Folio
Date: 2026-04-25 Domains: 1. Reservations · 2. Front Desk · 3. Folio & Billing Total checks: 78
Verdict: 🔴 NOT GO-LIVE READY
Foundation is solid (core reservation, check-in/out, folio posting all work). Four P0 issues touch revenue and compliance — must fix.
P0 Blockers (must fix before any hotel goes live)
| # | Item | Domain | Evidence | Impact |
|---|---|---|---|---|
| 1 | No refund posting on reservation cancellation | Reservations | reservations.service.ts → cancel() | Cancellation fee calculated but never posted as negative payment to folio. Guest balance ends at zero but no audit trail. Revenue reconciliation breaks. |
| 2 | Overbooking workflow incomplete | Reservations | overbooking.handler.ts | Buffer calc exists; acceptance / rejection / overflow routing missing. Double-booked guests have no alternate. |
| 3 | Negative payments blocked at folio | Folio | folios.service.ts → postPayment() | Defense-in-depth check rejects negative amounts — blocks refund posting even after #1 is fixed. |
| 4 | Multi-room per-room modifications blocked | Reservations | reservation update handler | Only atomic cancel supported; can't extend / shorten one room within a multi-room booking. Painful for groups. |
P1 Should-Fix List
- Walk-in same-day duplicate detection missing — race risk on rapid double walk-in
- Walk-in mid-transaction failure recovery — room assignment fail → orphaned reservation row
- Early-checkin charge calculated but not posted to folio in some paths
- Late-checkout charge calculated but not posted in some paths
- Key-card encoding failures silent — no retry / no UI alert
- C-Form generated but not validated — no enforcement for foreign check-in
- Cash-drawer variance — manager sign-off UI missing
- Confirmation email/SMS event published but integration untested end-to-end
Stub / TODO Register
(agent did not persist file:line — to be cross-referenced from individual files in the stitching pass)
Detailed checklist results
1. Reservation Lifecycle (23 checks)
- ✅ create (direct / walk-in / group / multi-room)
- ✅ confirmation # generation, status lifecycle
- ⚠️ cancel: fee calc OK, refund posting MISSING (P0 #1)
- ⚠️ overbooking: detection OK, routing missing (P0 #2)
- ⚠️ multi-room edit: per-room not supported (P0 #4)
- ⚠️ confirmation email/SMS: event published, integration untested
2. Front Desk Operations (28 checks)
- ✅ standard / express / batch check-in
- ✅ standard / express / late / early check-out
- ✅ room move, swap, upgrade
- ✅ cash drawer open/close
- ⚠️ key card encoding silent fail (P1)
- ⚠️ C-Form not validated (P1)
- ⚠️ early/late charges calc OK, posting inconsistent (P1)
- ⚠️ variance approval UI missing (P1)
3. Folio & Billing (27 checks)
- ✅ open at check-in
- ✅ post charge (manual + auto from POS room-charge + per-night)
- ✅ post payment (cash / card / UPI / city ledger)
- 🔴 negative payment blocked (P0 #3)
- ✅ adjustment / void / transfer / split
- ✅ settle / reopen
- ✅ GST CGST/SGST/IGST slab calc
- ✅ E-invoice IRN generation (mock + live)
- ✅ folio audit log
Test coverage
- Reservation service: 27 test files, 114+ test cases — good happy-path
- Frontdesk service: 76 test files, 108+ check-in, 102+ folio
- Weakness: poor edge-case coverage (race conditions, failure recovery, cross-module integration)
Risk Register (top 10)
| # | Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|---|
| 1 | Refund cannot be processed (cancellation flow) | HIGH | HIGH | Implement negative-payment posting on cancel |
| 2 | Overbooking → guest turn-away | MED | HIGH | Complete overflow / waitlist routing |
| 3 | Walk-in race-condition double-booking | LOW | MED | Add same-day duplicate guard |
| 4 | Walk-in orphan reservations | LOW | MED | Saga / compensating action on failure |
| 5 | Key encode silent fail | MED | HIGH | Retry + UI alert |
| 6 | Foreign-guest C-Form non-compliance | MED | HIGH (legal) | Enforce validation at check-in |
| 7 | Manager variance sign-off bypass | LOW | MED | Add UI gate |
| 8 | Confirmation email not delivered | MED | LOW | E2E test + bounce tracking |
| 9 | Per-room edit forces full cancel | MED | MED | Add per-room patch endpoint |
| 10 | Late-checkout charge missed in posting | MED | MED (revenue) | Audit posting paths |
Recommendation
DO NOT LAUNCH until P0 (#1–#4) resolved. Estimated 2-week sprint.