Skip to content

feat(squads): AssignCaptain + invariante de capitão único #356

Description

@danielhe4rt

Parent

#342

O que construir

Atribuição de capitão com a invariante de capitão único garantida no banco.

  • Partial unique UNIQUE (squad_id) WHERE role = 'captain'.
  • Action AssignCaptain (super-admin): define/troca o capitão; ao trocar, rebaixa o anterior; grava evento captain_assigned (e demoted no anterior).
  • Squad::captain() derivado do pivot (role = captain).

Critérios de aceite

  • Partial unique impede dois capitães ativos
  • AssignCaptain define o capitão e grava captain_assigned
  • Trocar o capitão rebaixa o anterior (com evento)
  • Squad::captain() deriva do pivot
  • Teste (inclui violação da unicidade)

BDD

# language: pt
Funcionalidade: Atribuição de capitão
  Cenário: Definir o capitão
    Dado um squad sem capitão
    Quando o super-admin atribui um membro como capitão
    Então o membro fica com role captain
    E um evento captain_assigned é gravado

  Cenário: Apenas um capitão ativo
    Dado um squad que já tem capitão
    Quando outro membro é atribuído como capitão
    Então o capitão anterior é rebaixado
    E continua existindo no máximo um capitão ativo

Bloqueada por

Metadata

Metadata

Assignees

Labels

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

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions