Design: Parking Lot System with Enum Usage
Design focuses on enum usage for vehicle and spot types, spot assignment logic, and basic parking lot management. Payment, user management, and multi-level parking are out of scope.
Functional Requirements
FR1: Support different types of vehicles: Motorcycle, Car, Truck
FR2: Support different types of parking spots: MotorcycleSpot, CompactSpot, LargeSpot
FR3: Assign vehicles to appropriate spot types based on vehicle type
FR4: Prevent parking a vehicle in an incompatible spot
FR5: Allow querying available spots by spot type
FR6: Track occupied and free spots
Non-Functional Requirements
NFR1: System should handle up to 500 vehicles parked simultaneously
NFR2: Spot assignment and release operations should respond within 100ms
NFR3: System availability target: 99.9% uptime
