EnrollPlayerInAcademyClassAction (turma + player_user_id): valida player, duplicados e manageStudents; delega em AddAcademyClassMemberAction.EnrollPlayerByEmailInAcademyClassAction passa a resolver email e delegar na action por ID (menos duplicação de regras).ClassRoster: player_search com wire:model.live.debounce.300ms, sugestões via #[Computed] playerSuggestions() (nome/email, LIKE com escape de %/_, exclui já inscritos, limite 8), seleção e «Confirmar inscrição».#[Computed] selectedPlayerPreview() para pré-visualização.EnrollPlayerInAcademyClassActionTest; Livewire atualizado para fluxo pesquisa + selecionar + inscrever.Melhor UX que email livre, alinhado a padrões Livewire 4 (computed + debounce) e a políticas existentes.
vendor/bin/sail artisan test