Migração do legado
Como os dados do sistema antigo são importados, a curadoria versionada, as regras fixas e a conciliação centavo a centavo.
O importador lê o dump do MySQL legado (conexão legado, variáveis
LEGADO_DB_*) e as decisões de curadoria versionadas em
database/migracao/curadoria/.
Curadoria
CSVs com ; (abrem no Excel), sem dado pessoal, versionados no git:
| Arquivo | Uma linha por | Decide |
|---|---|---|
edicoes.csv | Faixa de vendas de um pacote legado | A qual edição (evento + ano) as vendas pertencem. Pacote reaproveitado de um ano para o outro vira várias linhas com vendas_desde/vendas_ate. situacao: importar, cancelada ou ignorar. |
hoteis.csv | Hotel legado | Nome canônico, cidade e UF |
opcionais.csv | Ingresso/opcional legado | Nome canônico e tipo |
revisado = sim marca o que já foi aceito. Numa rodada nova, só o que é novo
no legado entra como nao.
Rodada de importação
php artisan migrar:curadoria # acrescenta o que for novo (nunca altera o revisado)
# revisar as linhas novas nos CSVs e commitar
php artisan migrar:legado --dry-run # tudo numa transação, desfeita no fim
php artisan migrar:legado # tudo ou nada (~1 min)
php artisan migrar:conciliar # recebido, a receber e encerrado batem centavo a centavoReimportar é idempotente (legacy_map). Para refletir mudanças do legado em
registros já importados, importe de novo num banco limpo.
Regras fixas (com teste)
- Venda apagada no legado = cancelada, exceto o arquivamento em massa de 29/10/2020 (temporada 2019/2020), que entra como venda normal.
- Venda sem data de criação é descartada.
- Status 3 e 4 do legado = paga; a data de pagamento é aproximada (o legado não gravava a data de recebimento).
- Fatura em aberto de evento anterior à data de corte vira
encerrada_legado(histórico). De evento futuro entra em aberto, mas comcobranca_automatica = false(fora da régua). - Acompanhantes
amigo1..4(só nome) vão para a observação da reserva. - Cliente sem documento válido ganha o marcador
SEM-P…no documento (aparece como "Documento não informado" para o cliente). - Horários do dump (UTC) são convertidos para Brasília; datas puras ficam como estão.
- Venda marcada como assinada ganha contrato reconstruído, com aviso de que não
há evidência do aceite e sem registro de assinatura, marcado com
contratos_emitidos.assinado_no_legado = true: conta como assinado, não ganha link nem reemissão e aparece como "Assinado no sistema anterior". - Edição futura entra como rascunho (o legado não tinha preço no catálogo).
Resultado do dump de 13/10/2026
5.342 pessoas → 5.030 clientes; 5.293 reservas; recebido R$ 7.704.867,04; a receber R$ 190.276,43; encerrado R$ 2.644.133,00. A conciliação fecha.