Skip to content

Migrated from Notion Overview / Domain brief — https://app.notion.com/p/3d31f8eaa3ad81df848cdaef530ea90d

Overview / Domain brief

Callout Locker / rental vs SYS-005: out of SYS-005 test scope; locker ownership is rental-api-server after merged #5/#919. Callout As of 2026-09-24 IST — coverage/board map refreshed: TEST coverage recommendations (2026-09-24). Tips: API develop 94f64f5; browser main 4a53eab. Karate+k6 on develop (#974); Playwright nightly suite=admin often red. Callout Who should read: QA and new engineers — SYS-005 scope, goldens, canonical terms. Skim scope + booking path; deep-dive only what your class needs. Canonical terms: Business, Outlet, Venue, Booking, Customer — never Reservation / Location as IDs. Lock rule: no update_booking on Confirmed locks.

SYS-005 rules (QA-confirmed)

Callout Class-bound: new Outlet of an existing config class = zero new tests. Tests bind to class / golden behavior, not per-SKU.

Covered vs queued tests

What is proven today (business language): Scenario matrix — Playwright desk journeys (BA Midway on nightly suite=admin, often red as of 2026-09-24; buyout/pay-later/slot-full specs exist but not nightly) and unit/oracle booking-math for Midway / Super Pass / ULTIMATE. Latest board/CI map: TEST coverage recommendations (2026-09-24). Standing rules: new outlet of an existing class = zero new tests; no unsafe Confirmed-lock replace on desk (patch booking); live pay is Datacap after create for ATP/US goldens. - ATP class fingerprint: duration-on-item + buffer 30 + 2 rooms - US class fingerprint: duration-on-schedule + buffer 0 + 1261 capacity-1 pool - Goldens: The Midway Play (ATP); Super Pass + ULTIMATE (US) - Deferred / out of scope: FiveStar; ~53 insurance/hospital/benefits BZ* (list-not-probe); hotel/locker/kiosk/R365/membership purpose chapters - Locks: no update_booking on Confirmed; desk path admin_booking.patch_booking (ADR-0008 / #883). Master spec bz-platform-context#107; #121 does not close SYS-005. - Oracle = booking-math fixtures in reservation-api-server (CI Quality Gate via #925 on develop) — not a separate bz-qa product. Working SoT for day-one reading: this Notion hub. Fallback mirror: OneDrive Documents/Projects/BZ/SYS-005 + phase0 markdown. Word Online is not SoT. Next: Doctype inventory (overview) · Domain knowledge index · TEST coverage recommendations (2026-09-24) · Test approach.


SYS-005 Domain Knowledge

BookingZone / VenuPlus QA — phase0 corpus (expanded OneDrive pack).


SYS-005-domain-knowledge.md

SYS-005 domain knowledge (living)

Source of truth: JSON under local bz-qa/phase0/ecosystem/. This file is the share layer.

Read the Word pack SYS-005-domain-knowledge.docx (entity model, 120-field A/B/C/D, create/pay path, API map, smells) and Excel sheet 07_Doctype_inventory (all 250 names).

Scope (locked 2026-09-02)

  • Tests stay class-bound (3 classes). New Outlet of an existing class = zero new tests.
  • FiveStar deferred.
  • ~53 insurance/hospital/benefits BZ * names: out of SYS-005 (listed, not probed, not tested).
  • Hotel / locker / kiosk / R365 / membership: deferred (names only, no purpose chapters).

Doctype census (DEV Frappe)

250 BZ* names, 56 child tables, 1 Single (BZSettings).

Domain n SYS-005
Booking 74 in-scope inventory + class tests
Unrelated (insurance/hospital/benefits) 53 out of scope
Admin-ops 43 inventory
Accounting-R365 27 deferred
Hotel-Locker-Rental-Movie 27 deferred
Commerce 21 addons/promos/deals in-scope
CRM 5 deferred

Booking path (what the quality gate actually uses)

Business → Outlet → Venue → VenueResource
BZServiceItem (~120 fields, A/B/C/D) → BZSchedule (slots/venue_details on parent GET)
BZAddon, BZPromoCode, BZDeal, BZTag, BZDigitalWaiver, BZResourceBlock
BZBooking + BZBookingAvailability not fetched (#883_lock_path=yes on ATP Midway — do not run update_booking)

Goldens: ATP Midway Play; US Super Pass (6 waivers) + ULTIMATE. US Outlets A and B are different Businesses — do not collapse.

Create/pay (do not execute): cart → create_booking (Pending) → Datacap → record_external_payment_transaction → finalize_booking_after_payment. Complete path on ATP is 100OFF → $0 → skip card. DEV Datacap is payment_environment=production.

Canonical terms: Booking, Outlet, Customer, Business, Venue.

Full 250-row table: Excel 07_Doctype_inventory and local doctype-inventory.md.


domain-brief.md

Phase 0 domain brief (read-only)

Source: GitHub only. QA Frappe was not reachable. No #883 repro. No GitHub writes.

Canonical terms (bz-platform-context/glossary/domain-terms.md): - Business (BZBusiness) — never Tenant/Company - Outlet (BZOutlet) — never Location/Site/Venue - Venue (BZVenue) — bookable space inside an Outlet - Customer (BZCustomer) — never Guest (Guest = unauthenticated) - Booking (BZBooking) — never Reservation/Order

SYS-005 (bz-platform-context#107): a new Outlet of an existing config class = zero new tests. Config class ≈ backend × service-item shape × pay × channel × lock/buffer behavior. Fingerprint table (docs/booking-config-fingerprint.md) is not landed yet (issue #112 still open).

883 / PR #885 (do not reproduce):

  • Symptom: Successful Booking created on venuplus-app, then admin update_booking date/time change left sole BZBookingAvailability Released, no replacement Confirmed lock, later double-book.
  • Create path: bookingzone.api.booking_transaction.create_booking
  • Vulnerable admin path: bookingzone.api.admin_booking.update_booking (shim reschedule)
  • Safe path already: patch_booking in-place Confirmed lock (locks_rescheduled)
  • Prod evidence IDs are not QA fixtures (listed only as public issue evidence; excluded from datasets)

1. VenuPlus (At The Pier)

  • Business pack: VenuPlus / At The Pier
  • App that creates the Booking: venuplus-app (customer PWA; registry: single-tenant ATP)
  • Admin edits: admin-web-app (update_booking via shim reschedule; patch_booking via BookingDetail/edit drawers)
  • Create API: bookingzone.api.booking_transaction.create_booking then apply_booking_workflow_action + payment finalize
  • Update APIs: admin update_booking (vulnerable until #885) vs patch_booking (in-place)
  • Backend: Frappe (reservation-api-server SoT)
  • Service item: Package (birthday party) + Venue resources
  • Timeslots: bookingzone.api.customer.get_timeslots / availability.get_timeslots; locks via availability.lock_resources
  • Payment sandbox: Datacap cert (payment_environment on Outlet; PWA NEXT_PUBLIC_DATACAP_SANDBOX is UI badge only)
  • #883 lock path: yes (prod incident: PWA create → admin update_booking)
  • QA IDs: UNKNOWN (no QA Desk access this pass)

Evidence: venuplus-app/AGENTS.md, venuplus-app/docs/API-readme.md, reservation-api-server#883, repo-registry.md


2. FiveStar (Malibu Jack's / CenterEdge-heavy)

  • Business pack: FiveStar (Malibu Jack's)
  • App that creates the Booking: customer-web-app (multi-tenant white-label; Scene75 + Malibu Jack's)
  • Admin edits: admin-web-app (same Frappe APIs if the Booking is a Frappe doc; CE-native inventory is a different hold)
  • Create API: customer-web booking/checkout against CE product path (SYS-005 P0 “CE product book”). Stale README still names ReserveCloud EventPackage*. Do not treat that README as current SoT.
  • RC vs CE: SYS-005 / customer-web-app#379 require both RC Plan and CE product @smoke on this app. FiveStar pack is CE-heavy. An extra FiveStar RC Plan class is unconfirmed this pass (Scene75 is the documented RC customer-web brand; it is not one of the three requested Business packs).
  • Backend: CE (CenterEdge)
  • Service item: ce-product
  • Venue lock (Frappe Confirmed BZBookingAvailability): no (CE inventory, not Frappe Venue Resource hold)
  • #883 lock path: no — #883 is Frappe update_booking release-then-relock on Confirmed availability rows
  • Payment sandbox: CenterEdge (glossary gateway CenterEdge); Magensa/Datacap may exist on other customer-web classes — not proven for this FiveStar CE class
  • QA IDs: UNKNOWN

Evidence: repo-registry.md, SYS-005, customer-web-app#379, glossary payment gateways. Fingerprint table not in repo yet.


3. United Skates

  • Business pack: United Skates
  • App that creates the Booking: venuplus-app /plans (not customer-web-app). SYS-004 PWA auth is specified for this /plans guest/sign-in path.
  • Create API: same PWA write path — bookingzone.api.booking_transaction.create_booking
  • Catalog: Frappe Plans (reservation-api-server#636 single-date schedule logic; closed venuplus issues #167/#177/#179/#183)
  • Backend: Frappe
  • Service item: Plan
  • Venue lock: UNKNOWN (Plans catalog ≠ proven party Venue assignment)
  • #883 lock path: UNKNOWN — same update_booking API exists, but only mark yes when the class uses Confirmed BZBookingAvailability Venue locks. Not proven for United Skates Plans this pass.
  • Payment sandbox: Datacap cert (same PWA Datacap outlet config); Cognito for /plans login
  • QA IDs: UNKNOWN

Evidence: venuplus-app/AGENTS.md (SYS-004 United Skates /plans), venuplus-app/.env.example (Cognito + LogRocket unitedskates-app), issues listed above.


doctype-inventory.md