Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce New Protobuf Definitions for Seat Mapping #20

Merged
merged 22 commits into from
May 14, 2024
Merged

Conversation

havan
Copy link
Member

@havan havan commented May 7, 2024

This pull request introduces a new set of Protobuf definitions designed for detailed and flexible seat mapping in systems such as event ticketing or transportation booking.

New Features Include:

  • Seat and Feature Representation: Introduced Seat and SeatAttribute messages where SeatAttribute includes name, description, and a value for dynamic attributes like age restrictions or special conditions. This structured approach allows for more detailed descriptions and easier management of seat features and restrictions.

  • Improved Location Handling: The SeatLocation message supports both SVG and bitmap representations, facilitating precise seat placement on various types of seat maps.

  • Section and Seat Map Structuring: The Section message has been enhanced with recursive capabilities, allowing sections to contain inner sections. This is particularly useful for complex venues with multiple nested areas, such as stadiums or large theaters. SeatMap now incorporates the recursive Section structure and a localized description set, improving the map's comprehensiveness and usability.

  • Availability & Selection: Introduced SeatInventory, SectionInventory, SeatMapInventory messages for representing seat inventory, linked recursively to accommodate complex hierarchical structures of venues (same as the SeatMap). These will be used for seat availability and seat selection messages. Pricing is not included here, it will be in the offers (product search results).

  • SeatMap & Availability Service: Introduced a simple seat map and seat map availability service in a new package. (Because they will be used by multiple services across different packages like transport and activities)

Technical Specifications:

  • The schema is designed from the ground up to support both simple and complex seating arrangements across different services.
  • The approach ensures that the system can be integrated seamlessly into existing platforms while providing significant flexibility in seat management.
  • The SeatMap message type is structured to serve as a repository for static data, such as the layout and structural details of seat arrangements. It does not manage dynamic information like seat availability or pricing.
  • Dynamic aspects such as availability is managed separately through the inventory message types. This design segregates static and dynamic data, allowing for more efficient updates and queries pertaining to seat status without affecting the underlying seat map structure.

@havan
Copy link
Member Author

havan commented May 7, 2024

Diagram for the new message types

types/seat_map.proto
seat_map proto dot

seat_map/seat_map.proto Seat Map Service
seat_map proto dot

seat_map/availability.proto Availability Service
availability proto dot

book/validate.proto Validate Service
validate proto dot

proto/cmp/types/v1alpha/seatmap.proto Outdated Show resolved Hide resolved
proto/cmp/types/v1alpha/seatmap.proto Outdated Show resolved Hide resolved
@havan havan marked this pull request as ready for review May 7, 2024 13:59
@havan havan requested review from SamJaarsma and Noctunus May 7, 2024 13:59
proto/cmp/services/seat_map/v1alpha/seat_map.proto Outdated Show resolved Hide resolved
proto/cmp/types/v1alpha/seat_map.proto Outdated Show resolved Hide resolved
proto/cmp/types/v1alpha/seat_map.proto Show resolved Hide resolved
havan added 7 commits May 8, 2024 20:22
refactor availability message names to inventory
update availability service with different identifiers
- SeatInventory updated to be a a list of seat_ids
- SectionInventory now contains a oneof field of seats that has seat_inventory and seat_counts fields.
- SeatCounts msg type contains total and remaining seat counts
- validation messages now uses the validation object and search identifier
- this removes redundant code and makes it simpler
havan added 2 commits May 14, 2024 23:16
- comments updated/improved
- SeatMapLocation renamed to SeatLocation
- image_urls replaced with the Image type from file.proto
- remaining_seats renamed to seat_count for availability & seat selection
- helper types moved to the end of the file
@havan havan requested a review from SamJaarsma May 14, 2024 21:28
@havan havan requested a review from Noctunus May 14, 2024 21:28
Copy link
Member

@Noctunus Noctunus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@havan havan merged commit 9ae18ac into dev May 14, 2024
3 checks passed
@havan havan deleted the ekrem/seatmap branch May 14, 2024 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants