Skip to main content

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)​

#ItemDomainEvidenceImpact
1No refund posting on reservation cancellationReservationsreservations.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.
2Overbooking workflow incompleteReservationsoverbooking.handler.tsBuffer calc exists; acceptance / rejection / overflow routing missing. Double-booked guests have no alternate.
3Negative payments blocked at folioFoliofolios.service.ts → postPayment()Defense-in-depth check rejects negative amounts — blocks refund posting even after #1 is fixed.
4Multi-room per-room modifications blockedReservationsreservation update handlerOnly 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)​

#RiskLikelihoodImpactMitigation
1Refund cannot be processed (cancellation flow)HIGHHIGHImplement negative-payment posting on cancel
2Overbooking → guest turn-awayMEDHIGHComplete overflow / waitlist routing
3Walk-in race-condition double-bookingLOWMEDAdd same-day duplicate guard
4Walk-in orphan reservationsLOWMEDSaga / compensating action on failure
5Key encode silent failMEDHIGHRetry + UI alert
6Foreign-guest C-Form non-complianceMEDHIGH (legal)Enforce validation at check-in
7Manager variance sign-off bypassLOWMEDAdd UI gate
8Confirmation email not deliveredMEDLOWE2E test + bounce tracking
9Per-room edit forces full cancelMEDMEDAdd per-room patch endpoint
10Late-checkout charge missed in postingMEDMED (revenue)Audit posting paths

Recommendation​

DO NOT LAUNCH until P0 (#1–#4) resolved. Estimated 2-week sprint.