E4-F2: Zone Selection and Availability¶
Epic: E4: Ticket Purchase Flow
Size: S (Small)
Problem / Outcome¶
User selects zone and quantity to see pricing.
Scope¶
In-Scope:
- GET /matches/{id}/zones with availability counts
- Pricing display (pre-sale vs match day)
- Quantity selection (max 4)
Out-of-Scope:
- Seat selection by user (system assigns)
Acceptance Criteria¶
- AC1: Zones displayed with available count and price
- AC2: Pre-sale discount shown until day before match, then full price
- AC3: Quantity limited to 4 (or lower if less available)
Data Model Impact¶
No new tables required.
Response includes per zone:
- zone_id (UUID)
- zone_name (VARCHAR)
- available_count (INTEGER)
- presale_price (DECIMAL)
- match_day_price (DECIMAL)
- current_price (DECIMAL)
- max_quantity (INTEGER)
Permissions/Roles¶
- Authenticated user
How to Verify¶
npm test -- --grep "zone selection"
Expected: Availability accurate, pricing correct for date.
Dependencies¶
Implementation Tasks¶
Doc References¶
Last Updated: January 2026