🎯 Descrição
Criar e alimentar uma tabela de controle (municipalities_status) no banco de dados. Esta tabela servirá como uma “fila de processamento”, contendo a lista de todos os 5.570 municípios do Brasil e o status de sua coleta de dados (se já foi processado ou não).
✅ Objetivo
O problema que esta feature resolve é a falta de resiliência e estado do nosso script de coleta de dados em larga escala (collector.js). Atualmente, se o processo de coleta (que leva dias) for interrompido por qualquer motivo (queda de internet, desligamento do computador), ele precisa recomeçar do zero, desperdiçando tempo e recursos.
Esta funcionalidade é crucial porque transforma nosso coletor em um processo robusto, resiliente e reiniciável. Com a tabela de status, o script saberá exatamente onde parou e poderá continuar do próximo município pendente, garantindo a integridade da nossa carga de dados inicial sem retrabalho.
📝 Detalhes da Implementação
A implementação será focada em um novo script de setup e na criação da tabela de suporte no banco de dados.
Criação da Tabela no Banco de Dados:
- No Supabase (ou no cliente de banco de dados), criar uma nova tabela chamada
municipalities_statuscom as seguintes colunas:ibge_code(VARCHAR(7), PRIMARY KEY)name(VARCHAR(255), NOT NULL)state_uf(VARCHAR(2), NOT NULL)last_processed_at(TIMESTAMP WITH TIME ZONE, NULL)
- No Supabase (ou no cliente de banco de dados), criar uma nova tabela chamada
Criação do Script de Setup:
- Criar um novo script
backend/scripts/setup_municipalities.js. - Este script irá:
- Ler o arquivo
src/data/municipios.jsonque contém a lista de todos os municípios. - Fazer um loop por cada município no arquivo JSON.
- Para cada município, inserir uma nova linha na tabela
municipalities_status, com olast_processed_atdefinido comoNULL.
- Ler o arquivo
- Criar um novo script
📊 Critérios de Aceitação
Para considerar esta funcionalidade concluída, os seguintes pontos devem ser atendidos:
- A tabela
municipalities_statusexiste no banco de dados com a estrutura correta. - O script
setup_municipalities.jsé criado e está funcional. - Ao executar o script de setup, a tabela
municipalities_statusé populada com sucesso com todos os 5.570 municípios. - Todas as novas linhas na tabela
municipalities_statussão inseridas com a colunalast_processed_atcomoNULL. - O script pode ser executado novamente sem gerar erros de duplicidade (graças à cláusula
ON CONFLICT). - O comando
npm run db:setupestá configurado nopackage.jsone executa o script corretamente.