academy_class_sessions (único por academy_class_id + session_date) e academy_class_session_attendances.SessionAttendanceStatus (present, absent, excused) com labels PT.AcademyClassSession, AcademyClassSessionAttendance; AcademyClass::sessions().CreateAcademyClassSessionAction + CreateAcademySessionData — idempotente por dia; cria linhas iniciais «presente» para cada membro atual.SaveSessionAttendanceAction — updateOrCreate por aluno; valida estado e filiação à turma.ClassSessions em /academy/classes/{academyClass}/sessions (Flux + selects nativos).Alinhar à matriz ACL (treinador lança presença) com modelo simples e testável antes de integrar Meu Card / credenciação técnica.
vendor/bin/sail artisan migratevendor/bin/sail artisan testmanageStudents na turma (apenas leitura na UI).