Issue #3611710: Seating admin UI: manage venues, sections, grades and seats, with a bulk seat generator

Adds the admin UI for the seating entities from #3611662, in yoyaku_seating itself (as yoyaku_order does), so yoyaku_ui stays core-only and nothing is forced to install seating.

What this adds

  • CRUD for yoyaku_venue, yoyaku_section, yoyaku_seat_grade and yoyaku_seat under /admin/booking (list builders + core content-entity forms + AdminHtmlRouteProvider), attached by SeatingHooks::entity_type_alter.
  • Bulk seat generator at /admin/booking/seat/generate: pick a section (which fixes the venue) and an optional grade, enter rows (a comma list, each a label or a range like A-F or 1-10) and seats per row; seats are labelled by row and position and existing ones are skipped, so it is re-runnable.
  • Form widgets, typed getVenue() accessors, menu links under the Booking menu (soft parent, orphan-safe without yoyaku_ui) and action links.

Testing

Kernel GenerateSeatsTest (row expansion + dedupe) and functional SeatingAdminUiTest (the whole admin flow, with yoyaku_ui NOT enabled, proving the UI is standalone). phpcs, phpstan, cspell clean; kernel green locally on 11.4.

Merge request reports

Loading