2026-04-09 — Arquivar turmas Academy
Documentação KOLOS

2026-04-09 — Arquivar turmas Academy

O quê

  • Migration academy_classes.archived_at (nullable, index).
  • SetAcademyClassArchivedAction + AcademyClassPolicy::archive (mesmo critério que update: dono da arena com academy.class.create).
  • AcademyClassArchiveRules::rejectIfArchived usado em: AddAcademyClassMemberAction, CreateAcademyClassSessionAction (só ao criar sessão nova), SaveSessionAttendanceAction, UpdateMemberOfficialPlayCardStatsAction.
  • Livewire: TrainingClasses::setClassArchived; lista ordenada (ativas primeiro). Coach: MyClasses com secções «ativas» e «arquivadas».
  • UI: badges/callouts em roster e sessões quando arquivada; presenças em só leitura para treinador se arquivada; jogador vê badge «Encerrada» em «As minhas aulas».
  • Factory AcademyClass::archived().

Por quê

Encerrar turmas sem apagar histórico (CSV, Meu Card, sessões antigas) e impedir mutações operacionais indevidas.

Validação

  • vendor/bin/sail artisan migrate
  • vendor/bin/sail artisan test tests/Feature/Academy/SetAcademyClassArchivedActionTest.php tests/Feature/Academy/CreateAcademyClassSessionActionTest.php tests/Feature/Venue/TrainingClassesLivewireTest.php

Impacto

  • RemoveAcademyClassMemberAction continua a permitir remoções em turma arquivada (limpeza de roster).