2026-01-18_venue-maintenance-booking
Documentação KOLOS

2026-01-18_venue-maintenance-booking

🧭 Contexto

A Onda 3.1 (Booking) prevê que o mundo Venue Owner consiga bloquear horários para manutenção, evitando conflitos com reservas (double booking).

Precisamos garantir:

  • Escopo correto: manutenção só pode ser declarada em quadras da própria arena.
  • Mesmo mecanismo de conflito de Booking (overlap) deve impedir colisões.

✅ Decisão

  • Criar uma Action dedicada DeclareMaintenanceAction que valida:
    • quadra ativa
    • quadra pertence à arena (venue_id)
    • intervalo válido (ends_at > starts_at)
    • e delega o lock de conflito para o CreateBookingAction.
  • Criar UI Livewire no mundo Venue Owner em GET /venues/{venue}/maintenance.
  • Controlar acesso via Policy VenuePolicy::declareMaintenance.

🛠️ Passos (comandos via Sail)

  • sail artisan test --filter DeclareMaintenanceActionTest
  • sail artisan route:list | grep maintenance

🧪 Validação

  • Venue owner acessa a tela de manutenção.
  • Venue owner consegue registrar manutenção em quadra ativa da própria arena.
  • Tentar declarar manutenção em quadra de outra arena falha.
  • Overlap na mesma quadra gera BookingConflictException.
  • A tela exibe a agenda do dia por quadra (visão da arena).

🔐 Rotas e acesso

  • GET /venues/{venue}/maintenance (venues.maintenance)
    • Middlewares: auth + role:venue_owner|super_admin
    • Policy: VenuePolicy::declareMaintenance

📦 Impacto

  • Novo: app/Livewire/Venue/DeclareMaintenance.php.
  • Novo: view resources/views/livewire/venue/declare-maintenance.blade.php.
  • Novo: DeclareMaintenanceAction + DeclareMaintenanceData.
  • Atualizado: rotas web.
  • Atualizado: link de navegação na tela de quadras.
  • Novo: teste DeclareMaintenanceActionTest.