# Provisionamento inicial das máquinas de Expedição

Este procedimento cria as máquinas correspondentes às contas legadas que usam
exclusivamente o acesso `Expedição -> Expedidor`. Ele não faz parte das
migrations do banco porque exige revisão dos candidatos e dos conflitos antes
de gravar dados.

Execute o procedimento uma vez em cada ambiente que já possuía contas
Embaladora antes da ENG-1973. Faça isso depois das migrations da release e antes
de cadastrar novos usuários exclusivamente Expedidor.

## Simulação obrigatória

Execute primeiro o modo de simulação:

```bash
php artisan machines:provision-from-expeditors --dry-run
```

Registre as contagens de `Candidatos`, `Novas máquinas` e `Conflitos` no
controle da implantação.

O comando considera somente usuários não excluídos cujo mapa completo de acesso
é `Expedição -> [5]`. Contas com outro setor ou outro nível não entram no lote.
A simulação não altera usuários nem máquinas.

## Tratamento de conflitos

Se `Conflitos` for maior que zero, não execute o modo de aplicação. Um conflito
significa que já existe uma máquina com o login de um candidato. Confira o
cadastro na tela de Máquinas e confirme com a operação qual registro deve ser
mantido.

O comando nunca sobrescreve uma máquina existente. Enquanto houver qualquer
conflito, ele também não cria os demais itens do lote. Essa interrupção evita
um provisionamento parcial.

Depois de resolver os conflitos, repita o `--dry-run` e confirme que a contagem
chegou a zero.

## Aplicação

Com a simulação revisada e sem conflitos, execute:

```bash
php artisan machines:provision-from-expeditors --apply
```

A saída `Máquinas criadas` deve ser igual a `Novas máquinas` registrada na
última simulação. O comando cria cada máquina com:

- nome igual ao nome da conta de origem;
- login igual ao e-mail normalizado da conta;
- setor Expedição;
- status ativo;
- descrição com o identificador da conta de origem.

A senha inicial segue a regra definida na ENG-2029, mas nunca aparece na saída
do comando.

## Verificação

Depois da aplicação:

1. abra a tela de Máquinas e confira a quantidade criada;
2. valide uma amostra de nome, login, setor e status contra a simulação;
3. autentique uma máquina provisionada em uma sessão de teste;
4. confirme que a conta de usuário de origem continua inalterada;
5. registre quem executou o comando, o ambiente e as contagens finais.

Não execute o modo `--apply` novamente como verificação. Uma máquina já criada
ocupa o login da conta de origem e será informada como conflito. Use a tela de
Máquinas e o registro da implantação para a conferência posterior.

A exclusão ou conversão das contas de origem é uma decisão operacional separada.
O provisionamento não remove usuários nem altera seus acessos.
