Skip to content

feat(squads): fundar módulo + Squad com ciclo de vida (CreateSquad) #354

Description

@danielhe4rt

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

  • Migration via artisan com --module=squads, datas Tz, UNIQUE (tenant_id, slug), PHPDoc sincronizado
  • SquadStatus cast no model
  • CreateSquad só por super-admin; squad nasce draft
  • Transições draft → active → inactive → archived
  • Testes (criação, autorização, transições)

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.

Metadata

Metadata

Assignees

Labels

difficulty:easy1-2 daysmod:squadsSquad lifecycle, membership and governanceready-for-agentFully specified, ready for an AFK agenttype:featNew feature

Fields

No fields configured for Feature.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions