Skip to content

E3: Seat Inventory Management - Tasks

Epic: E3: Seat Inventory Management

Task Legend

Symbol Status
Not started
🟡 In progress
Complete
Blocked

E3-F1: Seat Status Model

Feature: E3-F1: Seat Status Model

Status Task Verification
Define SeatStatus enum (Available, Sold, Reserved, Technical, Official, Blocked, Maintenance, Quarantined, Allocated, Inactive) Enum created
Define color codes for each status Config/constants file updated
Define valid status transitions matrix Transition rules documented and coded
Add audit fields to Seat model (last_modified_by, last_modified_at) Migration run

E3-F2: Individual Seat Status Change

Feature: E3-F2: Individual Seat Status Change

Status Task Verification
Implement PUT /admin/seats/{id}/status endpoint Updates seat status
Validate status transition against allowed transitions Invalid transition returns 400
Require reason parameter for status change Missing reason returns 400
Log change to SeatAudit table Audit record created
Warn if seat is locked (in cart) Response includes warning

E3-F3: Bulk Seat Operations

Feature: E3-F3: Bulk Seat Operations

Status Task Verification
Implement POST /admin/seats/bulk-status endpoint Accepts seat IDs array
Add selection by section parameter Selects all seats in section
Add selection by row range (section + from_row + to_row) Selects correct rows
Add optional status filter (only change seats with specific current status) Filter applied
Process in batches with progress tracking Progress updates available
Skip locked seats and report in response Skipped seats listed

E3-F4: Seat Search & Lookup

Feature: E3-F4: Seat Search & Lookup

Status Task Verification
Implement GET /admin/seats/search?seat_number=X endpoint Returns seat details
Implement GET /admin/seats/search?quota_id=X endpoint Returns all seats in quota
Implement GET /admin/seats/search?email=X endpoint Returns tickets for email
Implement advanced search with multiple filters (match, status, section, date range) Filters combine correctly
Add pagination to search results Page/limit params work

E3-F5: Stadium Visualization

Feature: E3-F5: Stadium Visualization

Admin Visualization (Inventory Monitoring)

Status Task Verification
Create Konva.js canvas component for seat map rendering Canvas renders seat grid
Load seat map JSON and render seats with correct positions Seats match JSON layout
Color-code seats by status (10 status colors) Colors match legend
Implement zoom controls (mouse wheel, buttons) Zoom in/out works
Implement pan controls (drag, keyboard) Can navigate large maps
Add status legend component All 10 statuses shown
Implement sector-level view with aggregated status colors Sectors colored by dominant status
Implement click on sector to show seat grid Seat grid loads
Implement click on seat to show detail modal Modal shows seat info
Show ticket holder info in modal (if sold) Holder name visible
Add "Change Status" action in modal Status change works

Status Color Reference

Status Color Hex
Available Green #22C55E
Sold Blue #3B82F6
Reserved Yellow #EAB308
Technical Purple #A855F7
Official Orange #F97316
Blocked Red #EF4444
Maintenance Gray #6B7280
Quarantined Brown #92400E
Allocated Teal #14B8A6
Inactive Black #1F2937

E3-F6: Sector-to-Sector Transfer

Feature: E3-F6: Sector-to-Sector Transfer

Status Task Verification
Implement POST /admin/tickets/sector-transfer endpoint Accepts source seats and destination sector
Assign new seats in destination using snake algorithm Adjacent seats assigned
Update ticket seat_id to new seats Tickets point to new seats
Mark original seats as Blocked Original seats status changed
Send notification to affected ticket holders Email/push sent
Make transfer atomic (all or nothing) Partial failure rolls back

Last Updated: February 2026