2026-04-09 — Academy: rotas coach, UI Flux, permissões e testes
Documentação KOLOS

2026-04-09 — Academy: rotas coach, UI Flux, permissões e testes

O quê

  • Permissões academy.class.view e academy.class.manage_students em PermissionName; role coach recebe-as no SeedDefaultPermissionsAction.
  • Rotas GET /academy/classes e GET /academy/classes/{demoClass} com middleware role:coach, permission:academy.class.view, active_actor:coach.
  • Livewire App\Livewire\Academy\MyClasses e ClassRoster; dados demo em Kolos\Modules\Academy\Support\DemoTrainingClassCatalog.
  • app-shell: navegação por contexto ($showPlayerShell, $coachContextActive, $showVenueShell); secção «Academia» no topo quando o perfil ativo é treinador; menu visível com papel coach + perfil Treinador (rotas mantêm middleware de permissão).
  • Dashboard: callout + atalhos Academy quando o perfil ativo é treinador.
  • Testes Pest: tests/Feature/Academy/AcademyCoachRoutesTest.php; seed test estendido para coach.
  • Permissão academy.class.create_as_coach + rotas GET /academy/linked-venues (academy.linked-venues) e GET /academy/venues/{venue}/classes/new (academy.venues.classes.create); VenuePolicy::createClassAsCoach; CreateAcademyClassAction para treinador só como si próprio; item shell «Criar turma».

Por quê

Executar a fase B do plano kolos_modulo-treinador-alunos-mvp-divulgacao.md: demo divulgável com RBAC + multi-atores corretos.

Notas técnicas

  • Tabela Flux: usar flux:table.columns / flux:table.rows (não flux:columns solto).
  • bootstrap/app.php: alias active_actorEnsureActiveActorMatches (já existente).

Validação

  • vendor/bin/sail artisan test (ou php artisan test)
  • vendor/bin/sail composer pint --test
  • Manual: utilizador com role coach, contexto «Treinador», abrir /academy/classes e uma turma demo.