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:

ArquivoUma linha porDecide
edicoes.csvFaixa de vendas de um pacote legadoA 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.csvHotel legadoNome canônico, cidade e UF
opcionais.csvIngresso/opcional legadoNome 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 centavo

Reimportar é 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 com cobranca_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.

Nesta página