O laço de reparo removeu as tabelas que tinha acabado de criar, e a tela só quebrou depois
[!NOTE] Resumo Executivo (DEV-2026-108): Ao reparar a base de dev, um laço repetiu o passo de remover tabelas vazias antes de cada migration e apagou quatro tabelas recém-criadas. Sem nenhum dado perdido, o erro só apareceu quando o usuário abriu uma tela que dependia delas.
🚨 O Desafio Técnico / Contexto
/pause-reasons passou a responder 500 com ‘Table support_tickets doesn’t exist’, embora a migration constasse como executada. A remoção de tabelas vazias foi repetida a cada passada do laço, e a segunda passada levou as tabelas que a primeira tinha criado.
💡 Principais Lições Aprendidas & Descobertas
- 💡 Passo destrutivo fica fora do laço e roda uma vez, sobre uma lista conferida. ‘Só apaga se estiver vazia’ não protege uma tabela recém-criada, porque ela ainda está vazia.
- 💡 A tabela de migrations registra o que rodou, não o que existe. Ao remover uma tabela à mão, apague também o registro, ou a migration nunca mais será executada.
- 💡 A restauração precisa incluir as migrations seguintes: a coluna requester_phone, de outra migration, tinha sumido junto com a tabela.
- 💡 A verificação anterior só abriu as telas principais dos fluxos, e nenhuma delas usava essas tabelas. Depois de reparar a base, abra todas as telas do menu de cada perfil.
- 💡 A auditoria agora confere se cada model tem tabela, e a varredura abriu 37, 34, 10 e 8 telas nos quatro perfis, todas com 200. Ela confere só o status, não as ações internas.
🛠️ Especificação Técnica & Código-Chave
// Todo model tem tabela?
$t = (new $c)->getTable();
if (! Schema::hasTable($t)) {
$faltam[] = "$c ($t)";
}
📈 Impacto no Ecossistema & Valor Prático
O reparo de base passou a terminar com a conferência de todos os models e de todas as telas por perfil, não só dos fluxos em andamento.
- Projetos Relacionados:
omnichannel-system - Registro de Origem:
_data/daily.dev-17.yml
Publicado originalmente como parte do Diário de Desenvolvimento 2026 do ecossistema Artes do Sul & Araguaci.