Parent
#342
O que construir
Fundar o módulo squads e o agregado Squad com seu ciclo de vida.
- Mover o
SquadsServiceProvider de src/Providers/ para src/.
- Migration
squads (via --module=squads, datas Tz): tenant_id, name, slug, objective (nullable), status (default draft); UNIQUE (tenant_id, slug), INDEX (tenant_id, status). Sem captain_id (derivado do pivot) e sem SoftDeletes (archived é o encerramento lógico).
- Model
Squad com @property PHPDoc, #[Table], #[UseFactory]; enum SquadStatus (draft/active/inactive/archived).
- Actions
CreateSquad, ActivateSquad/ArchiveSquad (transições de status). Autorização: super-admin (User::isAdmin()).
Critérios de aceite
BDD
# language: pt
Funcionalidade: Criação e ciclo de vida do squad
Cenário: Super-admin cria um squad
Dado um usuário super-admin
Quando ele cria um squad com nome e objetivo
Então o squad é criado com status draft
E o slug é único no tenant
Cenário: Usuário comum não cria squad
Dado um usuário sem privilégio de super-admin
Quando ele tenta criar um squad
Então a ação é negada
Cenário: Ativar e arquivar
Dado um squad em draft
Quando o super-admin ativa o squad
Então o status vira active
E ao arquivar, o status vira archived
Bloqueada por
Nenhuma — pode começar imediatamente.
Parent
#342
O que construir
Fundar o módulo
squadse o agregadoSquadcom seu ciclo de vida.SquadsServiceProviderdesrc/Providers/parasrc/.squads(via--module=squads, datasTz):tenant_id,name,slug,objective(nullable),status(defaultdraft);UNIQUE (tenant_id, slug),INDEX (tenant_id, status). Semcaptain_id(derivado do pivot) e sem SoftDeletes (archivedé o encerramento lógico).Squadcom@propertyPHPDoc,#[Table],#[UseFactory]; enumSquadStatus(draft/active/inactive/archived).CreateSquad,ActivateSquad/ArchiveSquad(transições de status). Autorização: super-admin (User::isAdmin()).Critérios de aceite
--module=squads, datasTz,UNIQUE (tenant_id, slug), PHPDoc sincronizadoSquadStatuscast no modelCreateSquadsó por super-admin; squad nascedraftdraft → active → inactive → archivedBDD
Bloqueada por
Nenhuma — pode começar imediatamente.